The Student app.model.Assignment Tracker System is a web-based application designed to help students manage their academic assignments and deadlines efficiently.
The system allows students to organize subjects, track assignments, and monitor upcoming deadlines in one centralized platform.
System Specification: SPECIFICATION.md
System Architecture: ARCHITECTURE.md
Stakeholder Analysis: STAKEHOLDERS.md
System Requirements: REQUIREMENTS.md
Reflection: REFLECTION.md
Use Cases: USECASES.md
Test Cases: TESTCASES.md
Reflection: REFLECTION_A5.md
Agile Planning: AGILE.md
Reflection: REFLECTION_A6.md
- Java (Spring Boot)
- MySQL
- GitHub (Issues, Projects, Milestones)
- Mermaid (Diagrams)
This project demonstrates a complete software engineering lifecycle, including requirements gathering, system design, testing, and Agile planning.
The Kanban board demonstrates Agile workflow by moving tasks through stages:
- To Do → In Progress → Testing → Done
- Blocked tasks highlight issues preventing progress
The board was customized by adding:
- Testing: Ensures tasks are verified before completion
- Blocked: Highlights tasks that cannot proceed
This improves workflow visibility and aligns with Agile best practices.
Assignment 11 focused on implementing Behavioral Design Patterns in the Student Assignment Tracker System.
The following patterns were implemented:
- Strategy Pattern
- Observer Pattern
These patterns improve flexibility, communication, and maintainability within the system.
The Strategy Pattern was implemented to support dynamic assignment prioritization.
PrioritizationStrategyDeadlineStrategyDifficultyStrategyAssignmentManager
Allows the system to switch prioritization behavior dynamically at runtime.
The Observer Pattern was implemented to support assignment notifications.
ObserverSubjectAssignmentTrackerStudentObserver
Allows students to receive assignment update notifications automatically.
JUnit 5 was used to test:
- Strategy behavior switching
- Observer notification functionality
BehavioralPatternTests.java
This assignment demonstrated the implementation of Behavioral Design Patterns using Java and JUnit 5 while applying Agile development practices through GitHub Issues, Boards, and Milestones.
Assignment 12 focused on implementing a Service Layer and RESTful API for the Student Assignment Tracker System using Spring Boot.
- Repository layer
- Service layer business logic
- RESTful CRUD API endpoints
- Assignment completion workflow
- Swagger/OpenAPI documentation
- Unit and integration testing
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/assignments | Fetch all assignments |
| POST | /api/assignments | Create assignment |
| PUT | /api/assignments/{id} | Update assignment |
| POST | /api/assignments/{id}/complete | Complete assignment |
Assignment 13 focused on implementing Continuous Integration and Continuous Deployment (CI/CD) using GitHub Actions.
- Automated test execution
- Maven build automation
- JAR artifact generation
- Branch protection rules
- Pull request validation
- GitHub Actions workflow automation
The GitHub Actions workflow automatically:
- Runs on every push
- Runs on pull requests to main
- Executes all unit and integration tests
- Builds the Spring Boot application
- Uploads a JAR artifact when merged to main
mvn clean test