A centralized academic data management platform designed for the Cité des Métiers et des Compétences (CMC) Béni Mellal.
The project provides a RESTful API that serves as a single source of truth for academic and administrative data, including training programs, specialties, modules, trainers, trainees, groups, schedules, evaluations, and more.
Academic data within training centers is often distributed across multiple Excel files and managed by different departments. This fragmentation makes reporting, filtering, analytics, and data consistency difficult.
CMC Data API addresses these challenges by:
- Centralizing academic data.
- Providing advanced filtering capabilities.
- Importing data from Excel and CSV files.
- Exposing a secure and versioned REST API.
- Supporting pagination, sorting, searching, and analytics.
- Serving as a foundation for dashboards, mobile applications, and reporting tools.
- Pôles
- Filières
- Specialties
- Academic Years
- Modules
- Groups
- Trainers (Formateurs)
- Trainee Management
- Administrative Staff
- Course Sessions
- Timetables
- Evaluations
- Attendance Tracking
- Academic Progress Monitoring
- Excel Import
- CSV Import
- Validation and Error Reporting
- Duplicate Detection
- Referential Integrity Verification
- RESTful Architecture
- API Versioning
- Filtering
- Sorting
- Searching
- Pagination
- Resource Transformation
- Validation
- Authentication & Authorization
- Query Optimization
- Response Caching
- Eager Loading
- Index Optimization
- Request Validation
- Authentication
- Authorization Policies
- Secure API Responses
- Audit Logging
- PHP 8.3+
- Laravel 12
- Eloquent ORM
- SQLite (Development)
- MySQL / PostgreSQL (Production)
- Redis
- Laravel Excel
- CSV Processing
- PHPUnit
- Pest
The project follows a layered architecture:
Routes
↓
Form Requests
↓
Filters
↓
Services
↓
Models
↓
Resources
- SOLID Principles
- Clean Architecture
- Separation of Concerns
- Fat Models, Thin Controllers
- Service Layer Pattern
- Resource Transformation Pattern
app/
├── Actions/
├── Enums/
├── Filters/
├── Http/
│ ├── Controllers/
│ ├── Requests/
│ └── Resources/
├── Models/
├── Observers/
├── Policies/
├── Services/
└── Support/
database/
├── factories/
├── migrations/
└── seeders/
routes/
├── api.php
└── web.php
git clone https://github.com/droidevs/cmc-data-api.git
cd cmc-data-apicomposer installcp .env.example .envGenerate application key:
php artisan key:generateUpdate your .env file.
Run migrations:
php artisan migratephp artisan db:seedphp artisan servephp artisan testor
vendor/bin/pestAPI endpoints are versioned:
/api/v1/*
Example:
GET /api/v1/formateurs
GET /api/v1/stagiaires
GET /api/v1/groupes
GET /api/v1/modulesGET /api/v1/formateurs?search=ahmedGET /api/v1/stagiaires?filiere=DD&annee=2GET /api/v1/seances?date=2026-05-01POST /api/v1/imports/formateursUpload:
formateurs.xlsx
The system automatically:
- Validates rows
- Detects errors
- Creates missing entities
- Generates import reports
- Dashboard & Analytics
- Data Warehouse Integration
- Machine Learning Insights
- Mobile Application Support
- Real-Time Notifications
- Advanced Reporting
- Business Intelligence Integration
Developed as an academic and professional project for:
OFPPT – Cité des Métiers et des Compétences Béni Mellal
Digital Development – Full Stack Web Development
This project is released under the MIT License.