Skip to content

manucaicedo/plank-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

31 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ’ͺ Plank Challenge

A web app for tracking month-long plank challenges with friends. Build core strength, track progress, and compete on the leaderboard!


Project Overview

Status: In Development (Phase 1) Started: January 2026

Description

Plank Challenge is a social fitness web app where admins create month-long plank challenges and invite participants. Participants record one daily plank, track their progress on a personal dashboard, compete on a leaderboard, and engage with the community through comments and fistbumps (kudos).

Core Features

  • πŸ‹οΈ Daily Plank Timer - Record your daily plank with an accurate timer
  • πŸ“Š Personal Dashboard - Track your stats, streaks, and progress
  • πŸ† Leaderboard - See rankings and compete with friends
  • πŸ’¬ Social Features - Give fistbumps and comment on progress
  • πŸ‘€ Admin Portal - Create challenges and invite participants

Tech Stack

Frontend

  • Framework: Next.js 14 (React with App Router)
  • Language: TypeScript
  • Styling: Tailwind CSS
  • Hosting: Vercel

Backend

  • Database: Firebase Firestore
  • Authentication: Firebase Auth
  • Functions: Firebase Cloud Functions
  • Hosting: Firebase Hosting

Tools & Services

  • Version Control: Git
  • Package Manager: npm
  • Linting: ESLint

Getting Started

Prerequisites

  • Node.js >= 18.0.0
  • npm >= 9.0.0
  • Firebase account (free tier is sufficient)

Installation

  1. Clone the repository

    git clone [repo-url]
    cd Plank-Challenge
  2. Install dependencies

    npm install
  3. Set up Firebase

    Follow the Firebase Setup Guide to:

    • Create a Firebase project
    • Enable Authentication (Email/Password)
    • Set up Firestore Database
    • Get your Firebase configuration
  4. Configure environment variables

    Copy .env.local.example to .env.local:

    cp .env.local.example .env.local

    Edit .env.local and add your Firebase configuration:

    NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key_here
    NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
    NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
    NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
    NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
    NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id
  5. Start development server

    npm run dev

    Open http://localhost:3000 in your browser.


Development

Available Scripts

  • npm run dev - Start development server (localhost:3000)
  • npm run build - Build for production
  • npm start - Start production server
  • npm run lint - Run ESLint

Project Structure

Plank-Challenge/
β”œβ”€β”€ app/                     Next.js 14 App Router
β”‚   β”œβ”€β”€ layout.tsx          Root layout
β”‚   β”œβ”€β”€ page.tsx            Home page
β”‚   └── globals.css         Global styles
β”œβ”€β”€ lib/                     Shared libraries
β”‚   └── firebase.ts         Firebase configuration
β”œβ”€β”€ components/             React components (to be added)
β”œβ”€β”€ public/                 Static files
β”œβ”€β”€ docs/                   Documentation
β”‚   β”œβ”€β”€ features.md         Feature specifications
β”‚   β”œβ”€β”€ project-plan.md     Project plan
β”‚   β”œβ”€β”€ firebase-setup.md   Firebase setup guide
β”‚   └── TODO.md             Development checklist
β”œβ”€β”€ tests/                  Test files (to be added)
└── design/                 Design files (to be added)

Code Style

  • TypeScript strict mode enabled
  • ESLint with Next.js config
  • Tailwind CSS for styling
  • Follow React/Next.js best practices

Development Phases

βœ… Phase 0: Planning (Complete)

  • Requirements gathering
  • Feature specifications
  • Database schema design
  • Tech stack selection

🚧 Phase 1: Project Setup (In Progress)

  • Next.js initialization
  • Tailwind CSS setup
  • Firebase configuration
  • Basic home page
  • Authentication pages
  • Protected routes

πŸ“‹ Upcoming Phases

  • Phase 2: Authentication (Week 2)
  • Phase 3: Admin - Challenge Management (Week 3)
  • Phase 4: Plank Timer & Recording (Week 4)
  • Phase 5: Personal Dashboard (Week 5)
  • Phase 6: Leaderboard (Week 6)
  • Phase 7: Social Features (Week 7)
  • Phase 8: Notifications (Week 8)
  • Phase 9-12: Polish, Testing, Deployment

See TODO.md for detailed task breakdown.


Features

MVP Features (v1.0)

  • Project setup
  • Email/password authentication
  • Admin challenge creation
  • Email invitations
  • Plank timer with audio countdown
  • One plank per day recording
  • Personal dashboard with calendar
  • Leaderboard with rankings
  • Fistbumps (kudos system)
  • Comments and activity feed
  • In-app notifications

Future Features (v1.1+)

  • OAuth login (Google, Facebook)
  • Profile pictures
  • Multiple concurrent challenges
  • Team competitions
  • Mobile app (React Native)

See features.md for complete feature specifications.


Database Schema

Key collections in Firestore:

  • users - User profiles and roles
  • challenges - Challenge details
  • participants - Challenge memberships
  • planks - Daily plank records
  • fistbumps - Kudos between users
  • comments - Community engagement
  • notifications - In-app notifications

Documentation


Deployment

Development

Currently running locally with npm run dev

Production (Coming Soon)

  • Frontend: Vercel
  • Backend: Firebase
  • Domain: TBD

Contributing

This is currently a personal project. Contribution guidelines will be added later.


License

MIT


Contact

[Your contact information]


Made with Next.js, Firebase, and Tailwind CSS

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors