{"id":25831169,"url":"https://github.com/edsonwade/university-system","last_synced_at":"2026-04-05T22:36:47.477Z","repository":{"id":246914136,"uuid":"824212122","full_name":"edsonwade/university-system","owner":"edsonwade","description":" Student Management System","archived":false,"fork":false,"pushed_at":"2026-02-07T19:11:47.000Z","size":3585,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-08T01:44:01.639Z","etag":null,"topics":["azure","cucumber-java","docker-compose","hibernate-jpa","maven","mockito-junit","postgresql","spring","springboot","swagger-ui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/edsonwade.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-07-04T15:40:08.000Z","updated_at":"2026-02-07T19:21:47.000Z","dependencies_parsed_at":"2024-11-12T13:20:00.427Z","dependency_job_id":"ae07cd3e-04be-410d-99c4-ec707b3d35e6","html_url":"https://github.com/edsonwade/university-system","commit_stats":null,"previous_names":["edsonwade/student-management-system","edsonwade/university-system"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/edsonwade/university-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonwade%2Funiversity-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonwade%2Funiversity-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonwade%2Funiversity-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonwade%2Funiversity-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edsonwade","download_url":"https://codeload.github.com/edsonwade/university-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsonwade%2Funiversity-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31452899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure","cucumber-java","docker-compose","hibernate-jpa","maven","mockito-junit","postgresql","spring","springboot","swagger-ui"],"created_at":"2025-02-28T20:32:55.591Z","updated_at":"2026-04-05T22:36:46.350Z","avatar_url":"https://github.com/edsonwade.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# University SaaS Blueprint\n\nA comprehensive, production-ready microservices-based University Management System built with Spring Boot, Spring Cloud, and Domain-Driven Design (DDD) principles.\n\n## 🏗️ Architecture Overview\n\nThis project implements a complete microservices architecture with:\n\n- **9 Microservices** (User, Course, Grades, Billing, Library, Notification + Infrastructure)\n- **Service Discovery** (Eureka)\n- **API Gateway** (Spring Cloud Gateway)\n- **Event-Driven Architecture** (Kafka)\n- **Caching** (Redis)\n- **Database Per Service** (PostgreSQL)\n\n## 📋 Table of Contents\n\n- [Features](#features)\n- [Technology Stack](#technology-stack)\n- [Architecture](#architecture)\n- [Getting Started](#getting-started)\n- [API Documentation](#api-documentation)\n- [Deployment](#deployment)\n- [Monitoring](#monitoring)\n\n## Features  ✨\n\n### Core Services\n\n#### 1. **User Management Service** (Port 8081)\n\n- User registration and authentication\n- JWT-based security\n- Role-based access control\n- Password encryption (BCrypt)\n\n#### 2. **Course \u0026 Enrollment Service** (Port 8082)\n\n- Course management (CRUD)\n- Student enrollment\n- Department-based filtering\n- Instructor assignment\n\n#### 3. **Grades Service** (Port 8083)\n\n- Grade management for enrolled courses\n- Multiple grade types (Assignment, Quiz, Midterm, Final, Project)\n- Average grade calculation\n- Grade history tracking\n\n#### 4. **Billing \u0026 Payments Service** (Port 8084)\n\n- Invoice generation\n- Payment processing\n- Multiple payment methods\n- Payment history\n- Invoice status tracking\n\n#### 5. **Library Service** (Port 8085)\n\n- Book catalog management\n- Book borrowing and returns\n- Search by title, author, category\n- Availability tracking\n\n#### 6. **Notification Service** (Port 8086)\n\n- Email notifications\n- SMS notifications (framework ready)\n- Event-driven notifications via Kafka\n- Notification history\n\n### Infrastructure Services\n\n#### 7. **Service Discovery** (Port 8761)\n\n- Eureka Server for service registration\n- Dynamic service discovery\n- Health monitoring\n\n#### 8. **API Gateway** (Port 8080)\n\n- Single entry point for all services\n- Request routing\n- Load balancing\n\n## 🛠️ Technology Stack\n\n### Core Technologies\n\n- **Java**: 17+\n- **Spring Boot**: 3.2.3\n- **Spring Cloud**: 2023.0.0\n- **Maven**: 3.8+\n\n### Frameworks \u0026 Libraries\n\n- **Spring Data JPA**: Database access\n- **Spring Security**: Authentication \u0026 Authorization\n- **Spring Cloud Gateway**: API Gateway\n- **Spring Cloud Netflix Eureka**: Service Discovery\n- **Spring Kafka**: Event-driven messaging\n- **Spring Mail**: Email notifications\n- **JWT (jjwt)**: Token-based authentication\n- **Lombok**: Reduce boilerplate code\n- **PostgreSQL**: Relational database\n- **Redis**: Caching layer\n\n### Infrastructure\n\n- **Docker**: Containerization\n- **Docker Compose**: Multi-container orchestration\n- **Kafka + Zookeeper**: Message broker\n- **Redis**: In-memory cache\n\n## 🏛️ Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                    API Gateway (8080)                        │\n│              Single Entry Point for All Clients              │\n└────────────────────┬────────────────────────────────────────┘\n                     │\n        ┌────────────┴────────────┐\n        │                         │\n┌───────▼────────┐       ┌───────▼────────┐\n│ Service        │       │  Microservices │\n│ Discovery      │◄──────┤  Register \u0026    │\n│ (Eureka:8761)  │       │  Discover      │\n└────────────────┘       └────────────────┘\n                                │\n        ┌───────────────────────┼───────────────────────┐\n        │                       │                       │\n┌───────▼────────┐  ┌──────────▼─────────┐  ┌─────────▼────────┐\n│ User Service   │  │ Course Service     │  │ Grades Service   │\n│ (8081)         │  │ (8082)             │  │ (8083)           │\n│ + user_db      │  │ + course_db        │  │ + grades_db      │\n└────────┬───────┘  └────────┬───────────┘  └──────────┬───────┘\n         │                   │                          │\n         │         ┌─────────▼──────────┐              │\n         │         │   Kafka Broker     │              │\n         └────────►│   Event Bus        │◄─────────────┘\n                   └─────────┬──────────┘\n                             │\n         ┌───────────────────┼───────────────────────┐\n         │                   │                       │\n┌────────▼───────┐  ┌────────▼──────────┐  ┌────────▼────────┐\n│ Billing Svc    │  │ Library Service   │  │ Notification    │\n│ (8084)         │  │ (8085)            │  │ Service (8086)  │\n│ + billing_db   │  │ + library_db      │  │ + notif_db      │\n└────────────────┘  └───────────────────┘  └─────────────────┘\n         │                   │                       │\n         └───────────────────┴───────────────────────┘\n                             │\n                   ┌─────────▼──────────┐\n                   │   Redis Cache      │\n                   │   (6379)           │\n                   └────────────────────┘\n```\n\n## 🚀 Getting Started\n\n### Prerequisites\n\n- **Java 17+** installed\n- **Maven 3.8+** installed\n- **Docker** and **Docker Compose** installed\n- **Git** installed\n\n### Clone the Repository\n\n```bash\ngit clone \u003crepository-url\u003e\ncd university-saas\n```\n\n### Build the Project\n\n```bash\nmvn clean install -DskipTests\n```\n\n### Run with Docker Compose\n\n```bash\ndocker-compose up --build\n```\n\nThis will start:\n\n- All 9 microservices\n- 6 PostgreSQL databases\n- Kafka + Zookeeper\n- Redis\n- Eureka Server\n- API Gateway\n\n### Access the Services\n\n| Service              | URL                   | Description      |\n| -------------------- | --------------------- | ---------------- |\n| Eureka Dashboard     | http://localhost:8761 | Service registry |\n| API Gateway          | http://localhost:8080 | Main entry point |\n| User Service         | http://localhost:8081 | Direct access    |\n| Course Service       | http://localhost:8082 | Direct access    |\n| Grades Service       | http://localhost:8083 | Direct access    |\n| Billing Service      | http://localhost:8084 | Direct access    |\n| Library Service      | http://localhost:8085 | Direct access    |\n| Notification Service | http://localhost:8086 | Direct access    |\n\n## 📚 API Documentation\n\n### User Service APIs\n\n#### Register User\n\n```http\nPOST /api/users\nContent-Type: application/json\n\n{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john.doe@university.edu\",\n  \"password\": \"SecurePass123\"\n}\n```\n\n#### Login\n\n```http\nPOST /api/auth/login\nContent-Type: application/json\n\n{\n  \"email\": \"john.doe@university.edu\",\n  \"password\": \"SecurePass123\"\n}\n\nResponse:\n{\n  \"success\": true,\n  \"data\": {\n    \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n    \"user\": { ... }\n  }\n}\n```\n\n### Course Service APIs\n\n#### Create Course\n\n```http\nPOST /api/courses\nAuthorization: Bearer \u003ctoken\u003e\nContent-Type: application/json\n\n{\n  \"title\": \"Introduction to Computer Science\",\n  \"description\": \"Fundamentals of programming\",\n  \"credits\": 3,\n  \"department\": \"Computer Science\",\n  \"instructorId\": 1\n}\n```\n\n#### Enroll Student\n\n```http\nPOST /api/enrollments\nAuthorization: Bearer \u003ctoken\u003e\nContent-Type: application/json\n\n{\n  \"courseId\": 1,\n  \"studentId\": 2\n}\n```\n\n### Grades Service APIs\n\n#### Submit Grade\n\n```http\nPOST /api/grades\nAuthorization: Bearer \u003ctoken\u003e\nContent-Type: application/json\n\n{\n  \"enrollmentId\": 1,\n  \"studentId\": 2,\n  \"courseId\": 1,\n  \"score\": 95.5,\n  \"maxScore\": 100,\n  \"gradeType\": \"MIDTERM\",\n  \"comments\": \"Excellent work\"\n}\n```\n\n### Billing Service APIs\n\n#### Create Invoice\n\n```http\nPOST /api/invoices\nAuthorization: Bearer \u003ctoken\u003e\nContent-Type: application/json\n\n{\n  \"studentId\": 2,\n  \"dueDate\": \"2024-12-31\",\n  \"items\": [\n    {\n      \"description\": \"Tuition Fee - Fall 2024\",\n      \"quantity\": 1,\n      \"unitPrice\": 5000.00\n    }\n  ]\n}\n```\n\n#### Process Payment\n\n```http\nPOST /api/payments\nAuthorization: Bearer \u003ctoken\u003e\nContent-Type: application/json\n\n{\n  \"invoiceId\": 1,\n  \"studentId\": 2,\n  \"amount\": 5000.00,\n  \"paymentMethod\": \"CREDIT_CARD\"\n}\n```\n\n### Library Service APIs\n\n#### Add Book\n\n```http\nPOST /api/books\nAuthorization: Bearer \u003ctoken\u003e\nContent-Type: application/json\n\n{\n  \"isbn\": \"978-0-13-468599-1\",\n  \"title\": \"Clean Code\",\n  \"author\": \"Robert C. Martin\",\n  \"category\": \"Software Engineering\",\n  \"totalCopies\": 5\n}\n```\n\n#### Borrow Book\n\n```http\nPOST /api/borrow-records\nAuthorization: Bearer \u003ctoken\u003e\nContent-Type: application/json\n\n{\n  \"bookId\": 1,\n  \"userId\": 2,\n  \"dueDate\": \"2024-12-31\"\n}\n```\n\n## 🐳 Deployment\n\n### Docker Compose Deployment\n\n1. **Build all services:**\n\n```bash\nmvn clean package -DskipTests\n```\n\n2. **Start all services:**\n\n```bash\ndocker-compose up -d\n```\n\n3. **View logs:**\n\n```bash\ndocker-compose logs -f \u003cservice-name\u003e\n```\n\n4. **Stop all services:**\n\n```bash\ndocker-compose down\n```\n\n### Production Deployment\n\nFor production deployment, consider:\n\n1. **Use environment-specific profiles:**\n\n    - Create `application-prod.yml` for each service\n    - Set `SPRING_PROFILES_ACTIVE=prod`\n\n2. **Externalize configuration:**\n\n    - Use Spring Cloud Config Server\n    - Store secrets in HashiCorp Vault or AWS Secrets Manager\n\n3. **Use managed services:**\n\n    - AWS RDS for PostgreSQL\n    - AWS MSK for Kafka\n    - AWS ElastiCache for Redis\n\n4. **Implement monitoring:**\n    - Add Prometheus metrics\n    - Set up Grafana dashboards\n    - Configure ELK stack for logging\n\n## 📊 Monitoring\n\n### Health Checks\n\nEach service exposes health endpoints:\n\n```http\nGET /actuator/health\n```\n\n### Eureka Dashboard\n\nMonitor all registered services at:\n\n```\nhttp://localhost:8761\n```\n\n## 🔒 Security\n\n- **JWT Authentication**: All protected endpoints require valid JWT tokens\n- **Password Encryption**: BCrypt hashing for user passwords\n- **HTTPS**: Configure SSL/TLS for production\n- **API Rate Limiting**: Implement using Spring Cloud Gateway filters\n\n## 🧪 Testing\n\n### Run Unit Tests\n\n```bash\nmvn test\n```\n\n### Run Integration Tests\n\n```bash\nmvn verify\n```\n\n## 📝 Project Structure\n\n```\nuniversity-saas/\n├── shared-kernel/          # Common utilities and base classes\n├── service-discovery/      # Eureka Server\n├── api-gateway/            # Spring Cloud Gateway\n├── user-service/           # User management\n├── course-service/         # Course and enrollment\n├── grades-service/         # Grades management\n├── billing-service/        # Billing and payments\n├── library-service/        # Library management\n├── notification-service/   # Notifications (Email/SMS)\n├── docker-compose.yml      # Docker orchestration\n└── pom.xml                 # Parent POM\n```\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Commit your changes\n4. Push to the branch\n5. Create a Pull Request\n\n\n## 👥 Authors\n\n- **edsonwade** - Initial work\n\n## 🙏 Acknowledgments\n\n- Spring Boot team for excellent documentation\n- Domain-Driven Design community\n- Microservices patterns community\n\n---\n\n**Built with ❤️ using Spring Boot and Microservices Architecture**\n\n\n## License ⚖️\nThis project is licensed under the [MIT License](https://opensource.org/licenses/MIT).\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonwade%2Funiversity-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedsonwade%2Funiversity-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedsonwade%2Funiversity-system/lists"}