WeMatchSports is a Django-based monolithic application designed to connect sports enthusiasts by enabling them to find nearby players, match based on skills, and communicate seamlessly. This platform allows users to:
- Discover and join sport-specific public rooms for updates and discussions.
- Match with players of similar skill levels.
- Securely chat with connected partners to coordinate games.
The application is built for scalability, user privacy, and ease of use, with data security measures like encryption for sensitive information.
WeMatchSports follows a modular, monolithic architecture with distinct Django apps for key functionalities:
- Authentication: Handles user sign-up, login, session management, and CSRF protection.
- General: Manages the user dashboard, profile settings, notifications, and public rooms.
- Matchmaking: Matches users based on skill similarity using algorithms like cosine similarity.
- Messaging: Provides an encrypted chat interface for secure communication.
- Build the Docker image:
docker build .
- Run the container:
docker run -p 8000:8000 <image_id>
- Start Kafka services:
docker compose up
- Start the Django development server:
python manage.py runserver
- Start Kafka services (ensure Kafka is installed and added to the PATH):
bin/zookeeper-server-start.sh config/zookeeper.properties bin/kafka-server-start.sh config/server.properties
- User sign-up, login, and logout functionalities.
- Session management for temporary user data.
- CSRF protection via Django's built-in mechanism.
- Personalized user dashboard and profile management.
- Notification and connection management.
- Sport-specific public rooms for discussions and updates.
- Suggests players with similar skills using cosine similarity algorithms.
- Easy connect requests for matched players.
- Secure, encrypted chat functionality.
- Messages stored in the database with chat history retrieval.
- Backend: Django, Django REST Framework
- Database: SQLite (development), PostgreSQL (production-ready configuration)
- Messaging: Apache Kafka
- Containerization: Docker, Docker Compose
Contributions are welcome. To contribute:
- Fork the repository.
- Create a new branch for your feature or fix.
- Submit a pull request with detailed changes.