A web app for tracking month-long plank challenges with friends. Build core strength, track progress, and compete on the leaderboard!
Status: In Development (Phase 1) Started: January 2026
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).
- ποΈ 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
- Framework: Next.js 14 (React with App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Hosting: Vercel
- Database: Firebase Firestore
- Authentication: Firebase Auth
- Functions: Firebase Cloud Functions
- Hosting: Firebase Hosting
- Version Control: Git
- Package Manager: npm
- Linting: ESLint
- Node.js >= 18.0.0
- npm >= 9.0.0
- Firebase account (free tier is sufficient)
-
Clone the repository
git clone [repo-url] cd Plank-Challenge -
Install dependencies
npm install
-
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
-
Configure environment variables
Copy
.env.local.exampleto.env.local:cp .env.local.example .env.local
Edit
.env.localand 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
-
Start development server
npm run dev
Open http://localhost:3000 in your browser.
npm run dev- Start development server (localhost:3000)npm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLint
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)
- TypeScript strict mode enabled
- ESLint with Next.js config
- Tailwind CSS for styling
- Follow React/Next.js best practices
- Requirements gathering
- Feature specifications
- Database schema design
- Tech stack selection
- Next.js initialization
- Tailwind CSS setup
- Firebase configuration
- Basic home page
- Authentication pages
- Protected routes
- 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.
- 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
- OAuth login (Google, Facebook)
- Profile pictures
- Multiple concurrent challenges
- Team competitions
- Mobile app (React Native)
See features.md for complete feature specifications.
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
Currently running locally with npm run dev
- Frontend: Vercel
- Backend: Firebase
- Domain: TBD
This is currently a personal project. Contribution guidelines will be added later.
MIT
[Your contact information]
Made with Next.js, Firebase, and Tailwind CSS