feat: Sprint 3 frontend dashboards with Alpine.js + Jinja2

- Login page with JWT auth and role-based redirect
- CS Dashboard: KPI cards, priority breakdown, recent tickets
- FM Dashboard: tech workload, aging analysis, emergency alerts
- CEO Dashboard: executive KPIs, charts, risk indicators
- All Issues: filterable/sortable ticket table with pagination
- Create Issue: form with category tree, property/unit selector, photo uploads
- Issue Detail: full timeline, photo gallery, SLA status, action modals
- Role-based nav bar: CS/FM/Executive links adapt to user role
- Base template: shared Alpine.js app state, toast notifications, loading overlay
This commit is contained in:
root
2026-07-23 19:01:26 +00:00
parent bc23338bc1
commit 9aa7971a28
11 changed files with 2216 additions and 1 deletions
+2 -1
View File
@@ -12,7 +12,7 @@ from fastapi.staticfiles import StaticFiles
from app.core.config import settings
from app.core.database import Base, async_session_factory, engine
from app.routers import auth, health, tickets, whatsapp
from app.routers import auth, health, pages, tickets, whatsapp
from app.services.seed import seed_categories, seed_units, seed_users
logger = logging.getLogger(__name__)
@@ -61,3 +61,4 @@ app.include_router(health.router)
app.include_router(auth.router)
app.include_router(whatsapp.router)
app.include_router(tickets.router)
app.include_router(pages.router)