A lightweight and intuitive task management application designed for university students to boost productivity.
What I want/ed to implement to my app
- Task management with categories and priorities.
- Calendar integration.
- Pomodoro timer in each todo task.
- Collaboration for projects.
- Visual statistics.
- Streak tracking.
- Friendly design.
todo_fastapi
├───.env
├───.env_db
├───.gitignore
├───LICENCE
├───README.md
├───alembic.ini
├───backend
│ ├───Dockerfile
│ ├───alembic
│ │ ├───README
│ │ ├───env.py
│ │ ├───script.py.mako
│ │ └───versions
│ │ ├───79fbd9de33e5_add_total_time_spent_cur_streak_to_todo_.py
│ │ └───d73804355bae_initial_migration.py
│ ├───app
│ │ ├───__init__.py
│ │ ├───auth.py
│ │ ├───config.py
│ │ ├───crud
│ │ │ ├───__init__.py
│ │ │ ├───todo_crud.py
│ │ │ └───user_crud.py
│ │ ├───db
│ │ │ ├───__init__.py
│ │ │ └───session.py
│ │ ├───main.py
│ │ ├───models
│ │ │ ├───__init__.py
│ │ │ ├───base.py
│ │ │ ├───todo_item.py
│ │ │ └───user.py
│ │ ├───routes
│ │ │ ├───__init__.py
│ │ │ ├───todo_router.py
│ │ │ └───user_router.py
│ │ └───schemas
│ │ ├───__init__.py
│ │ ├───todo_schemas.py
│ │ ├───token_schemas.py
│ │ └───user_schemas.py
│ ├───requirements.txt
│ └───tests
│ ├───__init__.py
│ └───test_todo.py
├───docker-compose.yml
└───frontend
├───Dockerfile
├───babel.config.js
├───jsconfig.json
├───package-lock.json
├───package.json
├───public
│ └───favicon.ico
├───src
│ ├───App.vue
│ ├───assets
│ │ └───custom.css
│ ├───components
│ │ ├───AddTodo.vue
│ │ ├───HomePage.vue
│ │ ├───TodoDetails.vue
│ │ ├───TodoList.vue
│ │ ├───UserLogin.vue
│ │ └───UserRegister.vue
│ ├───main.js
│ ├───router
│ │ └───index.js
│ └───store
│ └───index.js
└───vue.config.js
Backend:
- FastAPI
DB, ORM, migrations management:
- PostgreSQL
- Alchemy
- Alembic
Frontend:
- Vue.js
Deployment:
- Docker
- Nginx
etc
To get a local copy up and running, follow these steps.
git clone https://github.com/MattoYuzuru/todo_fastapi.git
cd todo_fastapi
Run this command and copy the secret key
It's for User Authentication (SECRET_KEY in .env)
openssl rand -hex 32
There are 2 .env in my project.
- .env (for all config variables)
DATABASE_URL=postgresql+psycopg2://username:password@localhost:port/db_name
SECRET_KEY=your_key
ALGORITHM=HS256
- .env_db (to run postrgesql via its docker image)
POSTGRES_USER=username
POSTGRES_PASSWORD=password
POSTGRES_DB=db_name
docker compose up -d --build
http://localhost:8080/register
Contributions are welcome! This is my first time using these technologies.