A full-stack web application that connects runners and helps them organize group running events. Users can create runs, join existing ones, share experiences through posts and comments, and build a community around running activities.
- User registration and authentication
- Profile management with profile pictures
- JWT-based secure authentication
- Create running events with details (title, description, date, location, distance)
- Join/leave runs as a participant
- View upcoming runs and personal run history
- End runs when completed
- Post updates and photos about runs
- Comment on posts
- Run-specific feeds for community interaction
- Django 5.2 - Web framework
- Django REST Framework - API development
- SQLite - Database
- JWT Authentication - Secure token-based auth
- CORS - Cross-origin resource sharing
- React 18 - UI library
- React Router - Client-side routing
- Axios - HTTP client
- Bootstrap 5 - CSS framework
- Python 3.8+
- Node.js 14+
- npm or yarn
-
Navigate to backend directory:
cd backend -
Create virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install django djangorestframework djangorestframework-simplejwt django-cors-headers pillow
-
Run migrations:
python manage.py makemigrations python manage.py migrate
-
Create superuser (optional):
python manage.py createsuperuser
-
Start the Django server:
python manage.py runserver
The backend will be running at http://localhost:8000
-
Navigate to frontend directory:
cd frontend -
Install dependencies:
npm install
-
Start the React development server:
npm start
The frontend will be running at http://localhost:3000
- Register a new account or login with existing credentials
- Create runs by specifying title, description, date, location, and distance
- Browse available runs on the homepage and join ones that interest you
- View your runs in the "My Runs" section
- Post updates about runs with photos and text
- Comment on posts to engage with the community
- End runs when they're completed (creator only)
- View run history to see past completed runs
POST /api/register/- User registrationPOST /api/login/- User loginPOST /api/logout/- User logoutGET /api/profile/- Get user profilePATCH /api/profile/- Update user profile
GET /api/runs/- List all runsPOST /api/runs/- Create new runPOST /api/runs/{id}/join-leave/- Join or leave a runPOST /api/runs/{id}/end/- End a run (creator only)GET /api/my-runs/- Get runs created by userGET /api/run-history/- Get completed runs for user
GET /api/runs/{run_id}/feed/- Get posts for a runPOST /api/runs/{run_id}/feed/- Create post for a runPOST /api/posts/{post_id}/comments/- Add comment to post
IWGD/
├── backend/
│ ├── community_app/
│ │ ├── models.py # Database models (User, Run, Post, Comment)
│ │ ├── views.py # API endpoints
│ │ ├── serializers.py # Data serialization
│ │ ├── urls.py # URL routing
│ │ └── ...
│ ├── community_project/
│ │ ├── settings.py # Django settings
│ │ ├── urls.py # Main URL configuration
│ │ └── ...
│ ├── manage.py # Django management script
│ └── db.sqlite3 # SQLite database
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API service functions
│ │ ├── App.js # Main app component
│ │ └── index.js # App entry point
│ ├── public/ # Static assets
│ └── package.json # Dependencies and scripts
└── README.md
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some 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.
If you have any questions or suggestions, feel free to reach out!
- Real-time notifications for run updates
- GPS tracking during runs
- Run statistics and analytics
- Social media integration
- Mobile app version
- Group messaging for runs
- Run difficulty levels and categories