Capture the Flag (CTF) competitions are exciting events where teams compete by solving security challenges. The Leaderboard project acts as the heart of a CTF, allowing organizers to manage challenges, track team scores in real-time, and provide transparency to participants. This project is designed for both CTF organizers and participants to enhance the competition experience.
- Live Leaderboard Updates: Witness scores change as teams solve challenges, fueling the competitive spirit!
- Secure Authentication: User accounts and session management ensure data integrity and prevent unauthorized access.
- Streamlined Score Submission: Submit scores effortlessly and enjoy a seamless verification process.
- Intuitive Admin Panel: Manage challenges, add teams, and customize the competition experience with ease.
- Built-in Security Measures: Rest assured; robust security features safeguard against cheating and ensure a level playing field.
- Django: A robust Python web framework for rapid development.
- Django-Channels: Enables real-time communication for dynamic leaderboard updates.
- Redis: High-performance data store for caching and real-time interactions.
- Docker: Simplifies deployment and ensures consistent environments.
- Github Actions: Automates testing and deployment for a streamlined workflow.
You can easily run the Leaderboard project using Docker or Docker Compose. The project has been containerized and is available as an image on Docker Hub.
-
Pull the Docker image:
docker pull tachyonbyte/leaderboard:latest
Docker Hub link: tachyonbyte/leaderboard
-
Run the container:
docker run -d -p 80:80 tachyonbyte/leaderboard:latest
-
Implement persistence with volume mount (optional):
To ensure data persistence, you can mount a volume for the SQLite database:
docker run -d -p 80:80 --mount source=sqlite-db,target=/app/ctf/ tachyonbyte/leaderboard:latest
This command mounts the local
sqlite-db
volume to the container’s/app/ctf/
directory, where the database is stored. -
Access the leaderboard:
Visithttp://localhost
in your browser. use email "admin@admin.com" and password "tulakaymahit"
Follow these steps to set up the Leaderboard project using Docker Compose:
-
Create a
docker-compose.yml
file:services: app: depends_on: - redis image: tachyonbyte/leaderboard:latest ports: - "80:80" volumes: - sqlite-db:/app/ctf/ctf/db.sqlite3 redis: image: redis:alpine volumes: sqlite-db: driver: local
-
Run the Docker Compose setup:
Navigate to the directory where the
docker-compose.yml
file is saved and run:docker-compose up -d
This will pull the necessary Docker image, create the required containers, and run the application.
-
Access the leaderboard:
Visithttp://localhost
in your browser. -
Stop the application (when needed):
docker-compose down
This method simplifies running the application and managing dependencies through a single command.
- Access the leaderboard and manage teams and challenges via the provided interface.
- Submit scores and track rankings in real-time.
- Tanmay More - Implemented core functionality, designed the architecture
- Purvesh Wakode - Implemented Github Actions
- Abhijit More - Containerised the project
- Paresh Pawar - Planning and Management
Feel free to submit issues and pull requests to help improve the project.