Architecture Overview
System Architecture
The architecture of the ProjectHub system is designed to support a robust and scalable platform for managing educational projects. The system is built using a microservices architecture, which allows for independent deployment and scaling of different components.
Key Components
- User Management Service: Handles user registration, authentication, and role-based access control.
- Project Management Service: Manages project creation, updates, and tracking of project statuses.
- Task Management Service: Facilitates the creation, assignment, and tracking of tasks associated with projects.
- Resource Management Service: Oversees the allocation and management of resources required for projects.
- Notification Service: Sends notifications to users regarding project updates, task assignments, and deadlines.
Technology Stack
- Frontend: JavaFX for building the user interface.
- Backend: Spring Boot for developing microservices.
- Database: PostgreSQL for data storage and management.
- Messaging: RabbitMQ for inter-service communication.
Diagrams
System Context Diagram
C4Context
title System Context diagram for ProjectHub
Person(student, "Student", "A student user who can view and manage their projects")
Person(teacher, "Teacher", "A teacher who manages student projects and evaluations")
Person(admin, "Administrator", "System administrator who manages users and settings")
System(projecthub, "ProjectHub System", "Allows users to manage student projects, evaluations and resources")
System_Ext(db, "PostgreSQL Database", "Stores user, project and evaluation data")
System_Ext(auth, "Authentication Service", "Handles user authentication and authorization")
System_Ext(mq, "RabbitMQ", "Message broker for async communications")
Rel(student, projecthub, "Views projects, submits work, tracks progress")
Rel(teacher, projecthub, "Creates/evaluates projects, manages teams")
Rel(admin, projecthub, "Configures system, manages users")
Rel(projecthub, db, "Reads from and writes to")
Rel(projecthub, auth, "Authenticates users via")
Rel(projecthub, mq, "Publishes/subscribes to messages")
Risk Matrix Diagram
quadrantChart
title Risk Assessment Matrix
x-axis Low Impact --> High Impact
y-axis Low Probability --> High Probability
quadrant-1 Critical Risk
quadrant-2 High Risk
quadrant-3 Medium Risk
quadrant-4 Low Risk
Data-Loss: [0.8, 0.6]
System-Downtime: [0.6, 0.5]
Security-Breach: [0.9, 0.8]
Performance-Issues: [0.4, 0.3]
Integration-Failures: [0.3, 0.2]
Conclusion
The architecture of ProjectHub is designed to ensure flexibility, scalability, and maintainability, enabling efficient management of educational projects and resources.