A full-stack gym discovery platform — find gyms near you, read reviews, compare packages, and manage everything from a powerful admin panel.
- 🗺️ Interactive Map — browse gyms on OpenStreetMap, pinpoint locations instantly
- 🔍 Search & Filter — filter by city, name, amenities, rating, or price range
- ⭐ Ratings & Reviews — read and write reviews for any gym
- 💳 Pricing Packages — compare monthly membership plans side by side
- 🌐 Multi-language — Persian (RTL), English, and Italian support
- 📊 Owner Dashboard — stats overview at a glance
- 📦 Package Management — add, edit, and remove pricing tiers
- 💬 Review Inbox — read what members are saying
- 🕐 Working Hours & Contact — keep your info up to date
- 🛡️ Admin Panel — full control over the platform
- ✅ Gym Verification — approve or reject gym listings
- 👥 User Management — manage members and gym owners
- ➕ Add Gyms — create listings with full multilingual data
- 🌍 Default Language — change the site's default language globally
| Layer | Technology |
|---|---|
| Framework | Next.js 14 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS (dark theme, orange accents) |
| Database | MongoDB + Mongoose |
| Auth | NextAuth.js |
| Map | Leaflet.js + OpenStreetMap |
| UI Pattern | Server Components + Client Islands |
- Node.js >= 18
- MongoDB instance (local or Atlas)
git clone https://github.com/hesamhadadi/gym.git
cd gym
npm installcp .env.example .envEdit .env:
MONGODB_URI=mongodb://localhost:27017/gymfinder
NEXTAUTH_SECRET=your_secret_here
NEXTAUTH_URL=http://localhost:3000# Development
npm run dev
# Seed the database
npm run seed
# Production build
npm run build
npm startshower pool aerobics sauna parking locker personalTrainer yoga spinning boxing supplements wifi cafe womenOnly open24h
gym/
├── src/
│ ├── app/ # Next.js App Router pages & API routes
│ ├── components/ # Reusable UI components
│ ├── models/ # Mongoose schemas
│ ├── lib/ # DB connection, auth config, helpers
│ └── types/ # TypeScript type definitions
├── scripts/ # Seed scripts
├── public/ # Static assets
├── .env.example
├── tailwind.config.ts
└── next.config.js
Coming soon
Pull requests are welcome. For major changes, please open an issue first.
MIT © Hesam Hadadi