How boredmayonnaise/virtus-website works
This is a creative-agency site paired with an operations workspace and client portal. The main supported flow is public inquiry submission: the brief API applies rate limits, calculates a quote, and records an opportunity. Staff-facing operations, client project review, and public tracking are distinct product areas. The source index establishes several route-to-service dependencies, but many page and route implementations were not sampled, so those links are omitted rather than inferred.
Main entry points: clientPortal.ts Portal services · route.ts Inquiry submission · ClientDashboard.tsx Client dashboard · index.ts Agency data store
Components 29
Public site
- Inquiry submission
src/app/api/brief/route.ts - Quote calculation
src/lib/quotationEngine.ts - Site content
src/data/siteData.ts
Agency operations
- Operations workspace
src/components/dashboard - Pipeline view
src/components/dashboard/PipelineView.tsx - Client management
src/components/dashboard/ClientsView.tsx - Projects and tasks
src/components/dashboard/ProjectsTasksView.tsx - Accounting and invoices
src/components/dashboard/AccountingView.tsx - Contracts
src/components/dashboard/ContractsView.tsx - Other operations
src/components/dashboard
Client portal
- Client dashboard
src/components/client/ClientDashboard.tsx - Revision requests
src/components/client/RevisionDialog.tsx - Portal API
src/app/api/client - Project tracking
src/app/api/track/route.ts - Dashboard UI helpers
src/components/client/dashboard
Application services
- Agency data store
src/db/index.ts - Portal services
src/lib/clientPortal.ts - Staff authentication
src/lib/staffAuth.ts - Staff accounts
src/lib/staffStore.ts - Signed sessions
src/lib/session.ts - Settings storage
src/lib/settingsStore.ts - Portal tokens
src/lib/tokens.ts - Neon database access
src/lib/neon.ts - Rate limiting
src/lib/rateLimit.ts - API helpers
src/lib/apiUtil.ts - Shared icon set
src/components/icons/Icon.tsx
Other components
- Visitor
- Agency staff
- Agency client
Connections 23
- Visitor → Inquiry submission: submits inquiry
src/app/api/brief/route.ts - Inquiry submission → Rate limiting: checks limits
src/app/api/brief/route.ts - Inquiry submission → Quote calculation: calculates quote
src/app/api/brief/route.ts - Inquiry submission → Agency data store: records opportunity
src/app/api/brief/route.ts - Agency staff → Operations workspace: uses workspace
- Agency client → Client dashboard: reviews project
- Client dashboard → Portal services: uses portal data
src/components/client/ClientDashboard.tsx - Client dashboard → Revision requests: opens revisions
src/components/client/ClientDashboard.tsx - Client dashboard → Dashboard UI helpers: renders dashboard
src/components/client/ClientDashboard.tsx - Revision requests → Shared icon set: renders icons
src/components/client/RevisionDialog.tsx - Portal API → Portal services: uses portal services
src/app/api/client/revisions/route.ts - Portal API → Rate limiting: checks limits
src/app/api/client/revisions/route.ts - Portal services → Agency data store: uses agency data
src/lib/clientPortal.ts - Portal services → Settings storage: checks demo access
src/lib/clientPortal.ts - Portal services → Portal tokens: issues and verifies
src/lib/clientPortal.ts - Portal services → Neon database access: queries database
src/lib/clientPortal.ts - Staff authentication → Signed sessions: verifies sessions
src/lib/staffAuth.ts - Staff authentication → Staff accounts: loads staff account
src/lib/staffAuth.ts - Staff authentication → Settings storage: checks invite settings
src/lib/staffAuth.ts - Pipeline view → Agency data store: uses data store
src/components/dashboard/PipelineView.tsx - Client management → Agency data store: uses data store
- Project tracking → Rate limiting: checks limits
src/app/api/track/route.ts - Project tracking → Operations workspace: updates tracking view