Skip to content

Latest commit

 

History

History
72 lines (61 loc) · 2.47 KB

File metadata and controls

72 lines (61 loc) · 2.47 KB

OmniDesk Roadmap

This roadmap is optimized for a standout portfolio project: tenant isolation, RBAC, audit logs, CI/CD, and real-world features.

Phase 0 — Bootstrap (DONE)

  • Clean Architecture solution structure
  • Swagger + Serilog + /health
  • Docker compose (Postgres + Redis)
  • GitHub Actions CI
  • Basic integration test plumbing

Phase 1 — Auth + Organizations + Tenancy + RBAC (IN PROGRESS)

  • ASP.NET Identity (GUID)
  • JWT auth endpoints
  • Organization + Membership model
  • Tenant resolution via X-Org-Id
  • RBAC policies: Viewer/Member/Admin/Owner
  • Org members endpoints (Admin list, Owner update role)
  • Testcontainers + Respawn integration tests
  • Improve tenant error behavior to return 400 for missing/mismatch header (instead of 403)
  • Add seed/demo data endpoint for local dev (optional)

Phase 2 — Helpdesk Domain Module: Tickets (NEXT)

Entities

  • Ticket (OrganizationId, Title, Description, Status, Priority, CategoryId?, CreatedByUserId, AssignedToUserId?)
  • TicketComment (OrganizationId, TicketId, Body, CreatedByUserId)
  • Category (OrganizationId, Name)

Endpoints

  • GET /tickets (paged + filters)
  • POST /tickets (Member+)
  • GET /tickets/{id}
  • PATCH /tickets/{id} (Member+ with rules; Admin can assign/close)
  • POST /tickets/{id}/comments (Member+)
  • GET /categories (Viewer+)
  • POST /categories (Admin+)

Tests

  • Cross-tenant data isolation (cannot access other org’s tickets)
  • Viewer cannot create/update
  • Member can create ticket and comment
  • Admin can assign/close tickets

Phase 3 — Audit Logs (Planned)

  • EF Core SaveChangesInterceptor to write audit logs
  • GET /audit endpoint (Admin+)
  • Tests: audit entry created on create/update/delete

Phase 4 — Redis Cache + Rate Limiting (Planned)

  • Redis caching for ticket list/details (per-tenant cache keys)
  • Invalidation on writes
  • Redis rate limiting middleware
  • Tests: cache isolation includes orgId in key

Phase 5 — Background Jobs (Planned)

  • Hangfire (Postgres storage)
  • Recurring nightly org ticket summary job
  • Admin endpoint: POST /jobs/run-summary

Phase 6 — Frontend (Next.js) (Planned)

  • Auth pages
  • Org selector (stores active orgId -> sends X-Org-Id)
  • Tickets UI
  • Admin pages: members + audit logs
  • Basic UX polish + demo video

Quality/Polish Goals (Ongoing)

  • Improve error responses (ProblemDetails)
  • API docs clarity
  • Consistent DTOs
  • Deployment plan (Render/Fly/Railway + Vercel)
  • Demo data + demo credentials