Skip to content

A modern web portal for managing private institution membership applications to FM6 Education Foundation, built with Spring Boot (Java) backend and Angular frontend.

Notifications You must be signed in to change notification settings

Youss2f/Adhesion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›οΈ FM6 Private Institution Membership Portal

CI/CD Pipeline Code Coverage Security Rating License: MIT

A comprehensive web application for managing private education institution membership applications to Fondation Mohammed VI de Promotion des Ε’uvres Sociales de l'Education-Formation.

🎯 Project Context

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.

πŸš€ Strategic Objectives

  • 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

🌟 Features

πŸ” Authentication & Security

  • 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

πŸ“ Application Management

  • User registration with email verification
  • Membership application submission with document upload
  • Real-time application status tracking
  • Email notifications for status updates

πŸ‘‘ Administrative Features

  • Application review dashboard for administrators
  • Bulk application processing capabilities
  • User management and role assignment
  • Statistical reporting and analytics

🎨 Modern User Interface

  • Responsive design with Angular Material
  • Progressive Web App capabilities
  • Real-time updates with WebSocket integration
  • Multilingual support (French/Arabic)

πŸ—οΈ Architecture

Backend (Spring Boot)

  • 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

Frontend (Angular)

  • Framework: Angular 17+ with TypeScript
  • UI Library: Angular Material + Bootstrap
  • State Management: RxJS Services
  • Testing: Jasmine + Karma + Cypress
  • Build: Angular CLI with PWA support

Infrastructure

  • Containerization: Docker + Docker Compose
  • CI/CD: GitHub Actions with automated testing
  • Monitoring: Actuator + Micrometer metrics
  • Security: OWASP dependency scanning

πŸš€ Quick Start

Prerequisites

  • Java 17+
  • Node.js 18+
  • Docker & Docker Compose
  • SQL Server 2019+ (or use Docker)

1. Clone the Repository

git clone https://github.com/Youss2f/Adhesion.git
cd Adhesion

2. Environment Setup

# Copy environment template
cp .env.example .env

# Configure your database and email settings
# Edit .env file with your specific configurations

3. Docker Development (Recommended)

# Start all services
docker-compose up -d

# Access the application
# Frontend: http://localhost:80
# Backend API: http://localhost:8080
# Database: localhost:5432

4. Manual Setup

Backend

cd backend
mvn clean install
mvn spring-boot:run

Frontend

cd frontend
npm install
ng serve

πŸ“Š Testing

Backend Testing

cd backend
mvn test                    # Unit tests
mvn verify                  # Integration tests
mvn jacoco:report          # Coverage report

Frontend Testing

cd frontend
npm test                    # Unit tests
npm run test:coverage      # Coverage report
npm run e2e                # End-to-end tests

Full Test Suite

# Run all tests with coverage
docker-compose -f docker-compose.test.yml up --abort-on-container-exit

πŸ“– API Documentation

The API documentation is available at:

Key Endpoints

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

πŸ› οΈ Development

Code Style

  • Backend: Google Java Style Guide
  • Frontend: Angular Style Guide + ESLint + Prettier
  • Commits: Conventional Commits specification

Database Migrations

# Generate migration (after entity changes)
mvn flyway:migrate

# Rollback migration
mvn flyway:undo

Building for Production

# Build both services
docker-compose -f docker-compose.prod.yml build

# Deploy to production
docker-compose -f docker-compose.prod.yml up -d

πŸ”§ Configuration

Environment Variables

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

Profiles

  • Development: spring.profiles.active=dev
  • Testing: spring.profiles.active=test
  • Production: spring.profiles.active=prod

πŸ“ˆ Monitoring & Analytics

Health Checks

Metrics

  • Application metrics: Micrometer + Prometheus
  • Custom business metrics: Application KPIs
  • Infrastructure monitoring: Docker stats

🀝 Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Add tests for your changes
  5. Ensure all tests pass
  6. Commit your changes (git commit -m 'feat: add amazing feature')
  7. Push to the branch (git push origin feature/amazing-feature)
  8. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ‘₯ Team

  • Project Lead: Youssef
  • Backend Development: Spring Boot Team
  • Frontend Development: Angular Team
  • DevOps & Infrastructure: Platform Team

πŸ™ Acknowledgments

  • 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

About

A modern web portal for managing private institution membership applications to FM6 Education Foundation, built with Spring Boot (Java) backend and Angular frontend.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published