-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdefault-stack.yaml
More file actions
41 lines (39 loc) · 1.72 KB
/
default-stack.yaml
File metadata and controls
41 lines (39 loc) · 1.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
name: fastapi-sqlalchemy-dishka-vue
backend:
language: python
runtime: python-3.12+
framework: fastapi
orm: sqlalchemy-2.x
migrations: alembic
dependency_injection: dishka
architecture:
transport: controllers translate HTTP only
application: services own use cases
transactions: unit-of-work abstraction
persistence: repositories behind unit of work
contracts: dedicated DTO layer
errors: explicit application and domain exceptions
observability: structured logging
guardrails:
- Controllers should call services, not repositories directly.
- Services should not leak ORM sessions into outer layers.
- DTOs should not be replaced with raw ORM models in API boundaries.
- Transaction boundaries should be explicit and testable.
frontend:
language: typescript
framework: vue-3
state_management: pinia
styling: existing-design-system
data_access: composable-driven-typed-clients
forms: composable-driven
validation: schema-driven
architecture:
ui: prefer existing components and slots before custom primitives
data_access: centralize typed API access in composables and feature-level data-access modules
composition: keep route views and screen-level entry components thin and push reusable behavior into composables and stores
typing: strong static typing at API, props, emits, and store boundaries
state: use Pinia for shared cross-feature state, not screen-local transient state
guardrails:
- Keep fetch calls and API-client usage out of leaf presentation components.
- Avoid Pinia stores for local state that belongs in a component or composable.
- Keep browser-only behavior and environment-specific integrations explicit at the feature boundary.