Important
This project is currently under heavy development.
<BitWarriors/> is an AI-powered competitive coding platform designed to help beginners improve their programming skills and in turn their problem solving abilities. BitWarriors draws inspiration from platforms like Leetcode and CodeWars, offering a simplified and beginner friendly version.
This repository hosts the backend of this project, which includes all of the services necessary to get the project up and running. The services are containerized using Docker and orchestrated using Kubernetes with Apache Kafka serving as the asynchronous message broker between services.
- Gateway: The gateway is responsible for accepting the initial request, authenticating it (using JWT), and proxying it to other services.
- Admin Service: A superuser service that lets a sysop manage and talk to individual services. This is also where problems and learning paths are added. Also serves its own frontend (built using React & Vite).
- User Service: Everything from initial authorization to user profiles, follower relationships and inboxes are part of the user service.
- Problem Service: Coding challenges and learning paths are served and kept track of by this service.
- Submission Service: Handling the submission, analysis, testing, and ranking of user submitted code.
- Test Service (Internal): Responsible for statically analysing and executing abitrary code using the Code Execution Sandbox. Also keeps track of test cases for each question.
Discuss Service: Submission and retrieval of writeups, comments, and discussions on problems.Notification Service (Internal): General purpose server solely responsible for delivering email notifications and alerts.- Code Execution Sandbox (Internal): An isolated, virtualized, container holding various language runtimes for safe execution of abitrary code.
Note
BitWarriors being architecturally complex, hosts a separate repository for the frontend layer, which is built using React and NextJS. This is also under development here. Stay tuned for instructions to self-host!
Note
This project is far from complete to start accepting contributions.
This project is licensed under the AGPLv3 License, see LICENSE.