Skip to content

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

MIT License. See LICENSE for details.

About

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

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages