Files
TimeTracker/docs/development/MODULE_STRUCTURE_ANALYSIS.md
T
Dries Peeters 083dd9f1f2 feat: Implement comprehensive module system with visibility controls
- Add centralized module registry system (ModuleRegistry) for managing
  module metadata, dependencies, and visibility across the application
- Create module helper utilities with decorators (@module_enabled) and
  helper functions for route protection and template access
- Add database migration (092) to add missing module visibility flags
  to settings and users tables for granular control
- Extend Settings and User models with additional module visibility
  flags for CRM, Finance, Tools, and Advanced features
- Implement admin module management UI for system-wide module
  enable/disable controls
- Add module checks to routes (calendar, contacts, deals, expenses,
  invoices, leads, custom_reports) to enforce visibility rules
- Update scheduled report service and report templates to respect
  module visibility settings
- Bump version to 4.8.0 in setup.py
- Add comprehensive documentation for module integration planning
  and implementation analysis
2025-12-29 14:13:32 +01:00

14 KiB

Module Structure Analysis

Date: 2025-01-27
Purpose: Visual representation of current module structure and integration points


Module Categories & Current State

📊 Module Distribution

Total Modules: 50+
├── Core Modules (6) - Always Enabled
├── Optional Modules (44+) - Can Be Disabled
│   ├── Time Tracking Features (7)
│   ├── CRM Features (4)
│   ├── Finance & Expenses (12)
│   ├── Inventory (1)
│   ├── Analytics (1)
│   ├── Tools & Data (3)
│   ├── Admin Features (8)
│   └── Advanced Features (8)

Current Module Inventory

🔵 Core Modules (Always Enabled)

Module ID Blueprint Routes Has Flag Status
auth auth_bp /login, /logout, /profile Active
main main_bp /dashboard Active
projects projects_bp /projects/* Active
timer timer_bp /timer/* Active
tasks tasks_bp /tasks/* Active
clients clients_bp /clients/* Active

Note: Core modules should remain always enabled as they form the foundation of the application.


⏱️ Time Tracking Features

Module ID Blueprint Settings Flag User Flag Status
calendar calendar_bp ui_allow_calendar ui_show_calendar Complete
project_templates project_templates_bp ui_allow_project_templates ui_show_project_templates Complete
gantt gantt_bp ui_allow_gantt_chart ui_show_gantt_chart Complete
kanban kanban_bp ui_allow_kanban_board ui_show_kanban_board Complete
weekly_goals weekly_goals_bp ui_allow_weekly_goals ui_show_weekly_goals Complete
issues issues_bp ui_allow_issues ui_show_issues Complete
time_entry_templates time_entry_templates_bp ⚠️ Missing Flags

Dependencies:

  • gantttasks
  • kanbantasks
  • project_templatesprojects

💼 CRM Features

Module ID Blueprint Settings Flag User Flag Status
quotes quotes_bp ui_allow_quotes ui_show_quotes Complete
contacts contacts_bp ⚠️ Missing Flags
deals deals_bp ⚠️ Missing Flags
leads leads_bp ⚠️ Missing Flags

Dependencies:

  • quotesclients
  • dealsclients
  • leadsclients
  • contactsclients

💰 Finance & Expenses

Module ID Blueprint Settings Flag User Flag Status
reports reports_bp ui_allow_reports ui_show_reports Complete
custom_reports custom_reports_bp ui_allow_report_builder ui_show_report_builder Complete
scheduled_reports scheduled_reports_bp ui_allow_scheduled_reports ui_show_scheduled_reports Complete
invoices invoices_bp ⚠️ Missing Flags
invoice_approvals invoice_approvals_bp ui_allow_invoice_approvals ui_show_invoice_approvals Complete
recurring_invoices recurring_invoices_bp ui_allow_recurring_invoices ui_show_recurring_invoices Complete
payments payments_bp ui_allow_payments ui_show_payments Complete
payment_gateways payment_gateways_bp ui_allow_payment_gateways ui_show_payment_gateways Complete
expenses expenses_bp ⚠️ Missing Flags
mileage mileage_bp ui_allow_mileage ui_show_mileage Complete
per_diem per_diem_bp ui_allow_per_diem ui_show_per_diem Complete
budget_alerts budget_alerts_bp ui_allow_budget_alerts ui_show_budget_alerts Complete

Dependencies:

  • invoicesprojects (required)
  • paymentsinvoices (required)
  • invoice_approvalsinvoices
  • recurring_invoicesinvoices
  • payment_gatewayspayments
  • expensesprojects (optional)
  • budget_alertsprojects

📦 Inventory

Module ID Blueprint Settings Flag User Flag Status
inventory inventory_bp ui_allow_inventory ui_show_inventory Complete

Dependencies: None (standalone module)


📈 Analytics

Module ID Blueprint Settings Flag User Flag Status
analytics analytics_bp ui_allow_analytics ui_show_analytics Complete

Dependencies: None (can work independently)


🛠️ Tools & Data

Module ID Blueprint Settings Flag User Flag Status
integrations integrations_bp ⚠️ Missing Flags
import_export import_export_bp ⚠️ Missing Flags
saved_filters saved_filters_bp ⚠️ Missing Flags

Note: These are grouped under ui_allow_tools and ui_show_tools but individual flags are missing.


⚙️ Admin Features

Module ID Blueprint Settings Flag User Flag Status
admin admin_bp ⚠️ Admin Only
permissions permissions_bp ⚠️ Admin Only
settings settings_bp ⚠️ Admin Only
audit_logs audit_logs_bp ⚠️ Admin Only
webhooks webhooks_bp ⚠️ Admin Only
custom_field_definitions custom_field_definitions_bp ⚠️ Admin Only
link_templates link_templates_bp ⚠️ Admin Only
expense_categories expense_categories_bp ⚠️ Admin Only

Note: Admin features are typically always visible to admins, but could benefit from flags for role-based access control.


🚀 Advanced Features

Module ID Blueprint Settings Flag User Flag Status
workflows workflows_bp ⚠️ Missing Flags
time_approvals time_approvals_bp ⚠️ Missing Flags
activity_feed activity_feed_bp ⚠️ Missing Flags
recurring_tasks recurring_tasks_bp ⚠️ Missing Flags
team_chat team_chat_bp ⚠️ Missing Flags
client_portal client_portal_bp ⚠️ Missing Flags
kiosk kiosk_bp ⚠️ Missing Flags
client_portal_customization client_portal_customization_bp ⚠️ Missing Flags

Dependencies:

  • time_approvalstimer
  • recurring_taskstasks
  • client_portalclients

Integration Points

Current Integration Flow

┌─────────────────────────────────────────────────────────────┐
│                    Application Startup                       │
│                    (app/__init__.py)                         │
└──────────────────────┬──────────────────────────────────────┘
                       │
                       ▼
        ┌──────────────────────────────┐
        │   Blueprint Registration     │
        │   (50+ blueprints)           │
        └──────────────┬───────────────┘
                       │
                       ▼
        ┌──────────────────────────────┐
        │   Navigation Rendering       │
        │   (base.html)                │
        │   - Hardcoded checks          │
        │   - Endpoint matching         │
        │   - Conditional rendering     │
        └──────────────┬───────────────┘
                       │
                       ▼
        ┌──────────────────────────────┐
        │   Route Execution             │
        │   - No module checks           │
        │   - Direct access             │
        └───────────────────────────────┘

Proposed Integration Flow

┌─────────────────────────────────────────────────────────────┐
│                    Application Startup                       │
│                    (app/__init__.py)                         │
└──────────────────────┬──────────────────────────────────────┘
                       │
                       ▼
        ┌──────────────────────────────┐
        │   Module Registry            │
        │   - Module definitions        │
        │   - Dependencies              │
        │   - Metadata                  │
        └──────────────┬───────────────┘
                       │
                       ▼
        ┌──────────────────────────────┐
        │   Blueprint Registration     │
        │   (with module metadata)     │
        └──────────────┬───────────────┘
                       │
                       ▼
        ┌──────────────────────────────┐
        │   Navigation Builder         │
        │   - Module-based menu         │
        │   - Dynamic visibility        │
        └──────────────┬───────────────┘
                       │
                       ▼
        ┌──────────────────────────────┐
        │   Route Protection            │
        │   - @module_enabled decorator  │
        │   - Automatic checks          │
        └───────────────────────────────┘

Module Dependency Graph

Core Modules (Always Enabled)
├── projects
│   ├── invoices (required)
│   ├── expenses (optional)
│   ├── tasks (optional)
│   └── time_entries (required)
│
├── clients
│   ├── quotes
│   ├── deals
│   ├── leads
│   └── contacts
│
└── tasks
    ├── kanban
    ├── gantt
    └── recurring_tasks

Finance Modules
├── invoices
│   ├── payments (required)
│   ├── invoice_approvals
│   └── recurring_invoices
│
└── payments
    └── payment_gateways

Time Tracking
├── timer
│   └── time_approvals
│
└── projects
    └── budget_alerts

Statistics

Flag Coverage

  • Modules with Settings Flags: 20 (40%)
  • Modules with User Flags: 20 (40%)
  • Modules Missing Flags: 30 (60%)

Categories Needing Attention

  1. CRM Features - 3 of 4 modules missing flags
  2. Advanced Features - 8 of 8 modules missing flags
  3. Tools & Data - 3 of 3 modules missing individual flags
  4. Admin Features - 8 of 8 modules missing flags (may be intentional)

Priority for Flag Addition

High Priority:

  • invoices (core finance feature)
  • expenses (core finance feature)
  • contacts, deals, leads (CRM features)
  • workflows, time_approvals (workflow features)

Medium Priority:

  • time_entry_templates
  • integrations, import_export, saved_filters (individual flags)
  • team_chat, activity_feed (collaboration features)

Low Priority:

  • Admin features (may remain admin-only)
  • client_portal_customization (admin feature)

Recommendations

  1. Immediate Actions:

    • Add flags for high-priority modules
    • Create module registry system
    • Add route protection for critical modules
  2. Short-term (1-2 weeks):

    • Complete flag coverage for all modules
    • Implement module registry
    • Refactor navigation
  3. Medium-term (1 month):

    • Admin UI for module management
    • Dependency validation
    • Comprehensive testing
  4. Long-term (Future):

    • Module plugin system
    • Module marketplace
    • Advanced permission system

Next Steps

  1. Review module inventory
  2. Identify missing flags
  3. Create module registry
  4. Add missing flags
  5. Implement route protection
  6. Refactor navigation
  7. Create admin UI

Last Updated: 2025-01-27