Teknologiavalinnat — Frontpics
Tämä sivu kuvaa nykyisen toteutuksen. Tarkista tarkat versiot package.json-tiedostoista ennen päivityksiä.
Runtime ja työkalut
| Kerros | Nykyinen valinta |
|---|---|
| Kieli | TypeScript 6 |
| Runtime | Node.js 24+ repojuuressa |
| Pakettienhallinta | pnpm 11 |
| Monorepo | Turborepo 2 |
| Muotoilu | Prettier ja Tailwind-plugin |
| Linttaus | oxlint |
| Validointi | Zod packages/shared-paketissa |
Backend
| Kerros | Nykyinen valinta |
|---|---|
| Framework | NestJS 11 |
| HTTP-adapteri | Fastify 5 |
| ORM | Prisma 7 |
| Tietokanta | PostgreSQL 18 + PostGIS 3.6 |
| Jono | BullMQ + Redis |
| Cache/asetukset | Redis |
| Auth | Passport JWT, Nest JWT, JOSE-apurit |
| Sähköposti | Nodemailer/SMTP (Oma sähköpostipalvelin) |
| Kuvankäsittely | Sharp |
| Objektitallennus | AWS SDK v3 S3-client R2/S3-yhteensopiville backendeille |
| Lokitus | Pino/NestJS Pino |
Backendin TypeScript käyttää module: NodeNext -asetusta.
Frontend
| Kerros | Nykyinen valinta |
|---|---|
| Framework | Next.js 16.2 App Router |
| React | React 19 |
| Tyylit | Tailwind CSS 4 |
| Server state | TanStack Query 5 |
| Lomakkeet | React Hook Form ja paikalliset controlled-lomakkeet |
| Animaatiot | Framer Motion |
| Kartat | Leaflet |
| Ikonit | Lucide React |
| Ilmoitukset | Sonner |
| Kuvametadata | exifr selaimen latausvirrassa |
Webin TypeScript käyttää bundler-tyylistä moduuliresoluutiota.
Tietokanta ja skeema
Prisma-skeema sijaitsee:
packages/database/prisma/schema.prisma
Yleisiä huomioita:
Userkäyttää kenttiäfirstNamejalastName, eidisplayName.ImageFilekäyttää kenttiäcdnUrljafileSizeBytes, eiurltaisizeBytes.- enum-arvot ovat lowercase snake_case -muotoa.
Tallennus
Tallennus on ajonaikaisesti valittava:
r2Cloudflare R2:lle;s3S3-yhteensopivalle tallennukselle;localkehitykseen ja allekirjoitettuihin paikallisiin latauksiin.
Aktiivinen backend tallennetaan Redisiin avaimella config:storage_backend.
Dokumentaatio
Dokumentaatio käyttää Docusaurus 3:a hakemistossa apps/docs.
pnpm --filter docs build
pnpm --filter @frontpics/web build
Web-build kopioi apps/docs/build-hakemiston apps/web/public/docs-hakemistoon.
Tarkistukset
Koodimuutosten jälkeen aja muuttuneiden sovellusten tyyppitarkistus:
pnpm --filter @frontpics/api exec tsc --noEmit
pnpm --filter @frontpics/web exec tsc --noEmit
pnpm --filter @frontpics/shared exec tsc --noEmit
Lisää testejä erityisesti, kun muutos koskee jaettua käyttäytymistä, API-sopimuksia, ostoja, tilityksiä, authia, tallennusta tai kuvankäsittelyä.
Infrastruktuuri
Tuotanto käyttää:
- Docker Composea;
- Nginx reverse proxya;
- blue/green-sovelluspinoja;
- jaettua PostgreSQL- ja Redis-infraa;
- valinnaista GitHub Actions -julkaisua.
main-haaraan puskeminen voi käynnistää CI/CD-putken, joten älä puske automaattisesti ilman erillistä pyyntöä.