A full-stack web application for athletes to manage their training sessions, competitions, health metrics, teams, and connections.
- User Authentication: Secure login and registration
- Dashboard: Overview of user activities and quick access to features
- Training Sessions: Create, view, and manage training sessions
- Competitions: Track upcoming and past competitions
- Health Metrics: Monitor and log health data
- Teams: Manage team memberships and collaborations
- Connections: Network with other athletes and coaches
- Profile Management: Update personal information and preferences
- Node.js with Express.js for server-side logic
- Database for data storage and authentication
- JWT for session management
- React.js for building the user interface
- Authentication SDK for client-side authentication
- CSS for styling
athlete/
├── server.js # Main server file
├── package.json # Server dependencies
├── firebaseAdmin.js # Firebase admin configuration
├── middleware/
│ └── auth.js # Authentication middleware
├── routes/
│ ├── auth.js # Authentication routes
│ ├── users.js # User management routes
│ ├── training.js # Training session routes
│ ├── competitions.js # Competition routes
│ ├── health.js # Health metrics routes
│ └── teams.js # Team management routes
├── public/ # Static files
│ ├── css/
│ │ └── style.css
│ └── js/
│ ├── app.js
│ ├── auth.js
│ └── connections.js
├── views/ # EJS templates
│ ├── index.ejs
│ └── partials/
│ ├── header.ejs
│ ├── footer.ejs
│ └── sidebar.ejs
└── client/ # React frontend
├── package.json # Client dependencies
├── public/
│ ├── index.html
│ ├── manifest.json
│ └── favicon.ico
└── src/
├── App.js
├── AuthContext.js
├── firebase.js
├── components/
│ ├── Dashboard.js
│ ├── Login.js
│ ├── Register.js
│ ├── Profile.js
│ ├── Training.js
│ ├── Competitions.js
│ ├── Health.js
│ ├── Teams.js
│ ├── Connections.js
│ ├── MySessions.js
│ ├── CreateSession.js
│ ├── Header.js
│ ├── Footer.js
│ └── Sidebar.js
└── ...
- Node.js (v14 or higher)
- npm or yarn
- Authentication and database service of your choice
-
Clone the repository:
git clone https://github.com/SarvaniBalivada/athlete.git cd athlete
-
Install server dependencies:
npm install
-
Install client dependencies:
cd client npm install cd ..
-
Set up authentication and database service:
- Configure your preferred authentication and database service
- Update configuration files with your service credentials
-
Configure environment variables:
- Copy
.env
file and update the values as needed for your setup
- Copy
-
Start the server:
npm start
The server will run on http://localhost:3000
-
Start the client (in a separate terminal):
cd client npm start
The React app will run on http://localhost:3001
POST /api/auth/register
- User registrationPOST /api/auth/login
- User loginPOST /api/auth/logout
- User logout
GET /api/users/profile
- Get user profilePUT /api/users/profile
- Update user profile
GET /api/training/sessions
- Get training sessionsPOST /api/training/sessions
- Create training sessionPUT /api/training/sessions/:id
- Update training sessionDELETE /api/training/sessions/:id
- Delete training session
GET /api/competitions
- Get competitionsPOST /api/competitions
- Create competitionPUT /api/competitions/:id
- Update competitionDELETE /api/competitions/:id
- Delete competition
GET /api/health/metrics
- Get health metricsPOST /api/health/metrics
- Add health metricPUT /api/health/metrics/:id
- Update health metricDELETE /api/health/metrics/:id
- Delete health metric
GET /api/teams
- Get teamsPOST /api/teams
- Create teamPUT /api/teams/:id
- Update teamDELETE /api/teams/:id
- Delete teamPOST /api/teams/:id/join
- Join teamPOST /api/teams/:id/leave
- Leave team
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Sarvani Balivada - GitHub
Project Link: https://github.com/SarvaniBalivada/athlete