Skip to content

AleksS13/TaskFlow

Repository files navigation

TaskFlow — upravljanje zadacima po projektima

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.


1. Sažetak funkcionalnosti

  • 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)

2. Tehnologije

  • Backend: Node.js + Express (EJS render)
  • Baza: PostgreSQL
  • Sigurnost: bcrypt (hash lozinki), express‑session (sesije), csurf (CSRF)
  • Pristupne uloge: globalno user|admin + projektno owner|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


📸 Screenshots

Početna stranica

Homepage

Registracija

Register

Projekti

Projects

Kreiranje taska

Create Task

Task board

Tasks

Admin panel

Admin

Upravljanje korisnicima

Users

3. Pokretanje (lokalni razvoj)

Za pokretanje je potrebno:

  • Node.js 18+
  • PostgreSQL 13+ (lokalna instanca)

3.1. Baza podataka

  1. Kreirati praznu bazu npr. naziva zavrsni.
  2. Pokrenuti skriptu schema.sql (u docs/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).

3.2. Konfiguracija okruženja

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

3.3. Instalacija i start

U rootu projekta:

npm install
node app.js

Aplikacija je dostupna na http://localhost:3000.

3.4. Prvi pristup i admin

  • 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';

4. Kratak opis ekrana

  • 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.

5. Napomena o sigurnosti

  • 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).

6. Kontakt

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.

About

Kanban task management app with projects, roles, drag & drop board, and admin panel (Node/Express + PostgreSQL).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors