Preskoči na sadržaj

~/projekat

Architex: Platforma za vežbanje system design-a

Platforma za vežbanje system design-a. Crtaj arhitekturne dijagrame u Excalidraw-u, pošalji na review, dobij ocenu.

  • React
  • Vite
  • Tailwind CSS
  • Node.js
  • Express
  • SQLite
  • JWT
  • Excalidraw

Uloga: Univerzitetski projekat · IT354 · Godina: 2025 · Status: isporučeno

ukratko: Platforma za vežbanje system design-a oko Excalidraw-a. Draft, submit, review, score workflow enforce-ovan server-side sa role-based pravilima da state machine ne može biti vođena sa klijenta. Express sa SQLite drži deployment trivijalnim.

Univerzitetski projekat sa kompletnim role-based workflow-ima: draft-ovi, submission-i, review-i i scoring.

Sažetak

  • Uloga: Vodeći full-stack programer (univerzitetski projekat)
  • Tehnologije: React, Node.js, Express, SQLite, Excalidraw, JWT
  • Izazov: Validacija, serializacija i perzistencija kompleksnih diagram-based submission-a sigurno u real-time-u.

Problem

System design učionice nemaju automatizovane alate za submit, review i evaluaciju vector diagram šema. Studenti treba da crtaju arhitekturne mape i mapiraju strukturne linkove direktno u web interfejsu. Backend mora da ingest-uje kompleksne vector canvas-e, validira integritet submission-a i upravlja workflow-ima (draft, submitted, graded) bez neautorizovanih grade modifikacija ili malicious payload execution-a preko injection-a.

Ograničenja

  • Ograničenja validacije sadržaja: Vector diagram state-ovi iz canvas modula su velike, proizvoljne JSON šeme. Backend mora validirati strukturni integritet bez blokiranja Node.js event loop-ova.
  • Zahtevi bezbednosti po ulogama: Grading state machine (draft → submitted → graded) mora biti strogo enforce-ovan. Studenti ne smeju mutirati ocene ili menjati dijagrame posle prijave.
  • Ograničenja skladištenja: Dijagrami moraju biti skladišteni u kompaktnoj, indeksabilnoj formi za brza učitavanja tokom peer review sesija.

Tehničke odluke

  • Excalidraw integracija: Excalidraw zbog lagane, prilagodljive React component biblioteke. Izvoz čistog JSON scene data za elemente i granice.
  • Express.js sa JWT bezbednošću: Express REST API endpoint-i. Stateless JWT sesije sa opisima uloga (student, instructor, admin) za autorizaciju ruta.
  • SQLite za relaciono mapiranje: Trenutna file-based perzistencija. Lako mapira scenario descriptor-e, studentske ID-jeve, težine ocenjivanja i sirove diagram string-ove u ujedinjenoj relacionoj strukturi.

Kompromisi i rezultati

  • Strategija serijalizacije canvas-a: Ceo Excalidraw canvas scene kao jedan kompresovan string field umesto parsiranja pojedinačnih čvorova u relacionim tabelama. Ograničava native SQL upite nad oblicima dijagrama, ali značajno smanjuje kompleksnost upisa i vreme izvršavanja u bazi.
  • Rezultati: Tokovi sa više uloga verifikovani bez curenja bezbednosti. Stotine istovremenih studentskih prijava sa vremenom učitavanja ispod 200ms po canvas-u.