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ă
01Fastify backend
02Astro storefront
03React admin
04Shared UI
05Utilities
06Configuration
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.
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ă.
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
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
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
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
Storefront Astro cu insule React - HTML static implicit, hidratare interactivă doar unde e necesar, scoruri Lighthouse aproape perfecte
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
O aplicație colaborativă de management al sarcinilor cu echipe, sincronizare în timp real, notificări live și control al accesului bazat pe roluri - construită cu Next.js 15 și Convex pentru a explora subscripțiile reactive la baza de date și pattern-urile de comunicare event-driven.
O arhitectură de microservicii pregătită pentru producție, cu 5 servicii NestJS (API Gateway, Auth, Users, Products, Payments) care comunică exclusiv prin evenimente RabbitMQ, fiecare cu propria bază de date PostgreSQL, deployate pe Kubernetes cu pipeline complet de CI/CD.
Controlul confidențialității
Analiză opțională
Acest portofoliu folosește Google Analytics doar după ce îți dai acordul. Înregistrează date agregate despre navigare și performanță, niciodată conținutul formularului de contact sau detalii de cont. Refuzul nu schimbă funcționarea site-ului.