Skip to main content

Teknologiavalinnat — Frontpics

Tämä sivu kuvaa nykyisen toteutuksen. Tarkista tarkat versiot package.json-tiedostoista ennen päivityksiä.

Runtime ja työkalut

KerrosNykyinen valinta
KieliTypeScript 6
RuntimeNode.js 24+ repojuuressa
Pakettienhallintapnpm 11
MonorepoTurborepo 2
MuotoiluPrettier ja Tailwind-plugin
Linttausoxlint
ValidointiZod packages/shared-paketissa

Backend

KerrosNykyinen valinta
FrameworkNestJS 11
HTTP-adapteriFastify 5
ORMPrisma 7
TietokantaPostgreSQL 18 + PostGIS 3.6
JonoBullMQ + Redis
Cache/asetuksetRedis
AuthPassport JWT, Nest JWT, JOSE-apurit
SähköpostiNodemailer/SMTP (Oma sähköpostipalvelin)
KuvankäsittelySharp
ObjektitallennusAWS SDK v3 S3-client R2/S3-yhteensopiville backendeille
LokitusPino/NestJS Pino

Backendin TypeScript käyttää module: NodeNext -asetusta.

Frontend

KerrosNykyinen valinta
FrameworkNext.js 16.2 App Router
ReactReact 19
TyylitTailwind CSS 4
Server stateTanStack Query 5
LomakkeetReact Hook Form ja paikalliset controlled-lomakkeet
AnimaatiotFramer Motion
KartatLeaflet
IkonitLucide React
IlmoituksetSonner
Kuvametadataexifr selaimen latausvirrassa

Webin TypeScript käyttää bundler-tyylistä moduuliresoluutiota.

Tietokanta ja skeema

Prisma-skeema sijaitsee:

packages/database/prisma/schema.prisma

Yleisiä huomioita:

  • User käyttää kenttiä firstName ja lastName, ei displayName.
  • ImageFile käyttää kenttiä cdnUrl ja fileSizeBytes, ei url tai sizeBytes.
  • enum-arvot ovat lowercase snake_case -muotoa.

Tallennus

Tallennus on ajonaikaisesti valittava:

  • r2 Cloudflare R2:lle;
  • s3 S3-yhteensopivalle tallennukselle;
  • local kehitykseen 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öä.