echo-web-mono Oversikt
echo-web-mono er hovedmonorepoet som inneholder alle echo’s webapplikasjoner og tjenester. Dette er en moderne fullstack-løsning bygget med TypeScript og moderne webutviklingsteknologier.
Arkitektur
Section titled “Arkitektur”Monorepoet er organisert med Turbo og pnpm workspaces for optimal utvikleropplevelse og delt kode.
Applikasjoner (/apps)
Section titled “Applikasjoner (/apps)”| App | Beskrivelse | Teknologi | Port |
|---|---|---|---|
| web | Hovednettsiden til echo | Next.js 16, React 19 | 3000 |
| cms | Sanity Studio for innholdsstyring | Sanity.io | 3333 |
| api | Backend API for webapplikasjoner | Hono.js, Node.js | 8000 |
| docs | Denne dokumentasjonssiden | Astro, Starlight | 4321 |
Delte pakker (/packages)
Section titled “Delte pakker (/packages)”- db - Database schemas og migrasjoner (Drizzle ORM + PostgreSQL)
- sanity - Delte Sanity queries og utilities
- lib - Felles utilities og business logic
- email - E-post templates og sending
- seeder - Database seeding utilities
Teknologi-stack
Section titled “Teknologi-stack”Frontend
Section titled “Frontend”- Next.js 16 med App Router
- React 19 med server components
- Tailwind CSS for styling
- TypeScript med strict type checking
Backend
Section titled “Backend”- Hono (Node.js) for hovedbackend
- PostgreSQL database
- Drizzle ORM for database operasjoner
CMS og innhold
Section titled “CMS og innhold”- Sanity.io headless CMS
- Sanity Studio for innholdsredigering
DevOps og deployment
Section titled “DevOps og deployment”- Docker for containerisering
- Vercel for frontend deployment
- Fly.io for backend deployment
- Turbo for monorepo management
- pnpm for package management
Utviklingskommandoer
Section titled “Utviklingskommandoer”Kjøre alle tjenester
Section titled “Kjøre alle tjenester”# Start alle applikasjonerpnpm devSpesifikke applikasjoner
Section titled “Spesifikke applikasjoner”pnpm web:dev # Kun web (localhost:3000)pnpm cms:dev # Kun CMS (localhost:3333)pnpm db:dev # Drizzle Studio (localhost:4983)Database operasjoner
Section titled “Database operasjoner”pnpm db:setup # Full database resetpnpm db:migrate # Kjør migrasjonerpnpm db:generate # Generer nye migrasjonerpnpm seed # Seed database med testdatapnpm seed database --mode <prod | dev | test>Testing og kvalitet
Section titled “Testing og kvalitet”pnpm test:unit # Unit testspnpm test:e2e # End-to-end testspnpm lint # ESLint alle pakkerpnpm typecheck # TypeScript type checkingpnpm format # Prettier formateringSe Testing for detaljert guide om unit testing og E2E-testing.
Environment setup
Section titled “Environment setup”Krever
Section titled “Krever”- Node.js 22+ (anbefalt: bruk fnm/nvm)
- pnpm 9+
- Docker (for database)
- cenv (echo’s miljø-verktøy)
Første gangs oppsett
Section titled “Første gangs oppsett”# 1. Clone repositorygit clone git@github.com:echo-webkom/echo-web-mono.gitcd echo-web-mono
# 2. Kopier environment variablercp .env.example .env
# 3. Valider environmentcenv check
# 4. Installer dependenciespnpm install
# 5. Sett opp databasepnpm db:setup
# 6. Seed med testdatapnpm seed
# 7. Start utviklingpnpm devDatabaser og miljøer
Section titled “Databaser og miljøer”Lokalt miljø
Section titled “Lokalt miljø”- PostgreSQL kjører i Docker container
- Drizzle Studio for database management
- Test data via seeder package
Produksjon
Section titled “Produksjon”- Produksjon: Vercel + Sanity produksjon dataset
- Staging: Preview deployments med develop dataset
- Testing: Test miljø for automatiserte tester
Arbeidsflyt
Section titled “Arbeidsflyt”Development
Section titled “Development”- Opprett feature branch:
git switch -c fornavn/feature-beskrivelse - Start utviklingsmiljø:
pnpm dev - Gjør endringer i relevante apps/packages
- Test endringer:
pnpm lint && pnpm typecheck - Commit og push:
git push origin branch-navn - Opprett Pull Request på GitHub
Deployment
Section titled “Deployment”Alt blir deployed automatisk ved push til main.