Backend Development · REST API

Tech Challenge Tracker

Personal challenges, measurable progress.

A REST API for organizing personal technical challenges, recording difficulty and tracking progress, built as a practical backend and NoSQL learning project.

Role

Backend Development

Type

REST API

Stack

Python · FastAPI · Pydantic · Firebase Firestore · Uvicorn

Status

Functional backend for local use

01 — The Challenge

Give each challenge a clear path forward.

The project explores how to turn a personal challenge list into a structured API: define difficulty and progress states, validate incoming data and preserve records beyond a server restart using a document database.

02 — The Solution

What the project does.

01

Create, read, update and delete

Manage challenges with Firestore-generated identifiers and filter them by pending, in-progress or completed status.

02

Partial updates and validation

PATCH changes only the supplied fields. Pydantic validates titles, descriptions, difficulty and status, while the API reports invalid input and missing resources with explicit HTTP responses.

03

Persistent data and interactive documentation

Firestore stores challenges as documents that survive server restarts. Swagger UI and the OpenAPI schema make the endpoints easy to explore and try locally.

03 — Technical Approach

HTTP endpoints backed by a document database.

FastAPI handles routes, query parameters and dependency injection; Pydantic defines creation, response and update models. The Firebase Admin SDK connects Python to Firestore, while Uvicorn runs the API. CRUD operations, error responses and persistence were manually checked through Swagger UI; the repository does not yet include an automated test suite.

PythonFastAPIPydanticFirebase FirestoreUvicorn

04 — Next Steps

Current scope and next steps.

The backend is functional for learning and local execution. It does not yet include a web interface, authentication, pagination or a publicly deployed API. Planned work includes difficulty filters, creation dates, query indexes, automated tests and separation of routes from data access. Authentication and per-user authorization remain necessary before exposing user data.

Explore the GitHub repository ↗

Selected Work

Explore more projects.

Back to selected work