Welcome to BinaryBrain π, a powerful Spring Boot-based microservices platform designed to streamline online classroom and course management for teachers and students. This application offers robust tools for task assignments, submissions, peer reviews, course material sharing, and detailed reporting.
- Sourav600 (Team Leader) π
- Me-Sharif-Hasan π»
- BayazidHossain2 π οΈ
- Kaziasifjawwad
BinaryBrain is a feature-rich online classroom management system built with a microservices architecture using Spring Boot. It empowers teachers to manage classrooms and courses efficiently while providing students with seamless access to resources and collaborative tools.
- Create and manage multiple classrooms π«.
- Develop and organize courses with detailed syllabi π.
- Assign tasks and assignments to students π.
- Upload and share course materials (PDFs, videos, documents) π.
- Access, review, and download student submissions β .
- Provide feedback and grades for assignments ποΈ.
- Generate comprehensive course reports with performance insights π.
- Enroll in multiple classrooms and courses π.
- Submit assignments via:
- PDF uploads π.
- External links (e.g., Google Drive, GitHub) π.
- Store course-related materials with public or private access π.
- Participate in course-specific Q&A discussions π¬.
- Access teacher-shared resources (PDFs, videos, etc.) π½οΈ.
- Provide peer feedback on submissions π€.
- Teachers can create and manage multiple classrooms, each linked to specific courses or subjects.
- Students can join classrooms using unique codes or invitations π.
- Course management includes syllabi, schedules, and task assignments π .
- Teachers can create tasks or assignments tied to specific courses.
- Students submit assignments as:
- PDF uploads π.
- External links π.
- Flexible submission deadlines with automated reminders β°. egde Teachers can review submissions and provide detailed feedback βοΈ.
- Students and teachers can participate in peer reviews for assignments and projects.
- Structured feedback forms ensure constructive and meaningful reviews β .
- Peer review data is aggregated and included in final course reports π.
- Upload and organize course materials (PDFs, videos, documents) π.
- Embedded PDF readers and video players for seamless access π½οΈ.
- Centralized repository for all shared resources ποΈ.
- Dedicated storage space for each student to save course-related materials πΎ.
- Option to set materials as public (shared with peers) or private π.
- Easy access to teacher-uploaded resources π.
- Dedicated Q&A section for each course to foster collaboration.
- Teachers and students can post questions and answers β.
- Threaded discussions for organized communication π£οΈ.
- Teachers can generate detailed reports including:
- Student performance summaries π.
- Submission and feedback details π.
- Peer review insights π€.
- Exportable reports in PDF format for record-keeping π.
Our database schema is designed for scalability and efficiency using MySQL. View the current design here:
BinaryBrain is built using a microservices architecture to ensure scalability, maintainability, and modularity. Below is the structure of the microservices, each corresponding to a specific module and its responsibilities:

-
Classroom Microservice (
classroom-microservice) π«- Service: Classroom Service
- Responsibility: Manages the creation, configuration, and enrollment of classrooms.
- Features:
- Create and manage classrooms with student access π.
- Handle student enrollment and classroom memberships.
- Link classrooms to courses managed by the Course Microservice.
- Database: Stores classroom metadata, enrollment records, and relationships with courses in MySQL.
-
Course Microservice (
course-microservice) π- Service: Course Service
- Responsibility: Manages course creation, syllabi, and schedules.
- Features:
- Create and update course details, including syllabi and schedules π.
- Associate tasks and materials with specific courses.
- Provide course metadata to other services (e.g., Classroom, Task).
- Database: Stores course metadata, syllabi, and schedules in MySQL.
-
Task Microservice (
task-microservice) π- Service: Assignment Service (Task Creation)
- Responsibility: Handles the creation and management of tasks and assignments.
- Features:
- Allow teachers to create tasks tied to specific courses π.
- Set assignment deadlines and send automated reminders β°.
- Integrate with the Task Submission Service for submission tracking.
- Database: Stores task metadata, deadlines, and course associations in MySQL.
-
Task Submission Service (
task-submission-service) π- Service: Assignment Service (Submission and Review)
- Responsibility: Manages student submissions, teacher reviews, and peer reviews.
- Features:
- Handle student assignment submissions via PDF uploads or external links π.
- Facilitate teacher feedback and grading βοΈ.
- Support peer review workflows with structured feedback forms π€.
- Database: Stores submission files, feedback, and review data in MySQL.
-
Online Classroom Management (
online-classroom-management) π- Service: User and Material Services
- Responsibility: Serves as the core module handling user management and course material management (potentially a legacy monolithic component).
- Features:
- Manage user authentication, authorization, and profiles (teachers and students) π€.
- Handle course material uploads (PDFs, videos, documents) and student storage π.
- Provide embedded viewers for PDFs and videos π½οΈ.
- Support Q&A sections for course discussions π¬.
- Database: Stores user credentials, profiles, material metadata, and Q&A threads in MySQL.
- Note: This module may be refactored into separate User and Material microservices in the future for better modularity.
-
Eureka Server (
eureka-server) π- Service: Service Discovery
- Responsibility: Acts as a service registry for microservices to discover and communicate with each other.
- Features:
- Registers all microservices (e.g., Classroom, Course, Task) for dynamic discovery.
- Enables load balancing and fault tolerance across service instances.
- Database: None (in-memory registry).
-
Gateway (
gateway) πͺ- Service: API Gateway
- Responsibility: Serves as the entry point for all client requests, routing them to appropriate microservices.
- Features:
- Route requests to microservices based on URL patterns π.
- Handle cross-cutting concerns like authentication, rate limiting, and logging π.
- Provide a unified API for frontend applications.
- Database: None (configuration-based).
Communication: Microservices communicate via REST APIs for synchronous operations and may use message queues (e.g., RabbitMQ) for asynchronous tasks like notifications or report generation. The Eureka Server ensures service discovery, while the Gateway handles request routing and security.
Note: The online-classroom-management module currently encompasses multiple responsibilities (user management, material management, Q&A). Future iterations may split these into dedicated microservices (e.g., User Service, Material Service, Q&A Service) for enhanced scalability.
- Backend: Spring Boot, Java β
- Frontend: Swagger for API documentation (Try our APIs at Swagger UI (Wait some time for service's successfull startup));
- Database: MySQL ποΈ
- Testing: JUnit, Mockito π§ͺ
- Code Quality: SonarCloud β
- Service Discovery: Eureka Server π
- API Gateway: Spring Cloud Gateway πͺ
- Version Control: Git, GitHub ποΈ
- Deployment: Azure Container Apps βοΈ
For a detailed breakdown of project tasks, milestones, and responsibilities, refer to our WBS Document π.
We ensure high code quality with comprehensive test coverage, monitored via SonarCloud.
- Java 17 or higher β
- Maven π οΈ
- MySQL ποΈ
- Git π
- Clone the repository:
git clone https://github.com/Learnathon-By-Geeky-Solutions/binarybrain.git
- Navigate to the project directory:
cd binarybrain - Install dependencies:
mvn install
- Configure the MySQL database:
- Create a MySQL database (e.g.,
binarybrain_db). - Update
application.propertiesin each microservice with your MySQL credentials (e.g.,spring.datasource.url=jdbc:mysql://localhost:3306/binarybrain_db).
- Create a MySQL database (e.g.,
- Run the Eureka Server:
cd eureka-server mvn spring-boot:run - Run the Gateway:
cd gateway mvn spring-boot:run - Run other microservices (e.g.,
classroom-microservice,course-microservice, etc.):cd <microservice-name> mvn spring-boot:run
- Access the application:
- Visit the Swagger UI to try the APIs: https://binarybrains.gentlesmoke-d65a2350.westus2.azurecontainerapps.io/swagger-ui/index.html (Wait some time for service's successfull startup) π.
- Alternatively, access the Gateway at
http://localhost:8080for local testing.
We welcome contributions! To contribute:
- Fork the repository π΄.
- Create a new branch (
git checkout -b feature/your-feature) πΏ. - Commit your changes (
git commit -m "Add your feature") β . - Push to the branch (
git push origin feature/your-feature) π. - Open a Pull Request π¬.
Please ensure your code adheres to our coding standards and includes relevant tests π§ͺ.
This project is licensed under the MIT License. See the LICENSE file for details.
For inquiries or feedback, reach out to the team via GitHub Issues.
BinaryBrain is a project developed as part of the Learnathon by Geeky Solutions π. We aim to revolutionize online education with a user-friendly and feature-packed classroom management system.

