Skip to content

Core Modules

IBEN-YAKOVE edited this page Jan 4, 2026 · 1 revision

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.

Research Platform Wiki

Getting Started

Architecture & Technology

Features & Modules

Development


Last Updated: January 2025

Clone this wiki locally