/bit-warriors-backend

NodeJS backend using Microservices for my <BitWarriors/> project which is an open-source, AI-powered competitive coding platform designed to help teach programming.

Primary LanguageJavaScriptGNU Affero General Public License v3.0AGPL-3.0

<BitWarriors/>

Nodejs Backend (Service Oriented)

PNPM NodeJS Express.js MongoDB Redis
Alpine Linux Docker Kubernetes Apache Kafka
Jest

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.

📦 Services

high level system design diagram

  • 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.

🚀 Getting Started

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!

🤝 Contribution

Note

This project is far from complete to start accepting contributions.

License

This project is licensed under the AGPLv3 License, see LICENSE.