Skip to content

tanmay-bhatgare/task-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Full Stack GUI Task Manager Application with customtkinter (Frontend) and FastAPI (Backend)

Introduction

This project is a full stack Task Manager application. The frontend is built using customtkinter, and the backend is built using FastAPI. The application allows users to manage tasks efficiently with features such as creating, updating, and deleting tasks, along with user authentication.

Features

  • User Authentication and Authorization
  • Task CRUD operations (Create, Read, Update, Delete)
  • User and Task management
  • JWT-based authentication
  • Pydantic models for data validation
  • Custom widgets for enhanced UI

Requirements

Frontend

  • Python 3.11+
  • customtkinter
  • requests
  • other dependencies (specified in requirements.txt)

Backend

  • Python 3.11+
  • FastAPI
  • PostgreSQL
  • Pydantic
  • SQLAlchemy
  • Alembic
  • Uvicorn
  • Passlib (for password hashing)
  • jose (for JWT tokens)

Installation

  1. Create a virtual environment and activate it:

    python -m venv venv
    source venv/bin/activate  # On Windows, use `venv\Scripts\activate`
  2. Install the backend dependencies:

    pip install -r requirements.txt
  3. Set up the database:

    Create a PostgreSQL database and configure the database URL in the .env in .\backend\ file with the following attributes:

    DATABASE_HOSTNAME={host on which your DB is serving}  # localhost by default
    DATABASE_PORT={port on which your DB is serving}      # 5432 by default
    DATABASE_PASSWORD={password for your DB}
    DATABASE_NAME={name of DB you made}
    DATABASE_USERNAME={username of your database}         # postgres by default from PgAdmin
    SECRET_KEY={secret key for protecting your OAuth login credentials}
    ALGORITHMS={algorithm used for authentication token}
    ACCESS_TOKEN_EXPIRE_MINUTES={number of minutes to expire a login token}  # 60 mins by default

Running the Application

Frontend

  1. Navigate to the frontend directory:

    cd frontend
  2. Start the frontend application:

    python main.py

    The GUI will be available locally.

Backend

  1. Navigate to the backend directory:

    cd backend
  2. Start the FastAPI server:

    uvicorn app.main:app --reload

    The API will be available at http://127.0.0.1:8000.

Project Structure

Frontend

frontend
    ├── __init__.py
    ├── assets
    │   └── images
    │       ├── hide.png
    │       └── view.png
    ├── main.py
    └── src
        ├── __init__.py
        ├── app.py
        ├── app_state.py
        ├── constants
        │   ├── __init__.py
        │   ├── c_fonts.py
        │   ├── constants.py
        │   ├── pages.py
        │   ├── paths.py
        │   ├── unit_attributes.py
        │   └── urls.py
        ├── models
        │   ├── __init__.py
        │   ├── models.py
        │   ├── sign_in_user_model.py
        │   ├── sign_up_user_model.py
        │   ├── task_create_model.py
        │   └── task_update_model.py
        ├── pages
        │   ├── about_page.py
        │   ├── create_task_page.py
        │   ├── error_page.py
        │   ├── home_page.py
        │   ├── pages.py
        │   ├── sign_in_page.py
        │   ├── sign_up_page.py
        │   └── update_task_page.py
        ├── services
        │   ├── __init__.py
        │   ├── create_task.py
        │   ├── get_all_tasks.py
        │   ├── services.py
        │   ├── sign_in.py
        │   ├── sign_up.py
        │   └── update_task.py
        ├── tests
        │   └── test.py
        ├── utils
        │   ├── __init__.py
        │   ├── date_parser.py
        │   └── utils.py
        └── widgets
            ├── c_button.py
            ├── c_calendar.py
            ├── c_frame.py
            ├── c_image.py
            ├── c_input_field.py
            ├── c_label.py
            ├── c_option_menu.py
            ├── c_scrollable_frame.py
            ├── c_seperator.py
            ├── c_task_card.py
            └── widget.py

Backend

backend
│   └── app
│       ├── __init__.py
│       ├── authentication
│       │   ├── __init__.py
│       │   └── oauth2.py
│       ├── configuration
│       │   └── config.py
│       ├── db
│       │   ├── __init__.py
│       │   └── database.py
│       ├── main.py
│       ├── models
│       │   ├── __init__.py
│       │   ├── taskModel.py
│       │   └── userModel.py
│       ├── routes
│       │   ├── authRoutes.py
│       │   ├── taskRoutes.py
│       │   └── userRoutes.py
│       ├── schemas
│       │   ├── __init__.py
│       │   ├── taskSchema.py
│       │   ├── tokenSchema.py
│       │   └── userSchema.py
│       └── utils
│           ├── __init__.py
│           └── utils.py
│
└── .env

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages