REPFIT is a comprehensive gym management and booking platform that serves both fitness enthusiasts and gym owners. As an active SaaS project at repfitapp.com, we're open-sourcing our core platform to help the fitness community build better experiences.
- Discover Environments - Instantly locate premium gyms, studios, and recovery centers
- Instant Booking - Reserve your spot in real-time. Walk in, scan, and start training
- One Subscription - Drop multiple memberships. One token system for every facility
- Business Engine - Monetize empty slots, attract new athletes, streamline operations
- Zero Commission - Keep 100% of your revenue
- Smart Management - Automated scheduling, payments, and member management
- 🏋️ Gym Discovery - Browse and filter facilities by equipment, amenities, and vibe
- 📅 Real-time Booking - Instant reservation system with availability tracking
- 💳 Payment Processing - Integrated Stripe payments for seamless transactions
- 📊 Analytics Dashboard - Comprehensive insights for gym owners and athletes
- 🔐 Secure Authentication - Robust user management with Supabase
- 📱 Responsive Design - Beautiful mobile-first experience
- 🎨 Modern UI - Built with Tailwind CSS and Radix UI components
- ⚡ Performance - Optimized with Next.js 15 and React 19
- Framework: Next.js 15.0.5 with App Router
- Language: TypeScript 5.9.3
- Styling: Tailwind CSS 3.4.17
- Components: Radix UI, shadcn/ui
- Animations: Framer Motion
- Forms: React Hook Form with Zod validation
- Charts: Recharts
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Payments: Stripe
- Email: Resend
- File Storage: Supabase Storage
- Package Manager: npm
- Linting: ESLint
- Testing: Playwright
- Deployment: Vercel
- Node.js 18+
- npm or yarn
- Supabase account
- Stripe account (for payments)
-
Clone the repository
git clone https://github.com/repfit/repfit.git cd repfit -
Install dependencies
npm install
-
Environment setup
cp .env.example .env.local
Configure your environment variables:
# Supabase NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_service_role_key # Stripe STRIPE_SECRET_KEY=your_stripe_secret_key NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=your_stripe_publishable_key STRIPE_WEBHOOK_SECRET=your_webhook_secret # Resend RESEND_API_KEY=your_resend_api_key RESEND_FROM_EMAIL=noreply@yourdomain.com
-
Database setup
# Run the master setup script npm run db:setup # Or manually apply migrations npm run db:migrate
-
Start development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
repfit/
├── app/ # Next.js App Router
│ ├── [slug]/ # Dynamic gym pages
│ ├── actions/ # Server actions
│ ├── admin/ # Admin dashboard
│ ├── api/ # API routes
│ ├── auth/ # Authentication pages
│ ├── dashboard/ # User dashboard
│ ├── explore/ # Gym discovery
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout
│ └── page.tsx # Homepage
├── components/ # Reusable UI components
├── lib/ # Utility functions and configurations
├── public/ # Static assets
├── scripts/ # Database and setup scripts
└── styles/ # Additional styles
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run test # Run Playwright testsnpm run db:setup # Initialize database with all tables
npm run db:reset # Reset database to initial state
npm run db:seed # Seed database with sample dataCreate a .env.local file with the following variables:
| Variable | Description | Required |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Your Supabase project URL | ✅ |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anonymous key | ✅ |
SUPABASE_SERVICE_ROLE_KEY |
Supabase service role key | ✅ |
STRIPE_SECRET_KEY |
Stripe secret key | ✅ |
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY |
Stripe publishable key | ✅ |
STRIPE_WEBHOOK_SECRET |
Stripe webhook secret | ✅ |
RESEND_API_KEY |
Resend API key for emails | ✅ |
RESEND_FROM_EMAIL |
From email for notifications | ✅ |
- Connect your repository to Vercel
- Configure environment variables in Vercel dashboard
- Deploy automatically on push to main branch
npm run build
npm startWe welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - The React framework for production
- Supabase - Open source Firebase alternative
- Stripe - Payment processing platform
- Radix UI - Unstyled, accessible components
- Tailwind CSS - Utility-first CSS framework
- Vercel - Platform for frontend frameworks
- Live Site: repfitapp.com
- Documentation: docs.repfitapp.com (coming soon)
- Issues: GitHub Issues
- Email: support@repfitapp.com
- Mobile apps (iOS/Android)
- Advanced analytics and insights
- Integration with fitness trackers
- Corporate wellness programs
- International expansion
- AI-powered workout recommendations
⭐ Star this repo if it helped you!
by the REPFIT Team
