← Projects

TaskFlow — task and file management

A React and FastAPI application with task planning, categories, file attachments, admin operations and statistics.

Role
Development team member · two-person project
Organization
Kocaeli University
Period
2025
Stack
Python · FastAPI · React · SQLAlchemy · SQLite · JWT · Pytest
TaskFlow cards showing completed, overdue and approaching-deadline tasks.

Problem

A task is more than a title: it has a deadline, a category and often supporting files. TaskFlow keeps these details together in one workspace. Our two-person team connected a React interface, FastAPI services and attachment storage so users can move from planning a task to tracking its completion.

Users can create tasks, filter by status or category and search by title. An admin interface lists users and tasks and supports task reassignment.

Full-stack structure

The frontend uses React, Vite and Tailwind CSS, with separate pages and reusable components. AuthContext holds session state and Axios handles API requests. The FastAPI backend separates auth, tasks, categories, files and admin routers from SQLAlchemy models, Pydantic schemas and shared dependencies.

JWT provides session authentication and bcrypt hashes passwords. Task queries are scoped to the current user, while admin operations use a dedicated role dependency. User, Category, Task and TaskFile records are related through SQLite.

Users organize tasks into categories and manage them from one panel.
Organizing categories Users organize tasks into categories and manage them from one panel.

Tasks and attachments

Tasks use In Progress, Completed and Overdue states. Date and time checks update overdue tasks; the interface highlights deadlines within 24 and 48 hours. Recharts displays category and status distributions.

TaskFlow bar chart showing task distribution by category and status
TaskFlow bar chart showing task distribution by category and status

Attachments accept PDF, PNG, JPG/JPEG, DOCX and XLSX files with a 10 MiB limit. Files are stored under UUID filenames, while the database records original names, sizes, uploaders and task associations.

The editor keeps title, description, deadline, status and attachments together, with file download and deletion controls.
Documents beside the task The editor keeps title, description, deadline, status and attachments together, with file download and deletion controls.

Tests and limitations

The project defines 39 Pytest functions covering authentication, tasks, categories, files and admin behavior. FastAPI TestClient runs against an in-memory SQLite database through dependency overrides. This is a count of defined scenarios; the suite was not rerun during portfolio preparation.

Remaining work includes enforcing category uniqueness per user, checking category ownership when assigning tasks, streaming uploads and coordinating database and physical-file cleanup. Overdue status is updated during requests rather than by a background notification service.

Result

The application combines task CRUD, filtering, deadline indicators, attachments and statistics. It covers the full-stack flow from React components and API contracts to relational data and access checks.