Preskoči na sadržaj

~/projekat

Spider Gym: React SPA klijent

Migracija Django 5.2 monolita sa 67 template-a u tipizovan React SPA sa 68 ruta kroz 10 domena za klijenta u fitnes industriji. Mock-API-first workflow, role-based routing, CSRF-safe klijent, Vitest pokrivenost.

  • React 19
  • TypeScript 6
  • Vite
  • Tailwind CSS v4
  • React Router v7
  • Vitest
  • Django 5.2
  • DRF

Uloga: Samostalni · migracija klijentskog sloja · Godina: 2024 - 2025 · Status: isporučeno

ukratko: Migracija aktivne fitnes aplikacije sa 67 Django 5.2 šablona u tipizovan React SPA sa 68 ruta kroz 10 domena. Razvoj protiv json-server mock-a prvo omogućio je paralelnu isporuku klijentskog sloja i pravog DRF /api/v2/ backend-a. Lekcija: tipizovan API klijent plus Vitest pokrivenost pretvaraju veliku migraciju u pregledan, spojiv posao.

Spider Gym je počeo kao Django 5.2 monolit sa 67 server-renderovanih šablona. Posao je bio da se to pretvori u tipizovan React SPA bez gubitka operativne površine od koje zavisi osoblje teretane: CRUD članova, članarine, plaćanja, QR prijava, recepcionerski dashboard i admin izveštaji.

Arhitektura

SPA je isporučen sa 68 ruta kroz 10 funkcionalnih domena (autentifikacija, članovi, članarine, plaćanja, QR prijava, izveštaji, admin alati i još). Stack je React 19, TypeScript 6, Vite 8, Tailwind CSS v4 i React Router v7, sa tipizovanim API klijentom koji rukuje CSRF-om i zaštitom ruta po ulogama.

Pristup je bio mock-API-first. Klijentska aplikacija je koristila json-server mock koji odražava planirani DRF ugovor, što je omogućilo end-to-end razvoj React SPA-a dok je backend tim gradio prave /api/v2/ endpoint-e na istim oblicima. Prebacivanje je bilo zamena osnovnog URL-a.

RBAC postoji na obe strane: Django permisije i custom dekoratori na serveru, React auth context sa isAdmin, isReceptionist i isCashier flagovima plus protected route wrapper-i na klijentu.

QR prijava

Originalni tok prijave u teretani skenirao je QR kodove na serveru sa pyzbar i NumPy. U SPA-u se preselio na html5-qrcode u browseru, što je izbacilo backend iz petlje skeniranja i dalo operaterima trenutni status člana na ekranu.

Klijentska aplikacija

60+ tipizovanih React komponenti i feature stranica, pokrivajući upravljanje članovima, recepcionske tokove, životni ciklus članarina, praćenje plaćanja, QR skeniranje i admin dashboard-e. Stanja učitavanja, skeleton ekrani, error boundary-ji i responzivni layout-ovi na svakoj ruti; React Compiler (babel-plugin-react-compiler) automatski rukuje memoizacijom.

Testiranje

Vitest i React Testing Library pokrivaju kritične tokove migracije: prijava, prijava u teretanu, obnova članarine, plaćanje. TypeScript strict mode kroz codebase; ESLint na klijentu, Ruff na Python strani.

Šta sam izvukao

Ugovori klijentskog sloja odblokiraju backend posao. Tipizovan API klijent koji postoji rano daje backend timu konkretan cilj, a paralelna isporuka postaje moguća kad se taj oblik fiksira. Vitest sloj preko najbolnijih tokova je jeftino osiguranje tokom duge migracije.