-
-
Notifications
You must be signed in to change notification settings - Fork 0
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.
The platform is organized into 10 major functional modules, each handling a specific domain of the research center's operations.
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)
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
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)
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
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
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
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
Status:
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
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
isPublicflag 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
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
Status:
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)
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:
-
xlsxfor Excel export -
jspdffor PDF export -
papaparsefor CSV import/export
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 | 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 | 70% (PostGIS pending) | |
| Notifications | 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.
Last Updated: January 2025