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