~/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.