Skip to main content

Adapter Manifest: acme-vue-encore

The acme-vue-encore adapter manifest (adapters/acme-vue-encore/manifest.yaml) is the canonical declaration of the shipped adapter. It conforms to contract/schemas/adapter-manifest.schema.yaml at version 1.1.0.

Identity

FieldValue
Nameacme-vue-encore
Display nameAcme Vue + Encore (PrimeVue, rauthy)
Version0.1.0
Schema version1.1.0

Stack

ComponentTechnology
LanguageTypeScript
RuntimeNode 24
BackendEncore.ts
FrontendVue 3 (Composition API, script setup)
State managementPinia
Design systemPrimeVue
DatabasePostgreSQL (Encore SQLDatabase, tagged-template SQL, no ORM)
AuthOpenID Connect via rauthy

Capabilities

CapabilitySupported
Single stackYes
Dual stackYes
BFF patternYes
Token authYes
Session authNo
API key authNo
Module systemYes
Direct SQLYes
ORM-basedNo
API proxyYes
Audit loggingYes
File uploadsNo
Background jobsNo
RealtimeNo
Email notificationsNo

Supported auth methods

MethodDriverDescription
OIDCrauthyAuthorization code flow with PKCE (S256). Tokens validated against issuer JWKS; roles/groups claims map to application roles. RP-initiated logout via end_session_endpoint.
MockmockBuilt-in mock driver for development and test only.

Commands

CommandValue
installnpm install
compilenpm run build
testnpm test && npm --prefix apps/api test
lintnpm run lint
devnpm run dev
format_checknpm run format:check
type_checknpm run typecheck && npm run typecheck:api
feature_verifynpm run typecheck:api then npm test

Directory conventions

ConventionPath pattern
API serviceapps/api/{resource}/service.ts
API controllerapps/api/{resource}/{resource}.ts
API routeapps/api/{resource}/encore.service.ts
API modelapps/api/{resource}/model.ts
API typesapps/api/{resource}/types.ts
API testapps/api/{resource}/{resource}.test.ts
API middlewareapps/api/lib/{name}.ts
UI viewapps/{stack}/src/views/{PageName}View.vue
UI storeapps/{stack}/src/stores/{resource}.store.ts
UI route configapps/{stack}/src/router/index.ts
UI testapps/{stack}/src/views/{PageName}View.test.ts
UI componentapps/{stack}/src/components/{Name}.vue
Migrationapps/api/db/migrations/{n}_{name}.up.sql
Env fileapps/api/.env.example

The {stack} placeholder refers to the Vue SPA app (web or web-internal); the backend is always apps/api.

Profiles

ProfileVariantAuth driverDefault modules
minimal (default)singlemocknone
publicsingle-publicrauthynone
internalsingle-internalrauthyuser-management
dualdualrauthynone

Governance sub-envelope

The adapter declares a governance sub-envelope (introduced at schema 1.1.0):

  • Max tier: tier2
  • File write scope: apps/**, packages/**, public/**, internal/**, package.json, .env.*.example
  • File write denied: .env, **/keys/**, **/.git/**, node_modules/**
  • Scaffold execution: sandbox-required isolation.

Validation invariants

IDDescriptionTypeSeverity
INV-001No ORM imports (typeorm, prisma, sequelize, drizzle-orm)grep-absenterror
INV-002No raw dynamic SQL (db.rawQuery/db.rawExec)grep-absenterror
INV-003No console.log in shipped codegrep-absentwarning
INV-004No explicit any typesgrep-absentwarning
INV-005Lint passes with zero warningscommand-succeedserror

Dual-stack topology

The dual topology produces two independent Encore applications:

VariantDirectoryAPIWebPort (API)Port (Web)Data access
publicpublic/apps/apiapps/web40005173proxy
internalinternal/apps/apiapps/web-internal40005174direct

Each variant is a complete, standalone Encore app with its own encore.app, database, and deployment boundary.