Skip to content
All work

Case study · Personal project

Task Management API

REST API · personal project

A REST API in Python and FastAPI for managing users and tasks — full CRUD, input validation and structured error handling on a SQLite schema.

Type
Personal project
Role
Solo
Focus
API design, data modeling

terminal · task api

Illustrative
$ curl -X POST localhost:8000/tasks \
    -H "Content-Type: application/json" \
    -d '{"title": "Write endpoint tests", "user_id": 1}'
HTTP/1.1 201 Created
{
  "id": 12,
  "title": "Write endpoint tests",
  "user_id": 1,
  "completed": false
}

$ curl localhost:8000/tasks/999
HTTP/1.1 404 Not Found
{ "detail": "Task 999 not found" }

$ curl -X POST localhost:8000/tasks -d '{"user_id": 1}'
HTTP/1.1 422 Unprocessable Entity
{ "detail": "title: field required" }
Illustrative request and response, not output copied from the project.

The problem

Most web apps sit on a backend like this one. The goal was to build a clean, extensible REST service end to end: data model, validation, error handling and testing.

What I built

  • Full CRUD for users and tasks

    Create, read, update and delete endpoints with input validation and structured, consistent error responses.

  • Relational schema

    A SQLite schema for persistent storage of users and their tasks.

  • Modular structure

    Modular routing and reusable service functions keep the codebase easy to extend.

  • Tested endpoints

    Every endpoint tested with Postman for correct responses and error cases.

Stack

API
PythonFastAPI
Data
SQLite
Testing
Postman

Result

  • Every endpoint verified for both correct responses and error cases.
  • Modular routing and reusable service functions keep it easy to extend.