Studiu de caz / 05

Platformă E-Commerce Modulară

O platformă e-commerce complet modulară, construită ca monorepo Turborepo cu un backend Fastify, un storefront Astro (insule React), un panou de administrare React + Vite și trei pachete partajate - cu RBAC dinamic, auto-înregistrare a rutelor bazată pe convenții și procesare de job-uri în fundal.

Statut
Proiect selectat
Contextul sistemului
TypeScript, Turborepo, Fastify, Astro
Sursă
Repository public

01 / Comportamentul sistemului

Dovadă interactivă

Un mecanism tehnic specific proiectului, bazat pe arhitectura și contextul de implementare înregistrate.

Dovadă interactivăPlatformă E-Commerce Modulară
Fastify backend
Astro storefront
React admin
Shared UI
Utilities
Configuration
PostgreSQLRedis / BullMQTurborepo graph

Context și intenție

Acest monorepo abordează direct problema de scalare care apare când un proiect depășește arhitectura cu o singură aplicație. Gestionează șase pachete interdependente cu graficul de taskuri și caching-ul Turborepo - un rebuild complet care dura peste 4 minute a scăzut sub 60 de secunde după prima rulare care a populat cache-ul.

Backend-ul Fastify folosește Zod pentru siguranța tipurilor la compilare și validare la runtime pe fiecare rută. Un utilitar autoRegisterRoutes scanează directorul modules/ la pornire și importă dinamic fiecare fișier *.route.ts - adăugarea unui modul nou presupune crearea structurii standard de foldere, fără niciun import manual sau înregistrare.

03 / Înregistrarea arhitecturii

Arhitectură

O interpretare structurată a arhitecturii înregistrate pentru acest proiect.

Înregistrarea arhitecturiiPlatformă E-Commerce Modulară
frontend
backend
admin
@modular/ui
@modular/utils
@modular/config
Citește înregistrarea completă a arhitecturii

Monorepo-ul este structurat în trei aplicații și trei pachete partajate:

Aplicații: • backend - API Fastify cu structură modulară de rute, validare Zod, autentificare JWT și RBAC dinamic • frontend - Storefront Astro cu insule React pentru componente interactive (coș, checkout) • admin - Panou de administrare React + Vite pentru managementul produselor, comenzilor și utilizatorilor

Pachete: • @modular/ui - Bibliotecă partajată de componente UI cu tematizare prin atribute de date • @modular/utils - Funcții utilitare reutilizabile în toate aplicațiile • @modular/config - Configurare centralizată incluzând conexiunile la baza de date și variabilele de mediu

Backend-ul urmează o convenție modulară strictă: src/modules/<nume>/controller, service, route, validator. Rutele sunt auto-descoperite și montate la pornire. Prisma gestionează accesul la baza de date cu migrări și seeding.

Cum este structurat sistemul

Sistemul RBAC dinamic generează automat permisiuni CRUD pentru fiecare model Prisma (product:create, product:read, etc.). Mapările rol-permisiune sunt stocate în baza de date, nu în cod - acordarea permisiunilor este o operație de bază de date, fără niciun deployment necesar. Un decorator preHandler din Fastify aplică permisiunile pe fiecare rută protejată.

Storefront-ul pentru clienți este construit cu Astro, randând HTML static implicit și hidratând insule React doar acolo unde este nevoie de interactivitate. Paginile de listare a produselor sunt complet statice (rapide, cacheabile, prietenoase cu SEO), în timp ce coșul și checkout-ul sunt componente React hidratate.

05 / Aspecte selectate

Note de implementare selectate

Deciziile și fluxurile cu cea mai mare valoare explicativă.

  1. Monorepo Turborepo cu build-uri paralele, execuție de taskuri conștientă de graficul de dependențe și caching remote - rebuild complet în sub 60 de secunde
  2. Auto-înregistrare a rutelor bazată pe convenții - autoRegisterRoutes.ts descoperă și montează dinamic toate fișierele *.route.ts la pornire, fără niciun import manual
  3. RBAC dinamic cu permisiuni CRUD auto-generate per model Prisma - mapările rol-permisiune sunt stocate în baza de date, fără modificări de cod pentru entități noi
  4. Backend Fastify cu validare Zod de primă clasă - siguranța tipurilor la compilare și validare la runtime pe fiecare rută, cererile malformate sunt respinse la nivel de framework
  5. Storefront Astro cu insule React - HTML static implicit, hidratare interactivă doar unde e necesar, scoruri Lighthouse aproape perfecte
  6. Bibliotecă de componente UI partajată (@modular/ui) consumată atât de storefront cât și de panoul admin, cu tematizare prin atribute de date pentru skin-uri diferite

06 / Metrici susținute

Înregistrarea verificată a proiectului

Aplicații în Monorepo
3
Pachete Partajate
3
Timp de Build (din cache)
<60s
Importuri Manuale de Rute
0

Tehnologie în context

TypeScript, Turborepo, Fastify, Astro, React, Vite, Prisma, PostgreSQL, Redis, BullMQ, Zod, JWT

Vezi repository-ul sursă