Studiu de caz / 07

Magazin de Bijuterii - Platformă E-Commerce Full-Stack

O platformă e-commerce completă, de nivel producție, pentru retail de bijuterii - două frontend-uri Next.js (vitrina pentru clienți cu Material-UI + panoul de administrare cu Tailwind CSS), un API Express.js, procesare plăți prin Stripe, emailuri tranzacționale prin Brevo și generare automată de facturi PDF.

Statut
Proiect selectat
Contextul sistemului
TypeScript, Next.js, React, Express.js
Sursă
Repository public

01 / Comportamentul sistemului

Dovadă interactivă

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

Dovadă interactivăMagazin de Bijuterii - Platformă E-Commerce Full-Stack
Checkout session
Hosted payment
Verified webhook
Idempotent order update
Email / invoice
Server-confirmed lifecycle

Context și intenție

Construit ca proiect de licență, această platformă a ales deliberat ambiția în detrimentul simplității - nu o aplicație CRUD cu o pagină de autentificare, ci un sistem complet de nivel producție unde trebuie să te gândești la securitatea plăților, livrabilitatea emailurilor, optimizarea imaginilor, controlul accesului multi-rol și ce se întâmplă când Stripe trimite același webhook de trei ori.

Integrarea Stripe acoperă întregul ciclu de viață al plății: API-ul creează Checkout Sessions cu articole și metadata, Stripe redirecționează către formularul de plată hostat, iar webhook-urile ghidează starea efectivă a comenzii. Principiul fundamental integrat în implementare: nu te baza niciodată pe redirect-ul din browser - doar semnătura verificată a webhook-ului este semnalul de încredere. Fiecare webhook este verificat folosind stripe.webhooks.constructEvent(), iar handler-ul verifică idempotența pentru a preveni procesarea multiplă a aceluiași eveniment de plată.

03 / Înregistrarea arhitecturii

Arhitectură

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

Înregistrarea arhitecturiiMagazin de Bijuterii - Platformă E-Commerce Full-Stack
Vitrina pentru Clienți
Panoul de Administrare
API-ul Backend
Citește înregistrarea completă a arhitecturii

Trei aplicații care lucrează împreună:

• Vitrina pentru Clienți (magazin/) - Next.js 14 + Material-UI pentru navigarea produselor, managementul coșului și checkout-ul Stripe • Panoul de Administrare (admin/) - Next.js 14 + Tailwind CSS pentru managementul produselor, procesarea comenzilor, analize și generarea facturilor • API-ul Backend (server/) - Express.js cu Sequelize ORM care gestionează logica de business, autentificarea JWT, webhook-urile Stripe, emailurile Brevo și facturile PDFKit

API-ul se conectează la PostgreSQL prin Sequelize cu o schemă relațională bogată, inclusiv categorii ierarhice (parentId auto-referențial). Stripe gestionează fluxul de plăți cu actualizări de stare a comenzilor ghidate de webhook-uri. Brevo expediază emailurile tranzacționale. PDFKit generează facturile la cerere.

Docker Compose orchestrează întregul stack pentru dezvoltare locală. Pipeline-ul CI/CD cu GitHub Actions gestionează testarea și deployment-ul.

Cum este structurat sistemul

Emailurile tranzacționale (confirmări de comandă, notificări de expediere, resetări de parolă) trec prin Brevo cu template-uri HTML cu CSS inline care funcționează corect pe toți clienții de email, inclusiv Outlook.

Când un administrator marchează o comandă ca expediată, sistemul generează o factură PDF la cerere folosind PDFKit - transmisă în streaming direct către browser, fără stocare pe disc. Un renderer personalizat de tabele gestionează lățimile coloanelor, fundalurile alternante ale rândurilor și paginarea automată.

Stiva de securitate include: bcrypt cu 12 runde de salt, JWT cu token-uri de acces de 15 minute și rotația token-urilor de refresh cu utilizare unică, headere de securitate Helmet.js, limitarea ratei pe endpoint-urile de autentificare, interogări parametrizate prin Sequelize, CORS cu whitelist strict de origini și validare Joi pe fiecare endpoint.

05 / Aspecte selectate

Note de implementare selectate

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

  1. Integrare Stripe Checkout cu creare de sesiuni pe server, verificarea semnăturii webhook-urilor și gestionare idempotentă a evenimentelor - nu se bazează niciodată pe redirect-urile din browser
  2. Vitrină pentru clienți (Next.js + Material-UI) cu navigare produse, filtrare avansată (preț, material, pietre prețioase), coș persistent și checkout securizat
  3. Panou de administrare (Next.js + Tailwind CSS) cu analize, CRUD produse cu upload de imagini, management comenzi cu tranziții de stare și generare de facturi PDF
  4. Generare de facturi PDF la cerere cu PDFKit - renderer personalizat de tabele care gestionează lățimi de coloane, fundaluri alternante și paginare automată, transmis în streaming direct către browser
  5. Emailuri tranzacționale prin Brevo cu template-uri HTML cu CSS inline pentru confirmări de comandă, notificări de expediere și resetări de parolă
  6. Sistem ierarhic de categorii cu cheie străină parentId - suportă structuri imbricate (Bijuterii > Inele > Inele de Logodnă) afișate ca navigare breadcrumb

06 / Metrici susținute

Înregistrarea verificată a proiectului

Aplicații
3
Entități în Baza de Date
9
Furnizor de Plăți
Stripe
Niveluri de Testare
3
Măsuri de Securitate
8
Furnizor de Email
Brevo

Tehnologie în context

TypeScript, Next.js, React, Express.js, Sequelize, PostgreSQL, Stripe, Brevo, PDFKit, Material-UI, Tailwind CSS, JWT, Docker, Mocha/Chai, Supertest, Selenium

Vezi repository-ul sursă