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 15, 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
- config/eslint - Delt ESLint konfigurasjon
Teknologi-stack
Section titled “Teknologi-stack”Frontend
Section titled “Frontend”- Next.js 15 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 dev
Spesifikke 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> # Mogleg å velge modus til seed, modus til høgre inneholder modus til venstre
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 formatering
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 dev
Databaser 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
.