mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-05-19 12:50:11 -05:00
083dd9f1f2
- 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
14 KiB
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:
gantt→taskskanban→tasksproject_templates→projects
💼 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:
quotes→clientsdeals→clientsleads→clientscontacts→clients
💰 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:
invoices→projects(required)payments→invoices(required)invoice_approvals→invoicesrecurring_invoices→invoicespayment_gateways→paymentsexpenses→projects(optional)budget_alerts→projects
📦 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_approvals→timerrecurring_tasks→tasksclient_portal→clients
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
- CRM Features - 3 of 4 modules missing flags
- Advanced Features - 8 of 8 modules missing flags
- Tools & Data - 3 of 3 modules missing individual flags
- 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_templatesintegrations,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
-
Immediate Actions:
- Add flags for high-priority modules
- Create module registry system
- Add route protection for critical modules
-
Short-term (1-2 weeks):
- Complete flag coverage for all modules
- Implement module registry
- Refactor navigation
-
Medium-term (1 month):
- Admin UI for module management
- Dependency validation
- Comprehensive testing
-
Long-term (Future):
- Module plugin system
- Module marketplace
- Advanced permission system
Next Steps
- ✅ Review module inventory
- ✅ Identify missing flags
- ⏳ Create module registry
- ⏳ Add missing flags
- ⏳ Implement route protection
- ⏳ Refactor navigation
- ⏳ Create admin UI
Last Updated: 2025-01-27