Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Learnify E-Learning Platform

Learnify is a Java-based e-learning platform developed as a multi-stage software engineering project. It models users, courses, enrollments, assessments, grading, certificates, reporting, and notifications while demonstrating object-oriented design, GoF design patterns, layered architecture, service-oriented design, and RESTful APIs.

The repository combines all project deliverables into one portfolio-ready Maven monorepo rather than treating each academic submission as a separate application.

Highlights

  • Implements 20 design-pattern cases across creational, structural, and behavioral families.
  • Uses layered/MVC-style separation with controllers, domain objects, data access, services, and views.
  • Includes a Spring Boot REST API for users, courses, enrollments, and a composite registration workflow.
  • Documents the API with OpenAPI 3.0 and includes a Postman collection plus validation screenshots.
  • Preserves architecture models, UML diagrams, and reports from all five project deliverables.
  • Runs entirely with synthetic, in-memory data for safe and reproducible demonstrations.

System evolution

flowchart LR
    D1[Deliverable 1<br/>Creational Patterns]
    D2[Deliverable 2<br/>Structural Patterns]
    D3[Deliverable 3<br/>Behavioral Patterns]
    D4[Deliverable 4<br/>Software Architecture]
    D5[Deliverable 5<br/>Spring Boot REST API]

    D1 --> D2 --> D3 --> D4 --> D5
Loading

Architecture

flowchart TB
    Client[Console / API Client / Postman]
    Presentation[Views and REST Controllers]
    Application[Controllers and Services]
    Patterns[Pattern Workflows]
    Domain[Domain Model]
    Persistence[DAO / Repository Layer]
    Store[(In-Memory Data Stores)]
    Events[Singleton Event Hub]
    Subscribers[Notification / Audit / Analytics]

    Client --> Presentation
    Presentation --> Application
    Application --> Patterns
    Application --> Domain
    Patterns --> Domain
    Application --> Persistence
    Persistence --> Store
    Patterns --> Events
    Events --> Subscribers
Loading

Repository modules

patterns-demo

A Java 17 console application that integrates the first three deliverables into one runnable demonstration.

Implemented pattern families:

Family Implementations
Creational Singleton database/session, Factory Method user creation, Abstract Factory role UI/report exporters
Structural Bridge notifications/pages, Adapter legacy services, Flyweight course styles, Decorator pages/report exports
Behavioral Template Method reports/grading, Mediator registration/enrollment UI, Strategy recommendations/enrollment policy, Observer event hub, Iterator course catalog

Run it with:

cd patterns-demo
mvn clean compile exec:java

rest-api

A Spring Boot API that exposes reusable Learnify services through JSON endpoints.

Resource Main operations
Users Create, list, retrieve, update, and delete learners, instructors, and admins
Courses Create, list, retrieve, update, and delete course records
Enrollments Create, list, retrieve, update, and delete learner-course relationships
Workflow Register a learner and enroll them in a course through one coordinated request

Run it with:

cd rest-api
mvn spring-boot:run

The service starts at http://localhost:8080.

Quick start for the full repository

Requirements:

  • Java 17+
  • Maven 3.9+

Build and test both modules:

mvn clean verify

Run the design-pattern demonstration:

mvn -pl patterns-demo compile exec:java

Run the REST API:

mvn -pl rest-api spring-boot:run

Example API request

The seeded demo data creates an instructor and published courses at startup. To register a new learner and enroll them into course 1:

curl -X POST http://localhost:8080/api/workflows/register-and-enroll \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sara Learner",
    "email": "sara.learner@example.com",
    "password": "learn123",
    "level": "Intermediate",
    "gpa": 3.5,
    "courseId": 1
  }'

API documentation

Project documentation

Technology stack

  • Java 17
  • Spring Boot 3
  • Maven
  • REST APIs and JSON
  • OpenAPI 3.0
  • Postman
  • JUnit 5
  • UML / StarUML
  • GitHub Actions

Scope and limitations

This is an educational architecture and design-pattern project, not a production LMS. It uses in-memory data stores and does not yet include authentication, authorization, a database, a browser frontend, or production password storage. See SECURITY.md for the most important hardening steps.

Academic attribution

Learnify was developed as a team project for C-SW311 Software Design and Development by Ahmed Elkhateeb and Ahmed Sherif. The repository consolidates the staged deliverables into a single public portfolio structure while retaining the original reports and design artifacts.

License

Released under the MIT License.

About

Java e-learning platform demonstrating GoF design patterns, layered architecture, Spring Boot REST APIs, OpenAPI documentation, and automated testing.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages