Uno API Backend
uno er backend-applikasjonen i echo-web-mono. Den er skrevet i Go og brukes av web-applikasjonen og andre interne tjenester.
For et mer detaljert arkitekturdypdykk, se Uno Arkitektur.
Teknologi
Section titled “Teknologi”Hovedteknologier
Section titled “Hovedteknologier”- Go - programmeringsspråk for backend
- Chi - HTTP routing
- PostgreSQL - database
- sqlx - utvidelse av
database/sqlfor enklere databaseinteraksjon - Swag - Swagger/OpenAPI-generering
Arkitektur
Section titled “Arkitektur”Uno følger en DDD/hexagonal struktur:
domain/- kjernelogikk, modeller og porterhttp/- router, routes, DTO-er og handlersinfrastructure/- implementasjoner for database, logging og eksterne integrasjonerbootstrap/- kobler sammen avhengighetercmd/- entrypoints (web,cron,worker)
Struktur
Section titled “Struktur”apps/uno/├── bootstrap/ # Sette opp applikasjoner├── cmd/│ ├── web/ # HTTP API entrypoint│ ├── cron/ # Cron jobs│ └── worker/ # Bakgrunnsjobber├── config/ # Miljø og konfigurasjon├── domain/ # Domene, porter og services├── http/ # Router, routes, handlers og DTO-er├── infrastructure/ # Postgres, logging, telemetry, eksterne systemer├── docs/ # Swagger/OpenAPI dokumentasjon├── scripts/ # Nyttige scripts└── testutil/ # Hjelpefunksjoner for testerLokale kommandoer
Section titled “Lokale kommandoer”Kjør fra rotmappen:
# Start uno i dev-moduspnpm --filter=uno dev
# Kjør testerpnpm --filter=uno test
# Tester med coveragepnpm --filter=uno test:coverage
# Installer Go-verktøy (air, swag, mockery)pnpm --filter=uno tools:install
# Generer swagger og mockspnpm --filter=uno swag:initpnpm --filter=uno mocks:generateAPI og miljø
Section titled “API og miljø”- API kjører lokalt på port
8000(styrt avUNO_API_PORT) - Web bruker typisk
NEXT_PUBLIC_API_URL=http://localhost:8000 - Uno bruker PostgreSQL lokalt via Docker-oppsettet i monorepoet
Vanlige oppgaver
Section titled “Vanlige oppgaver”Legge til en ny route
Section titled “Legge til en ny route”- Legg route i
apps/uno/http/routes/... - Implementer handler i
apps/uno/http/handler/... - Kall service-lag i
apps/uno/domain/service/... - Implementer evt. ny port/adapter i
apps/uno/domain/portogapps/uno/infrastructure/...
Oppdatere API-dokumentasjon
Section titled “Oppdatere API-dokumentasjon”pnpm --filter=@echo-webkom/uno swag:initKilder
Section titled “Kilder”apps/uno/README.md- Chi dokumentasjon
- sqlx dokumentasjon
- Swag dokumentasjon