๐งโ๐ซ CoachDesk โ Smart Coach Management System
A full-stack Coach Management Admin Panel built with React (Vite) on the frontend and Node.js + Express + Firebase Realtime Database on the backend. The system allows administrators to manage coaches โ including adding, updating, filtering, sorting, and deleting โ with a responsive and elegant interface.
๐น Frontend: React + TypeScript + Tailwind CSS
๐น Backend: Node.js + Express + Firebase Admin SDK
๐น Database: Firebase Realtime Database
๐น Features: Filtering, Sorting, Pagination, Search by ID
๐น UI: Dynamic, responsive, and loading animation while fetching data
๐น Deployment: Frontend (Vercel / Netlify), Backend (Render / Railway)
โก API Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/coaches |
Fetch all coaches (with filters/pagination) |
| GET | /api/coaches/:id |
Fetch a coach by ID |
| POST | /api/coaches |
Add a new coach |
| PUT | /api/coaches/:id |
Update existing coach |
| DELETE | /api/coaches/:id |
Delete coach |
๐งฉTech Stack:
๐นFrontend
โ๏ธ React + TypeScript (Vite)
๐
TailwindCSS for styling
๐ React Query (or Zustand) for data fetching/state
๐จ Shadcn/UI for clean UI components (optional but recommended)
๐ Toast notifications via react-hot-toast
๐นBackend
๐ข Node.js + Express
๐ฅ Firebase Admin SDK (Realtime Database)
๐ dotenv
๐ง Core Functionalities
| Feature | Description |
|---|---|
| โ Add Coach | Add new coach with name, email, category, rating, status |
| โ๏ธ Edit Coach | Update existing coach information |
| โ Delete Coach | Remove a coach by ID |
| ๐ Search | Search by numeric ID |
| ๐ Filter | Filter by status, category, or rating |
| ๐ Pagination | Client-side pagination and sorting |
| โก Realtime | Data stored and retrieved from Firebase Realtime Database |
๐ API Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/coaches |
Fetch all coaches with filters/pagination |
GET |
/api/coaches/:id |
Get a coach by numeric ID |
POST |
/api/coaches |
Add a new coach |
PUT |
/api/coaches/:id |
Update an existing coach |
DELETE |
/api/coaches/:id |
Delete a coach |
๐งฎ Filters on Api
| Example URL | Description |
|---|---|
GET /coaches?status=active |
Get all active coaches |
GET /coaches?category=fitness |
Get all fitness coaches |
GET /coaches?rating=4 |
Get coaches with rating โฅ 4 |
GET /coaches?status=inactive&category=yoga |
Combine multiple filters |
GET /coaches?category=fit&rating=3 |
Partial category match and min rating |
๐ Pagination
| Example URL | Description |
|---|---|
/coaches?page=1&limit=3 |
First 3 coaches |
/coaches?page=2&limit=3 |
Next 3 coaches |
/coaches?status=active&limit=2 |
Only active coaches, paginated |
/coaches?category=yoga&page=2&limit=2 |
Filter and paginate together |
/coaches?rating=4&page=1&limit=5 |
Coaches with rating โฅ 4 (first page) |
๐งโ๐ป Author
Praveen Kumar S ๐ง praveen0031kumar@gmail.com ๐ Portfolio
๐ชช License
This project is licensed under the MIT License. Feel free to use, modify, and distribute with attribution.