TaskFlow je mala web aplikacija za organizaciju posla po projektima. Unutar svakog projekta vode se zadaci (taskovi) koji prolaze kroz četiri kolone: todo, in_progress, done, tested. Vlasnik projekta može pozivati članove (postojeće korisnike).
Ovaj dokument kratko opisuje šta aplikacija radi i kako je pokrenuti lokalno.
- Projekti
- kreiranje novog projekta
- pregled ličnih projekata
- Članovi projekta
- dodavanje/uklanjanje postojećih korisnika (po email‑u)
- uloge po projektu:
owner,member
- Taskovi
- naslov, opis, rok, status
- uređivanje i brisanje
- promjena statusa „prevlačenjem” (drag & drop) između kolona
- vizuelna oznaka ako je rok prošao (overdue)
- Admin pregled
- pregled svih projekata i pripadajućih taskova
- procentualni napredak po projektu (na bazi
done + tested)
- Backend: Node.js + Express (EJS render)
- Baza: PostgreSQL
- Sigurnost: bcrypt (hash lozinki), express‑session (sesije), csurf (CSRF)
- Pristupne uloge: globalno
user|admin+ projektnoowner|member
Struktura direktorija (skraćeno):
controllers/ # logika kontrolera
middleware/ # auth, loadProject
repositories/ # SQL upiti (pg)
routes/ # Express rute
views/ # EJS templejti (layout, projekti, board, admin…)
public/ # css, js (drag & drop)
app.js # Express app
db.js # konekcija na PostgreSQL
Za pokretanje je potrebno:
- Node.js 18+
- PostgreSQL 13+ (lokalna instanca)
- Kreirati praznu bazu npr. naziva
zavrsni. - Pokrenuti skriptu
schema.sql(udocs/SQL/ako je isporučena uz projekt).
Skripta kreira tabele:users,projects,project_members,tasks.
Alternativa: tabele se mogu kreirati ručno prema ovoj šemi (isti sadržaj kao u
schema.sql).
U root projekta napraviti datoteku .env na osnovu primjera .env.example:
DATABASE_URL=postgres://postgres:lozinka@localhost:5432/zavrsni
SESSION_SECRET=neki-tajni-string
PORT=3000
U rootu projekta:
npm install
node app.jsAplikacija je dostupna na http://localhost:3000.
- Prvi korisnik se može registrirati preko /register.
- Ako je potrebno administrativno pravo, u bazi se može promijeniti uloga:
UPDATE users SET role='admin' WHERE email='email_korisnika@example.com';
- Početna stranica — kratko objašnjenje i linkovi za prijavu/registraciju.
- Moji projekti (
/projects) — lista projekata gdje je korisnik vlasnik ili član. - Board (
/p/:pid/board) — kanban pregled taskova u 4 kolone (uz drag & drop). - Novi/Uredi task — forme za unos i izmjenu.
- Članovi (
/p/:pid/members) — pregled i upravljanje članovima projekta (dostupno vlasniku). - Admin (
/admin) — pregled projekata i napretka, kao i detaljan prikaz pojedinog projekta.
- Lozinke se pohranjuju kao bcrypt hash.
- Sesije se drže u httpOnly kolačiću.
- Sve forme i AJAX pozivi imaju CSRF token.
- Pristup projektima čuvaju middleware slojevi (
requireAuth,loadProject,requireAdmin).
Autor: Aleksandar Šiljegović
Godina: 2025
Ukoliko je potrebno, može se omogućiti privremeni pristup Git repo‑zitoriju ili dostaviti ZIP arhiva sa README.md, .env.example i SQL skriptom.






