A comprehensive web application for managing private education institution membership applications to Fondation Mohammed VI de Promotion des Εuvres Sociales de l'Education-Formation.
The Fondation Mohammed VI de Promotion des Εuvres Sociales de l'Education-Formation (FM6 Education) is expanding its social services beyond traditional public sector education personnel to include employees of private education institutions. This strategic expansion requires a technological solution to efficiently manage the increased operational complexity.
- Digitalize the membership application process for private institutions
- Automate administrative workflows to improve efficiency
- Modernize service delivery with a user-friendly platform
- Ensure secure handling of institutional and personal data
- Streamline application tracking and status management
- JWT-based authentication with Spring Security
- Role-based access control (Admin, User, Moderator)
- Secure password encryption with BCrypt
- Token refresh mechanism for seamless user experience
- User registration with email verification
- Membership application submission with document upload
- Real-time application status tracking
- Email notifications for status updates
- Application review dashboard for administrators
- Bulk application processing capabilities
- User management and role assignment
- Statistical reporting and analytics
- Responsive design with Angular Material
- Progressive Web App capabilities
- Real-time updates with WebSocket integration
- Multilingual support (French/Arabic)
- Framework: Spring Boot 3.2.0 with Java 17
- Security: Spring Security + JWT
- Database: JPA/Hibernate with SQL Server
- API: RESTful services with OpenAPI 3.0
- Testing: JUnit 5 + Mockito + Testcontainers
- Framework: Angular 17+ with TypeScript
- UI Library: Angular Material + Bootstrap
- State Management: RxJS Services
- Testing: Jasmine + Karma + Cypress
- Build: Angular CLI with PWA support
- Containerization: Docker + Docker Compose
- CI/CD: GitHub Actions with automated testing
- Monitoring: Actuator + Micrometer metrics
- Security: OWASP dependency scanning
- Java 17+
- Node.js 18+
- Docker & Docker Compose
- SQL Server 2019+ (or use Docker)
git clone https://github.com/Youss2f/Adhesion.git
cd Adhesion# Copy environment template
cp .env.example .env
# Configure your database and email settings
# Edit .env file with your specific configurations# Start all services
docker-compose up -d
# Access the application
# Frontend: http://localhost:80
# Backend API: http://localhost:8080
# Database: localhost:5432cd backend
mvn clean install
mvn spring-boot:runcd frontend
npm install
ng servecd backend
mvn test # Unit tests
mvn verify # Integration tests
mvn jacoco:report # Coverage reportcd frontend
npm test # Unit tests
npm run test:coverage # Coverage report
npm run e2e # End-to-end tests# Run all tests with coverage
docker-compose -f docker-compose.test.yml up --abort-on-container-exitThe API documentation is available at:
- Development: http://localhost:8080/swagger-ui.html
- OpenAPI Spec: http://localhost:8080/v3/api-docs
POST /api/auth/signin # User authentication
POST /api/auth/signup # User registration
GET /api/applications # List applications (authenticated)
POST /api/applications # Submit new application
GET /api/admin/applications # Admin application management- Backend: Google Java Style Guide
- Frontend: Angular Style Guide + ESLint + Prettier
- Commits: Conventional Commits specification
# Generate migration (after entity changes)
mvn flyway:migrate
# Rollback migration
mvn flyway:undo# Build both services
docker-compose -f docker-compose.prod.yml build
# Deploy to production
docker-compose -f docker-compose.prod.yml up -d| Variable | Description | Default |
|---|---|---|
DATABASE_URL |
SQL Server connection string | jdbc:sqlserver://localhost:1433;databaseName=membership |
JWT_SECRET |
Secret key for JWT tokens | mySecretKey |
JWT_EXPIRATION |
Token expiration time (seconds) | 86400 |
EMAIL_HOST |
SMTP server host | localhost |
EMAIL_PORT |
SMTP server port | 587 |
- Development:
spring.profiles.active=dev - Testing:
spring.profiles.active=test - Production:
spring.profiles.active=prod
- Backend: http://localhost:8080/actuator/health
- Frontend: http://localhost:80/health
- Database: Included in Docker health checks
- Application metrics: Micrometer + Prometheus
- Custom business metrics: Application KPIs
- Infrastructure monitoring: Docker stats
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Add tests for your changes
- Ensure all tests pass
- Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Project Lead: Youssef
- Backend Development: Spring Boot Team
- Frontend Development: Angular Team
- DevOps & Infrastructure: Platform Team
- Fondation Mohammed VI de Promotion des Εuvres Sociales de l'Education-Formation for the opportunity to digitize their membership process
- Spring Boot and Angular communities for excellent frameworks
- Open Source contributors who make projects like this possible
Built with β€οΈ for Fondation Mohammed VI Education-Formation Community
π Star this repo β’ π Report Bug β’ π‘ Request Feature