7.4 KiB
policy-ui — codebase bundle (for LLMs / handoff)
Single-document summary of the policy-ui Nuxt app: stack, API wiring, layout, main routes, composables, and data. Paste this into Perplexity, ChatGPT, or another tool when you need context without the full repo.
Product intent (short)
Brokerage / agency management workstation UI (Central America / Colombia–oriented domain): quotes, sales pipeline, onboarding (solicitud, emissions), cartera (customers, policies, book), customer service (support, claims, collections, renewals), workstations, AI tools, settings. Admin-first structure; many areas use mock data until backends are connected.
Stack
| Piece | Notes |
|---|---|
| Nuxt | ^4.3.1 (compatibilityDate: 2026-02-25) |
| Vue | ^3.5.28 |
| @nuxt/ui | ^4.5.0 (Nuxt UI 4) |
| Tailwind | ^4.2.1 (app/assets/css/main.css) |
| nuxt-open-fetch | ^0.13.8 — typed API clients from OpenAPI |
| jspdf | PDF generation |
| zod | validation |
Scripts: dev, build, generate, preview, postinstall → nuxt prepare.
Dev server: port 3737, host localhost (nuxt.config.ts).
API clients (nuxt-open-fetch)
| Client | Base URL | Schema URL |
|---|---|---|
customer |
http://localhost:4000/api/v1 |
http://localhost:4000/api/openapi |
policy |
http://localhost:4001/api/v1 |
http://localhost:4001/api/openapi |
providers |
http://localhost:4002/api/v1 |
http://localhost:4002/api/openapi |
tasks |
http://localhost:8080/api/v1 |
http://localhost:8080/openapi3.json |
Usage: useNuxtApp().$customer, $policy, $providers, $tasks (generated from schemas when services run).
Entry & layout
app/app.vue: wraps app inUApp→NuxtLayout→NuxtPage.- Default layout
app/layouts/default.vue: top bar (LayoutAppTopBar), collapsible sidebar (Sales, Operations, optional Workstations/AI), main content area. Sidebar groups/feature flags viauseSidebarFeatures(localStorage: workstations, AI tools, leads hub).
Directory map (app/)
| Path | Role |
|---|---|
pages/ |
File-based routes (~73 Vue pages) |
components/ |
UI including layout/, quotes/, etc. |
composables/ |
Shared logic (~30 composables) |
layouts/ |
default.vue shell |
assets/css/ |
Global styles / Tailwind |
types/ |
TS types (form catalog, quotes, branding, roles, …) |
data/ |
JSON catalogs, mocks, seed data |
utils/ |
Helpers (e.g. useLocalStorageRef) |
middleware/ |
Route middleware if present |
plugins/ |
Client/server plugins |
Public: public/ including public/forms/ for static PDF assets referenced by the forms catalog.
Routes (by area)
Paths are under app/pages/ unless noted.
- Home / shell:
/(index.vue— large role-configurable dashboard),home2.vue,calendar.vue,account.vue - Quotes:
/quotes(mission-control style hub),/quotes/mission-control,/quotes/new,/quotes/compare, line flows:/quotes/life,/quotes/health,/quotes/auto,/quotes/general-risk,/quotes/custom - Sales / onboarding:
/onboarding(pipeline),/sales/quick-lead,/sales/leads,/registration/client,/registration/policy,/onboarding/solicitud,/onboarding/emissions,/onboarding/policy-upload/new, potential/active leads underonboarding/ - Cartera:
/customers,/customers/new,/customers/[id],/policies,/policies/new,/policies/[id],/policies/groups,/policies/book,/policies/app/[application_id] - Customer service:
/support,/support/[id],/support/collectivos,/claims,/claims/[id],/claims/intake/[token](standalone layout),/claims/settings,/collections,/renewals,/renewals/[id] - Workstation:
/workstation/*(collectivos, collections, claims, renewals, customer-service, facturacion) - AI tools:
/ai-tools/*(sales-factory, policy-comparator, email-writer, case-assistant) - Providers:
/providers,/providers/new,/providers/[provider_id] - Tasks:
/tasks,/tasks/[id] - Analysis:
/analysis - Settings:
/settingsand children (organization, agents, providers, permissions, forms library, quote-requests, support-routing, customer-attention, profile-layouts, alerts, appearance, personalization, referral-channels)
Many pages set definePageMeta({ ssr: false }) where client-only state or APIs are assumed.
Composables (inventory)
| Composable | Purpose (brief) |
|---|---|
useAppShellLayout |
Sidebar collapse / layout |
useAppTheme |
Theme switching |
useBrokerageBranding |
Tenant branding in chrome |
useSidebarFeatures |
Toggle sidebar sections (workstations, AI, leads) |
useSuperAdmin |
Superadmin gate for org settings |
usePageTitle |
Document title |
useFormsCatalog |
Filter form catalog JSON, field groups, indexes |
useEmissionsQueue |
Local queue for emissions review |
useQuoteSession |
Comparative quote view model / session |
useSalesPipeline |
Deal pipeline stages for quote/onboarding flows |
useCustomerProfileVault |
Local profile / KYC-oriented draft |
usePdfFieldMappings |
PDF field mapping JSON |
useProviderContactEmails |
Carrier outbound email roles |
useClientRegistrationModel / usePolicyRegistrationModel |
Registration payloads |
useLifeQuoteDraft / useHealthQuoteDraft / useAutoQuoteDraft |
Line-specific quote drafts |
useDashboardHomeWidgets |
Home dashboard widgets + role presets |
useWelcomeDashboard |
Welcome KPIs / home content |
useSupportTickets |
Support ticket mock/state |
useCustomerAttention |
Customer attention tiers |
useProfileLayouts |
Profile section layouts |
useReferralChannels |
Referral sources |
useQuickLeads |
Quick lead capture |
useClientFavorites |
Starred clients |
useColectivos |
Collectivos data/helpers |
useAnalytics |
Analytics helpers |
useAlertConfig |
Alert configuration |
useQuoteRequestEmailEnabled |
Quote-request email toggle |
Data & catalogs
forms-catalog.json— PDF/form rows (insurer, sub-ramo, persona, paths).form-field-groups.json— Field groups linked to catalog matching.pdf-field-mappings.json— PDF field name mappings.taxonomy.ts— Slugs / taxonomy for routing.roles-seguros.ts— Seed roles for permissions UI.- Mocks:
mock-customers,mock-claims,mock-support,mock-renewals,quotes-overview.mock,mock-analytics, etc.
Scripts (repo)
scripts/import-forms.mjs— pipeline to generate/refresh form catalog from sources (when used).
Conventions worth knowing
- i18n: UI copy is largely English in chrome; Spanish appears in some flows and labels; full translation is planned.
- Mock vs API: Several list views try API then fall back to mocks (e.g. policies); others are mock-only.
- OpenAPI: Clients expect local services on the ports above; without them, calls fail unless mocked.
Files this bundle was generated from
package.jsonnuxt.config.ts- Glob:
app/pages,app/composables,app/types,app/data
Regenerate or extend this file when architecture changes significantly.