This project is a Todo List application built using FastAPI and SQLAlchemy. The goal of this project is to improve my FastAPI and fullstack development skills by following a Udemy FastAPI course: https://www.udemy.com/course/fastapi-the-complete-course/?couponCode=KEEPLEARNING
This project is part of my journey with FastAPI, a modern, fast (high-performance), web framework for building APIs with Python. It includes basic CRUD operations (Create, Read, Update, Delete) for managing Todo items.
- Create, Read, Update, and Delete Todo items.
- RESTful API endpoints for interacting with Todo items.
- Database integration for persistent storage.
- Authentication and authorization.
To-Do List App is deployed and accessible at: Render and Railway
Warning: Free Instance Spin-Down Delay
Please note that the free instance provided by Render may experience spin-down due to inactivity. This could result in delays of 50 seconds or more when processing requests. Please be patient while your web browser tries to load the page.
To run this project locally, follow these steps:
- Clone this repository to your local machine:
git clone https://github.com/your-username/todo-list-fastapi.git
- Navigate to the project directory:
cd todo-list-fastapi/TodoApp2
- Install the required dependencies:
pip install -r requirements.txt
-
Run the FastAPI application:
uvicorn main:app --reload
-
Access the application in your web browser at http://localhost:8000.
I rely on ElephantSQL, powered by PostgreSQL. Within my database schema, I maintain essential tables for managing user data and task information.
Primarily, I focus on two pivotal tables: users
and todos
.
To gain a visual understanding of our TodoList application's inner workings, let's delve into some of its core members. Below, you'll find a snapshot showcasing the essence of my TodoList App: Let's take a look at the users.
One of the cornerstone elements of my application is the todos
table, where all task-related data is meticulously organized and stored. Here's an overview of the structure and contents of our todos table:
In the app, each todo is intricately linked to its respective owner, as denoted by the owner_id
field in the todos
table. Let's visualize this relationship by joining the users
and todos
tables, showcasing all relevant rows where user.id
matches todos.owner_id
: