Classlink is a modern school administrative management system designed to streamline and secure school operations. It features a robust backend built with Spring Boot and a dynamic frontend using Angular. The system enforces fine-grained authorization using reBAC (relationship-based access control) via SpiceDB (an implementation of the Zanzibar paper), ensures strong password policies with Passay, and supports file upload persistence with MinIO (S3-compatible). For development and testing, Maildev is used as a local SMTP server.
- Spring Boot 4: Rapid development with production-ready features.
- Spring Security: Custom security configuration, session management, and integration with reBAC.
- SpiceDB (Authzed): Implements relationship-based access control for fine-grained permissions, inspired by Google Zanzibar.
- Passay: Enforces strong password rules (length, character types, no whitespace).
- MySQL: Reliable relational database for persistent storage.
- Jakarta Validation: Ensures data integrity and validation.
- Maildev: Local SMTP server for email testing.
- Best Practices:
- Modular service and validation layers.
- Secure session and cookie management.
- Test dependencies for robust backend testing.
- Angular 21: Modern, scalable SPA framework.
- NgRx: State management using Redux pattern for predictable state and side-effect handling.
- Prettier: Enforced code formatting for maintainability.
- TypeScript: Type safety and modern JavaScript features.
- Component-based architecture: Organized by features and roles (admin, teacher, student, parent).
- Best Practices:
- Modular folder structure.
- Route guards for authentication and first-login flows.
- Shared components for UI consistency.
- MinIO: S3-compatible object storage for file uploads and persistence (planned/expected based on your description).
- reBAC with SpiceDB: Fine-grained, relationship-based access control.
- Strong password enforcement: Passay-based validation.
- Session security: Secure, HTTP-only cookies, session timeouts.
- Maildev: Local SMTP server for safe email testing.
- Spring Boot Devtools: Hot reloading for rapid backend development.
- Comprehensive test dependencies: For both security and web layers.
- Java 17+ (recommended for Spring Boot 4)
- Node.js 18+ and npm
- MySQL server
- MinIO server (for file uploads)
- Maildev (for email testing)
- SpiceDB server
cd back-end
# Configure application.properties for your environment
./mvnw spring-boot:runcd front-end
npm install
npm start- SpiceDB: SpiceDB Documentation
- MinIO: MinIO Quickstart
- Maildev: Maildev GitHub
- Custom SecurityConfig: Fine-tuned session, CSRF, and authentication management.
- SpiceDBAuthorizationService: Centralized service for permission checks and relationship management.
- StrongPasswordValidator: Enforces complex password rules using Passay.
- NgRx State Management: Predictable, scalable state handling in Angular.
- Prettier Formatting: Consistent code style across the frontend.
Contributions are welcome! Please open issues or submit pull requests for improvements.
This project is for educational and demonstration purposes.