Skip to content

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.

Notifications You must be signed in to change notification settings

Learnathon-By-Geeky-Solutions/binarybrain

Repository files navigation

ChatGPT Image ৩০ এΰ¦ͺ্রি, ২০২৫, ০৩_০৬_ΰ§§ΰ§­ PM

BinaryBrain - Online Classroom Management System πŸ“š

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.


Team Members πŸ‘₯

  • Sourav600 (Team Leader) 🌟
  • Me-Sharif-Hasan πŸ’»
  • BayazidHossain2 πŸ› οΈ

Mentor πŸŽ“

  • Kaziasifjawwad

Project Overview ℹ️

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.


Key Features ✨

1. User Roles

Teacher πŸ‘¨β€πŸ«:

  • 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 πŸ“Š.

Student πŸ‘©β€πŸŽ“:

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

2. Classroom and Course Management 🏫

  • 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 πŸ“….

3. Task and Assignment Management πŸ“‹

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

4. Peer Review System 🀝

  • 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 πŸ“Š.

5. Course Material Management πŸ“š

Teacher Resources:

  • Upload and organize course materials (PDFs, videos, documents) πŸ“‚.
  • Embedded PDF readers and video players for seamless access πŸ“½οΈ.
  • Centralized repository for all shared resources πŸ—„οΈ.

Student Storage:

  • 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 πŸ“–.

6. Q&A Section πŸ’¬

  • Dedicated Q&A section for each course to foster collaboration.
  • Teachers and students can post questions and answers ❓.
  • Threaded discussions for organized communication πŸ—£οΈ.

7. Course Report Generation πŸ“Š

  • Teachers can generate detailed reports including:
    • Student performance summaries πŸ“ˆ.
    • Submission and feedback details πŸ“.
    • Peer review insights 🀝.
  • Exportable reports in PDF format for record-keeping πŸ“„.

Database Schema πŸ—„οΈ

Our database schema is designed for scalability and efficiency using MySQL. View the current design here:

Database Schema


Microservice Structure 🧩

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: image

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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).
  7. 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.


Tech Stack πŸ› οΈ

  • 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 ☁️

Work Breakdown Structure (WBS) πŸ“‹

For a detailed breakdown of project tasks, milestones, and responsibilities, refer to our WBS Document πŸ“‘.


Test Coverage βœ…

We ensure high code quality with comprehensive test coverage, monitored via SonarCloud.

SonarCloud


Getting Started πŸš€

Prerequisites

  • Java 17 or higher β˜•
  • Maven πŸ› οΈ
  • MySQL πŸ—ƒοΈ
  • Git πŸ“‚

Installation

  1. Clone the repository:
    git clone https://github.com/Learnathon-By-Geeky-Solutions/binarybrain.git
  2. Navigate to the project directory:
    cd binarybrain
  3. Install dependencies:
    mvn install
  4. Configure the MySQL database:
    • Create a MySQL database (e.g., binarybrain_db).
    • Update application.properties in each microservice with your MySQL credentials (e.g., spring.datasource.url=jdbc:mysql://localhost:3306/binarybrain_db).
  5. Run the Eureka Server:
    cd eureka-server
    mvn spring-boot:run
  6. Run the Gateway:
    cd gateway
    mvn spring-boot:run
  7. Run other microservices (e.g., classroom-microservice, course-microservice, etc.):
    cd <microservice-name>
    mvn spring-boot:run
  8. Access the application:

Contributing 🀝

We welcome contributions! To contribute:

  1. Fork the repository 🍴.
  2. Create a new branch (git checkout -b feature/your-feature) 🌿.
  3. Commit your changes (git commit -m "Add your feature") βœ….
  4. Push to the branch (git push origin feature/your-feature) πŸš€.
  5. Open a Pull Request πŸ“¬.

Please ensure your code adheres to our coding standards and includes relevant tests πŸ§ͺ.


License πŸ“œ

This project is licensed under the MIT License. See the LICENSE file for details.


Contact πŸ“§

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.

About

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.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5