Skip to content

Simulator for a todo task list featuring an AI assistant using FastAPI, It showcases a practical integration of task management with AI

License

Notifications You must be signed in to change notification settings

IsmaelMousa/TTL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TTL (Todo Task List) TTL

Subtitle

CI CD Coverage Version License Clones

Demo πŸ‘€

Demo

Overview

Welcome to my humble Fullstack project πŸ‘‹

This project made with love & patience β€οΈβ€πŸ©Ή.

TTL is simulating a todo task list manager application, combined with an AI Assistant ✨.

Description

TTL Where simplicity meets innovation ⚑! Seamlessly combining the efficiency of a traditional task manager with the intuitive support of an AI Assistant πŸ’Ž, Our application strives to streamline your productivity journey. Whether you're juggling multiple projects, planning your day, or prioritizing your tasks, our user-friendly interface and intelligent assistant are here to support you every step of the way. Let us help you stay organized, focused, and empowered to manage all your tasks with ease. Welcome aboard TTL πŸ€—!

Goal

The primary aim of TTL πŸͺ„ is to enhance my technical and development skills by applying the technologies and tools I've learned. It serves as a journey of learning, starting from building a project from scratch to deployment, traversing through all development stages πŸŽ–οΈ.

Technologies

Technologies & Tools πŸš€ used in TTL:


Python 3.10 HF Transformers FastAPI PostgreSQL SQLAlchemy Poetry Bootstrap 5.3 HTML JavaScript CSS

Prerequisites

Note

You need also to set up the database, where:

  • DB Name: TODO
  • DB Username: postgres
  • DB Password: test
  • DB Host: localhost
  • DB Port: 5432

I recommend using PgAdmin4 to facilitate the setup process and also monitor changes.

Installation

Here are the steps you must follow to install TTL correctly 🎯:

  1. Clone TTL
git clone https://github.com/IsmaelMousa/TTL.git
  1. Navigate to the TTL directory
cd TTL
  1. Setup virtual environment
python3 -m venv .venv
  1. Activate the virtual environment
source .venv/bin/activate
  1. Install the required dependencies
make install

Modules

After completing the installation steps βœ…, the project files should be like this when you open TTL:

TTL
 β”œβ”€β”€ .github
 β”‚   β”œβ”€β”€ workflows
 β”‚   β”‚   β”œβ”€β”€ ci.yml
 β”‚   β”‚   └── deployment.yml
 β”‚   └── demo.gif
 β”œβ”€β”€ .venv 
 β”‚   β”œβ”€β”€ bin
 β”‚   β”œβ”€β”€ include
 β”‚   β”œβ”€β”€ lib
 β”‚   β”œβ”€β”€ .gitignore
 β”‚   └── pyvenv.cfg
 β”œβ”€β”€ assistants 
 β”‚   β”œβ”€β”€ __init__.py
 β”‚   └── chat.py
 β”œβ”€β”€ dependencies 
 β”‚   β”œβ”€β”€ __init__.py
 β”‚   └── util.py
 β”œβ”€β”€ errors
 β”‚   β”œβ”€β”€ __init__.py
 β”‚   └── custom.py
 β”œβ”€β”€ infrastructures
 β”‚   β”œβ”€β”€ crud
 β”‚   β”‚   β”œβ”€β”€ __init__.py
 β”‚   β”‚   └── task.py
 β”‚   β”œβ”€β”€ __init__.py 
 β”‚   └── database.py
 β”œβ”€β”€ models
 β”‚   β”œβ”€β”€ __init__.py
 β”‚   └── task.py
 β”œβ”€β”€ routers
 β”‚   β”œβ”€β”€ __init__.py
 β”‚   β”œβ”€β”€ assistant.py
 β”‚   └── task.py
 β”œβ”€β”€ schemas
 β”‚   β”œβ”€β”€ __init__.py
 β”‚   β”œβ”€β”€ assistant.py
 β”‚   └── task.py 
 β”œβ”€β”€ tests
 β”‚   β”œβ”€β”€ __init__.py
 β”‚   β”œβ”€β”€ assistants_chat.py
 β”‚   β”œβ”€β”€ dependencies_util.py
 β”‚   β”œβ”€β”€ infrastructures_crud_task.py
 β”‚   β”œβ”€β”€ infrastructures_database.py
 β”‚   β”œβ”€β”€ models_task.py
 β”‚   β”œβ”€β”€ routers_assistant.py
 β”‚   β”œβ”€β”€ routers_task.py
 β”‚   β”œβ”€β”€ schemas_assistant.py
 β”‚   β”œβ”€β”€ schemas_task.py
 β”‚   β”œβ”€β”€ utils_config.py
 β”‚   └── utils_logger.py    
 β”œβ”€β”€ utils
 β”‚   β”œβ”€β”€ __init__.py
 β”‚   β”œβ”€β”€ config.py
 β”‚   └── logger.py
 β”œβ”€β”€ views
 β”‚   β”œβ”€β”€ images
 β”‚   β”‚   └── website-icon.png
 β”‚   β”œβ”€β”€ index.html
 β”‚   β”œβ”€β”€ index.js
 β”‚   └── style.css     
 β”œβ”€β”€ .gitignore
 β”œβ”€β”€ CODE_OF_CONDUCT.md
 β”œβ”€β”€ config.yml
 β”œβ”€β”€ LICENSE.md
 β”œβ”€β”€ main.py
 β”œβ”€β”€ Makefile
 β”œβ”€β”€ poetry.lock
 β”œβ”€β”€ pyproject.toml
 β”œβ”€β”€ README.md
 └── SECURITY.md

Here is a summary πŸ“ for the purpose of each major module or component in TTL:

Module Description
infrastructures Manages database-related elements, including preparation, maintenance, and operations.
main.py Serves as the entry point, initiating the application.
config.yml Contains main configurations such as database settings, ...etc.
models Defines the schemas of the database tables/entities.
schemas Defines the schemas of the Pydantic models used in the application.
routers Manages and creates the application's routers/endpoints.
utils Houses common utilities/logic utilized throughout the application, including logging mechanisms, ...etc.
errors Prepares and customizes exceptions for handling specific issues.
tests Handles the preparation and execution of unit tests.
dependencies Manages and creates dependencies utilized for various operations within the application.
assistants Contains the hugging face transformers models, for the specific NLP tasks.
views Represents the user interface (UI) files, or can say front-end side.

Usage

Here is how to use the TTL πŸ’β€β™‚οΈ:

  1. Run the TTL
make run
  1. Navigate to: http://localhost:8000/ttl/index.html πŸ˜€

Tip

To enhance your user experience, I recommend running the backend and frontend separately where:

  1. Execute the backend side by using the instructions provided in Step No.1.
  2. Execute the frontend side by opening the index.html file in the browser.

This approach ensures optimal performance and usability for both sides of the application.


Feedback πŸ’Œ

We value your feedback and suggestions 🀟! If you've used TTL or explored its features, we'd love to hear from you 🫑. share your thoughts, ideas, or any issues you encountered while using the application πŸ’‘.

Feel free to open an issue on GitHub or reach out to us via email with your feedback. Your feedback helps us improve TTL and make it even better for our users 🎭.

Thank You! 🌹🫡