Skip to content

A simple, object-oriented TODO application built with FastAPI, Pydantic, and an in-memory store. This project serves as a starting point for technical interviews, demonstrating best practices in Python API design, object-oriented programming, and dependency management.

Notifications You must be signed in to change notification settings

Nextpertise/todo-app-interview

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“Œ Todo App (Python + FastAPI + Pydantic)

A simple, object-oriented TODO application built with FastAPI, Pydantic, and an in-memory store. This project serves as a starting point for technical interviews, demonstrating best practices in Python API design, object-oriented programming, and dependency management.

πŸš€ Features

  • βœ… FastAPI-based REST API
  • βœ… Pydantic models with computed properties
  • βœ… In-memory storage with a dynamic parent-child TODO relationship
  • βœ… Singleton-based TodoManager for efficient data handling
  • βœ… Unit tests with unittest
  • βœ… Dynamic child resolution via Pydantic properties

πŸ”§ API Endpoints

  • GET /todo β†’ List all TODOs (including children)
  • POST /todo β†’ Add a new TODO (optionally linked to a parent)
  • DELETE /todo/{todo_uuid} β†’ Remove a TODO

πŸ›  Setup & Run

# Clone the repo
$ git clone https://github.com/Nextpertise/todo-app-interview.git

# Install dependencies
$ poetry install

# Run the FastAPI server
$ cd src
$ poetry run uvicorn main:app --reload

# Run the tests (from the root directory) and set the python path
$ PYTHONPATH=src poetry run pytest

About

A simple, object-oriented TODO application built with FastAPI, Pydantic, and an in-memory store. This project serves as a starting point for technical interviews, demonstrating best practices in Python API design, object-oriented programming, and dependency management.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages