The official backend API for the eDoctorat system, a production-ready application built with Spring Boot to streamline and manage the complete doctoral program lifecycle for academic institutions in Fes, Morocco.
| Feature Area | Description |
|---|---|
| 🔐 Secure Authentication | Robust, token-based authentication using JWTs and Spring Security. Includes seamless integration with Google OAuth2 for professor verification and sign-on. |
| 👨🏫 Role-Based Access Control | Granular permission system managing distinct roles (Candidate, Professor, Admin), ensuring users only access relevant data and functionalities. |
| 🎓 Lifecycle Management | End-to-end management of the doctoral process, from handling applications and thesis subjects (sujets) to forming commissions and tracking candidate progress. |
| 📊 Data Management | Full CRUD (Create, Read, Update, Delete) operations for all core entities, including candidates, professors, subjects, and doctoral programs. |
| 🏛️ Structured Architecture | A clean, layered architecture (Controller-Service-Repository) with DTOs and Mappers to ensure maintainability, scalability, and separation of concerns. |
| 🔔 Notification System | A built-in system to manage and send notifications to candidates regarding their application status and commission assignments. |
This project is built with a powerful, enterprise-grade Java backend stack.
Click to view a summary of the API endpoints
The API provides a comprehensive set of RESTful endpoints to manage all aspects of the e-doctorate system. Below is a high-level overview grouped by resource.
Authentication
POST /api/login- Authenticate a user and receive a JWT.POST /api/register- Register a new candidate.POST /api/verify-is-prof- Verify a professor via Google OAuth.POST /api/logout- Invalidate the user's session.
Sujet (Thesis Subject) Management
GET /api/sujetslabo- Get subjects for the current lab.POST /api/sujetslabo- Create a new subject.PUT /api/sujetslabo/{id}- Update an existing subject.DELETE /api/sujetslabo/{id}- Delete a subject.
Application & Candidate Management
GET /api/get-all-candidats- Retrieve a list of all candidates who have applied.GET /api/professeur-candidats- Get candidates associated with a professor's subjects.PUT /api/labo_valider_examiner/{id}- Validate a candidate's examination.POST /api/convoque-candidat/{id}- Send a notification to a candidate.
Commission Management
GET /api/commission- Get commissions for the current user's lab.POST /api/commission- Create a new commission with professors and subjects.DELETE /api/commission/{id}- Delete a commission.
...and many more endpoints for managing users, professors, doctoral programs, and system settings.
Let's connect! I'm always open to discussing new projects, creative ideas, or opportunities to be part of an amazing team.
Walid Zakan
- 📧 Email: walid.zakan@gmail.com
- 💼 LinkedIn: linkedin.com/in/walid-zakan