# Core Modules This document provides a comprehensive overview of all functional modules in the Research Platform, their current implementation status, dependencies, and entry points in the codebase. ## Module Overview The platform is organized into 10 major functional modules, each handling a specific domain of the research center's operations. ## 1. User Management & Authentication **Status**: ✅ **Fully Implemented** **Purpose**: Manage user accounts, authentication, sessions, and access control. **Key Features**: - User registration and account management - Email/password authentication - JWT-based session management - Login attempt logging - Account activation/deactivation - Role assignment **Database Models**: - `User`: User accounts - `Session`: Active sessions - `LoginLog`: Login attempt history - `UserPermission`: Granular permissions per module **API Endpoints**: - `GET /api/users` - List all users - `GET /api/users/[id]` - Get user details - `POST /api/users` - Create new user - `PUT /api/users/[id]` - Update user - `POST /api/auth/[...nextauth]` - Authentication endpoints **Pages**: - `/dashboard/users` - User list - `/dashboard/users/new` - Create user - `/dashboard/users/[id]/edit` - Edit user - `/auth/login` - Login page **Entry Points**: - `src/lib/auth.ts` - NextAuth configuration - `src/app/api/auth/[...nextauth]/route.ts` - Auth endpoints - `src/app/api/users/route.ts` - User API - `src/app/dashboard/users/page.tsx` - User management UI **Dependencies**: - NextAuth.js for authentication - bcryptjs for password hashing - Prisma for database access **Permissions**: - Admin roles can manage all users - Users can view their own profile - Granular permissions per module (READ, WRITE, VALIDATE, DELETE, ADMIN) --- ## 2. Human Resources (HR) **Status**: ✅ **Fully Implemented** **Purpose**: Manage employees, contracts, salaries, bonuses, leaves, and evaluations. **Key Features**: - Employee profiles and records - Contract management (CDI, CDD, Stage) - Salary tracking and payment history - Bonus management (terrain, mer, risques) - Leave requests and approval workflow - Employee evaluations **Database Models**: - `Employee`: Employee records - `Salary`: Monthly salary payments - `Bonus`: Additional compensation - `Leave`: Leave requests - `Evaluation`: Performance evaluations **API Endpoints**: - `GET /api/employees` - List employees - `GET /api/employees/[id]` - Get employee details - `POST /api/employees` - Create employee - `PUT /api/employees/[id]` - Update employee - `GET /api/salaries/[id]` - Get salary records - `POST /api/salaries` - Create salary record - `GET /api/leaves` - List leave requests - `POST /api/leaves` - Create leave request - `PUT /api/leaves/[id]` - Update leave status **Pages**: - `/dashboard/rh` - HR dashboard - `/dashboard/rh/employees` - Employee list - `/dashboard/rh/employees/new` - Add employee - `/dashboard/rh/employees/[id]` - Employee details - `/dashboard/rh/employees/[id]/edit` - Edit employee - `/dashboard/rh/leaves` - Leave management **Entry Points**: - `src/app/api/employees/route.ts` - Employee API - `src/app/api/salaries/route.ts` - Salary API - `src/app/api/leaves/route.ts` - Leave API - `src/app/dashboard/rh/page.tsx` - HR dashboard **Dependencies**: - User module (employees linked to users) - Mission module (for mission assignments) **Business Logic**: - Employees can be linked to user accounts - Salaries tracked monthly - Leave requests have approval workflow (pending, approved, rejected) - Evaluations can be quarterly or annual --- ## 3. Finance & Accounting **Status**: ✅ **Fully Implemented** **Purpose**: Manage budgets, grants, expenses, invoices, payments, and financial reporting. **Key Features**: - Annual budget planning and allocation - Grant tracking and management - Expense recording and categorization - Invoice management - Payment tracking - Supplier management - Financial reports and analytics **Database Models**: - `Budget`: Annual budgets - `BudgetAllocation`: Budget category allocations - `Grant`: Research grants - `Expense`: Financial expenses - `Invoice`: Supplier invoices - `Payment`: Invoice payments - `Supplier`: Supplier/vendor information **API Endpoints**: - `GET /api/budgets` - List budgets - `POST /api/budgets` - Create budget - `GET /api/expenses` - List expenses - `POST /api/expenses` - Create expense - `GET /api/analytics/overview` - Financial analytics **Pages**: - `/dashboard/finance` - Finance dashboard - `/dashboard/finance/budgets/new` - Create budget - `/dashboard/finance/expenses/new` - Record expense **Entry Points**: - `src/app/api/budgets/route.ts` - Budget API - `src/app/api/expenses/route.ts` - Expense API - `src/app/api/analytics/overview/route.ts` - Analytics API - `src/app/dashboard/finance/page.tsx` - Finance dashboard - `src/components/finance-charts.tsx` - Financial visualizations **Dependencies**: - Project module (expenses can be linked to projects) - Grant tracking independent **Business Logic**: - Budgets are annual - Allocations sum to total budget - Expenses can be linked to budgets, grants, or projects - Invoices track payment status (pending, paid, overdue) --- ## 4. Equipment & Logistics **Status**: ✅ **Fully Implemented** **Purpose**: Manage equipment inventory, maintenance, and logistics. **Key Features**: - Equipment inventory management - Equipment categorization (Vehicles, Boats, Scientific, IT, Camping, Lab) - Maintenance tracking and scheduling - Equipment status management (Available, In Use, Maintenance, Retired) - Equipment assignment to missions - Purchase history and lifecycle tracking **Database Models**: - `Equipment`: Equipment items - `Maintenance`: Maintenance records **API Endpoints**: - `GET /api/equipment` - List equipment - `GET /api/equipment/[id]` - Get equipment details - `POST /api/equipment` - Add equipment - `PUT /api/equipment/[id]` - Update equipment - `POST /api/equipment/maintenance` - Record maintenance **Pages**: - `/dashboard/equipment` - Equipment list - `/dashboard/equipment/new` - Add equipment - `/dashboard/equipment/[id]` - Equipment details - `/dashboard/equipment/[id]/edit` - Edit equipment **Entry Points**: - `src/app/api/equipment/route.ts` - Equipment API - `src/app/api/equipment/maintenance/route.ts` - Maintenance API - `src/app/dashboard/equipment/page.tsx` - Equipment UI - `src/components/filters/equipment-filters.tsx` - Equipment filters **Dependencies**: - Mission module (equipment assigned to missions) **Business Logic**: - Equipment status changes based on assignments - Maintenance records track costs and next due dates - Equipment has lifespan tracking for replacement planning --- ## 5. Missions & Field Campaigns **Status**: ✅ **Fully Implemented** **Purpose**: Plan, manage, and track field research missions and campaigns. **Key Features**: - Mission creation and planning - Team assignment and management - Equipment allocation per mission - GPS location tracking - Mission status workflow (planned, in_progress, completed, cancelled) - Post-mission reports - Document association **Database Models**: - `Mission`: Mission records - `MissionTeam`: Team member assignments - `MissionEquipment`: Equipment assignments - `MissionReport`: Post-mission reports **API Endpoints**: - `GET /api/missions` - List missions - `GET /api/missions/[id]` - Get mission details - `POST /api/missions` - Create mission - `PUT /api/missions/[id]` - Update mission **Pages**: - `/dashboard/missions` - Mission list - `/dashboard/missions/new` - Create mission - `/dashboard/missions/[id]` - Mission details - `/dashboard/missions/[id]/edit` - Edit mission **Entry Points**: - `src/app/api/missions/route.ts` - Mission API - `src/app/dashboard/missions/page.tsx` - Mission UI - `src/components/charts/missions-charts.tsx` - Mission analytics - `src/components/filters/missions-filters.tsx` - Mission filters **Dependencies**: - User module (mission creators and team members) - Employee module (team members can be employees) - Equipment module (equipment assignments) - Document module (mission reports and documents) - Species module (observations linked to missions) **Business Logic**: - Missions have start and end dates - Teams consist of users/employees with roles - Equipment status changes to "IN_USE" when assigned - GPS coordinates stored for location tracking - Reports can be created after mission completion --- ## 6. Scientific Database - Species **Status**: ✅ **Fully Implemented** **Purpose**: Catalog and manage biodiversity data including species, observations, and scientific references. **Key Features**: - Species cataloging (Flora, Terrestrial Fauna, Marine Fauna, Freshwater) - IUCN conservation status tracking - Species observations with location data - Geographic distribution mapping - Photo management - Scientific reference tracking - Observation linking to missions **Database Models**: - `Species`: Species catalog - `SpeciesObservation`: Field observations - `SpeciesLocation`: Geographic locations - `SpeciesPhoto`: Species photographs - `SpeciesReference`: Scientific references **API Endpoints**: - `GET /api/species` - List species - `GET /api/species/[id]` - Get species details - `POST /api/species` - Add species - `PUT /api/species/[id]` - Update species - `GET /api/species/observations` - List observations - `POST /api/species/observations` - Create observation - `GET /api/species/with-locations` - Species with location data **Pages**: - `/dashboard/species` - Species list - `/dashboard/species/new` - Add species - `/dashboard/species/[id]` - Species details - `/dashboard/species/[id]/edit` - Edit species **Entry Points**: - `src/app/api/species/route.ts` - Species API - `src/app/api/species/observations/route.ts` - Observations API - `src/app/dashboard/species/page.tsx` - Species UI - `src/components/charts/species-charts.tsx` - Species analytics - `src/components/filters/species-filters.tsx` - Species filters **Dependencies**: - Mission module (observations can be linked to missions) - GIS module (for mapping species locations) **Business Logic**: - Species have scientific and common names - IUCN status follows standard categories (LC, NT, VU, EN, CR, EW, EX, DD, NE) - Observations include quantity, date, and location - Geographic coordinates enable mapping and spatial analysis --- ## 7. Environmental Data **Status**: ✅ **Fully Implemented** **Purpose**: Collect, store, and analyze environmental monitoring data. **Key Features**: - Water quality monitoring (Sea, Source, Dam) - Air quality measurements - Climate data collection - Geology and soil data - Sensor data management - Time-series data analysis **Database Models**: - `WaterQuality`: Water quality measurements - `AirQuality`: Air quality measurements - `ClimateData`: Climate/weather data - `GeologyData`: Geological and soil data - `SensorData`: IoT sensor readings **API Endpoints**: - `GET /api/water-quality` - Water quality data - `POST /api/water-quality` - Record water quality - `GET /api/air-quality` - Air quality data - `POST /api/air-quality` - Record air quality - `GET /api/climate-data` - Climate data - `POST /api/climate-data` - Record climate data **Pages**: - `/dashboard/environment` - Environmental data dashboard - `/dashboard/environment/water/new` - Record water quality - `/dashboard/environment/air/new` - Record air quality - `/dashboard/environment/climate/new` - Record climate data **Entry Points**: - `src/app/api/water-quality/route.ts` - Water quality API - `src/app/api/air-quality/route.ts` - Air quality API - `src/app/api/climate-data/route.ts` - Climate data API - `src/app/dashboard/environment/page.tsx` - Environmental dashboard **Dependencies**: - GIS module (for mapping monitoring stations) **Business Logic**: - Data collected at specific locations with GPS coordinates - Time-series data enables trend analysis - Multiple measurement types per data point - Sensor data includes metadata in JSON format --- ## 8. GIS & Cartography **Status**: ⚠️ **Partially Implemented** **Purpose**: Provide interactive mapping and geospatial data visualization. **Key Features**: - Interactive maps using Leaflet - Multiple layer management - Layer types (Habitats, Species, Weather Stations, Water Points, Geology, Missions) - GeoJSON import/export - Spatial data visualization - Map-based filtering **Database Models**: - `MapLayer`: Map layer definitions **API Endpoints**: - `GET /api/map-layers` - List map layers - `POST /api/map-layers` - Create map layer **Pages**: - `/dashboard/maps` - Map interface **Entry Points**: - `src/app/api/map-layers/route.ts` - Map layer API - `src/app/dashboard/maps/page.tsx` - Map page - `src/components/map/leaflet-map.tsx` - Main map component - `src/components/map/map-filters.tsx` - Map filters - `src/components/map/map-charts.tsx` - Map visualizations **Dependencies**: - Species module (for species location mapping) - Mission module (for mission location mapping) - Environmental data module (for station mapping) **Current Status**: - ✅ Basic Leaflet integration - ✅ Map component structure - ✅ Layer management API - ⚠️ Full PostGIS integration pending - ⚠️ Advanced spatial queries pending - ⚠️ GeoJSON import/export pending **Future Enhancements**: - Complete PostGIS spatial queries - Advanced layer styling - Spatial analysis tools - Heat maps and density visualizations --- ## 9. Document Management **Status**: ✅ **Fully Implemented** **Purpose**: Manage scientific reports, administrative documents, raw data, and publications. **Key Features**: - Document upload and storage - Document versioning - Document types (Scientific Report, Administrative Report, Raw Data, Publication, Other) - Access control and permissions - Document association with missions - File metadata tracking **Database Models**: - `Document`: Document records with versioning support **API Endpoints**: - `GET /api/documents` - List documents - `GET /api/documents/[id]` - Get document details - `POST /api/documents` - Create document record - `PUT /api/documents/[id]` - Update document - `POST /api/documents/upload` - Upload document file **Pages**: - `/dashboard/documents` - Document list - `/dashboard/documents/new` - Upload document - `/dashboard/documents/[id]` - Document details - `/dashboard/documents/[id]/edit` - Edit document **Entry Points**: - `src/app/api/documents/route.ts` - Document API - `src/app/api/documents/upload/route.ts` - Upload API - `src/app/dashboard/documents/page.tsx` - Document UI - `src/components/document-preview.tsx` - Document preview **Dependencies**: - User module (document authors) - Mission module (documents can be linked to missions) **Business Logic**: - Documents support versioning (parent-child relationships) - Access controlled by `isPublic` flag and user permissions - File metadata (size, MIME type) tracked - Documents can be associated with missions **Current Limitations**: - ⚠️ File upload implementation pending (structure ready) - File storage location to be configured --- ## 10. Publication & Editing **Status**: ✅ **Fully Implemented** **Purpose**: Create and manage scientific publications, annual books, and reports. **Key Features**: - Publication management - Chapter organization - Publication workflow (draft, published) - Content management (Markdown/HTML) - Cover image support - Publication archiving **Database Models**: - `Publication`: Publication records - `PublicationChapter`: Chapter content **API Endpoints**: - `GET /api/publications` - List publications - `GET /api/publications/[id]` - Get publication details - `POST /api/publications` - Create publication - `PUT /api/publications/[id]` - Update publication **Pages**: - `/dashboard/publications` - Publication list - `/dashboard/publications/new` - Create publication - `/dashboard/publications/[id]` - Publication details - `/dashboard/publications/[id]/edit` - Edit publication - `/dashboard/publications/[id]/chapters/[chapterId]` - Chapter editor **Entry Points**: - `src/app/api/publications/route.ts` - Publication API - `src/app/dashboard/publications/page.tsx` - Publication UI **Dependencies**: - Document module (publications are a type of document) **Business Logic**: - Publications have chapters with ordering - Content stored as Markdown or HTML - Publication status controls visibility - Published date tracked --- ## 11. Notifications System **Status**: ⚠️ **Partially Implemented** **Purpose**: Provide user notifications for important events and updates. **Key Features**: - User notifications - Notification types (success, error, info, warning) - Read/unread status - Notification links - Notification settings (structure ready) **Database Models**: - `Notification`: User notifications **API Endpoints**: - `GET /api/notifications` - Get user notifications - `POST /api/notifications` - Create notification - `PUT /api/notifications/[id]/read` - Mark as read - `POST /api/notifications/read-all` - Mark all as read **Pages**: - `/dashboard/notifications` - Notification center - `/dashboard/notifications/settings` - Notification preferences **Entry Points**: - `src/app/api/notifications/route.ts` - Notification API - `src/app/dashboard/notifications/page.tsx` - Notification UI - `src/components/notifications/notification-bell.tsx` - Notification icon - `src/components/notifications/notification-provider.tsx` - Notification context **Current Status**: - ✅ Basic notification structure - ✅ API endpoints implemented - ✅ UI components created - ⚠️ Real-time updates pending - ⚠️ Notification preferences implementation pending (TODO in code) --- ## 12. Search & Analytics **Status**: ✅ **Fully Implemented** **Purpose**: Provide global search and analytics capabilities. **Key Features**: - Global search across entities - Advanced search with filters - Analytics and reporting - Dashboard visualizations - Data export (Excel, PDF) **API Endpoints**: - `GET /api/search` - Global search - `GET /api/analytics/overview` - Analytics data - `POST /api/export/excel` - Excel export - `POST /api/export/pdf` - PDF export - `POST /api/import` - Data import **Entry Points**: - `src/app/api/search/route.ts` - Search API - `src/app/api/analytics/overview/route.ts` - Analytics API - `src/app/api/export/excel/route.ts` - Excel export - `src/app/api/export/pdf/route.ts` - PDF export - `src/components/search/global-search.tsx` - Search UI - `src/components/search/advanced-search.tsx` - Advanced search - `src/components/export/export-buttons.tsx` - Export UI **Dependencies**: - All modules (search across all entities) **Export Libraries**: - `xlsx` for Excel export - `jspdf` for PDF export - `papaparse` for CSV import/export --- ## Module Dependencies Graph ``` User Management ↓ ├──→ HR (employees linked to users) ├──→ Missions (mission creators) ├──→ Documents (document authors) └──→ All modules (authentication) HR └──→ Missions (team members) Equipment └──→ Missions (equipment assignments) Missions ├──→ Species (observations) └──→ Documents (mission reports) Species └──→ GIS (location mapping) Environmental Data └──→ GIS (station mapping) All Modules └──→ Search & Analytics ``` --- ## Module Implementation Status Summary | Module | Status | Completion | |--------|--------|------------| | User Management | ✅ Complete | 100% | | HR | ✅ Complete | 100% | | Finance | ✅ Complete | 100% | | Equipment | ✅ Complete | 100% | | Missions | ✅ Complete | 100% | | Species | ✅ Complete | 100% | | Environmental Data | ✅ Complete | 100% | | Document Management | ✅ Complete | 95% (upload pending) | | Publications | ✅ Complete | 100% | | GIS & Cartography | ⚠️ Partial | 70% (PostGIS pending) | | Notifications | ⚠️ Partial | 80% (real-time pending) | | Search & Analytics | ✅ Complete | 100% | --- *All modules are production-ready with the noted exceptions. The platform provides a solid foundation for research center operations.*