{"id":35029511,"url":"https://github.com/04bhavyaa/todoapp-fastapi-clean-architecture","last_synced_at":"2026-04-13T15:33:40.171Z","repository":{"id":313393287,"uuid":"1051218845","full_name":"04bhavyaa/todoapp-fastapi-clean-architecture","owner":"04bhavyaa","description":"A Todo app built with FastAPI, PostgreSQL, Docker, and Bootstrap 5, following Clean Architecture principles. Features JWT authentication, password strength validation, and a modern responsive frontend.","archived":false,"fork":false,"pushed_at":"2025-09-05T17:54:50.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-05T19:36:56.545Z","etag":null,"topics":["backend","bootstrap","clean-architecture","docker","fastapi","frontend","fullstack","jwt-authentication","password-validation","postgresql","pytest","python","sqlachemy","testing","todo-app","webapp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/04bhavyaa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-05T16:18:06.000Z","updated_at":"2025-09-05T17:59:55.000Z","dependencies_parsed_at":"2025-09-05T19:36:58.151Z","dependency_job_id":"5cddb189-a23a-4191-bc89-f79ccca64460","html_url":"https://github.com/04bhavyaa/todoapp-fastapi-clean-architecture","commit_stats":null,"previous_names":["04bhavyaa/todoapp-fastapi-clean-architecture"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/04bhavyaa/todoapp-fastapi-clean-architecture","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/04bhavyaa%2Ftodoapp-fastapi-clean-architecture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/04bhavyaa%2Ftodoapp-fastapi-clean-architecture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/04bhavyaa%2Ftodoapp-fastapi-clean-architecture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/04bhavyaa%2Ftodoapp-fastapi-clean-architecture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/04bhavyaa","download_url":"https://codeload.github.com/04bhavyaa/todoapp-fastapi-clean-architecture/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/04bhavyaa%2Ftodoapp-fastapi-clean-architecture/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31759521,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","bootstrap","clean-architecture","docker","fastapi","frontend","fullstack","jwt-authentication","password-validation","postgresql","pytest","python","sqlachemy","testing","todo-app","webapp"],"created_at":"2025-12-27T06:55:35.674Z","updated_at":"2026-04-13T15:33:40.162Z","avatar_url":"https://github.com/04bhavyaa.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Clean Architecture FastAPI Todo App\n\nA full-stack Todo application built with FastAPI, PostgreSQL, Docker, and a modern Bootstrap frontend. The project follows Clean Architecture principles for maintainability and scalability.\n\n## Tech Stack\n\n- **Backend:** FastAPI, SQLAlchemy, Python 3.11+\n- **Frontend:** HTML, CSS, JavaScript, Bootstrap 5, Font Awesome\n- **Database:** PostgreSQL (Dockerized)\n- **Auth:** JWT, bcrypt\n- **Testing:** Pytest (unit \u0026 e2e), Docker Compose\n- **DevOps:** Docker, Docker Compose\n\n## Features\n\n- User registration, login, and JWT authentication\n- Secure password hashing and validation (with strength meter)\n- Add, complete, and delete todos\n- Password change with validation\n- PostgreSQL database (Dockerized)\n- Clean, modular backend structure\n- Fully containerized with Docker Compose\n- Frontend is served automatically by FastAPI (no separate static server needed)\n- Comprehensive tests: unit and end-to-end tests in the `tests/` folder\n\n## Project Structure\n\n```\n├── src/\n│   ├── main.py            # FastAPI app entrypoint\n│   ├── api.py             # API route registration\n│   ├── entities/          # SQLAlchemy models (User, Todo)\n│   ├── users/             # User logic (controller, service, model, validators)\n│   ├── todos/             # Todo logic (controller, service, model)\n│   ├── auth/              # Auth logic (JWT, password hashing)\n│   ├── database/          # DB connection/core\n│   ├── exceptions.py      # Custom exceptions\n│   ├── logging.py         # Logging config\n│   └── rate_limiting.py   # (Optional) Rate limiting logic\n├── frontend/\n│   ├── index.html         # Main UI\n│   ├── app.js             # Frontend logic\n│   └── style.css          # Custom styles\n├── tests/\n│   ├── conftest.py        # Pytest fixtures\n│   ├── test_auth_service.py\n│   ├── test_todos_service.py\n│   ├── test_users_service.py\n│   └── e2e/               # End-to-end API tests\n│       ├── test_auth_endpoints.py\n│       ├── test_todo_endpoints.py\n│       └── test_users_endpoints.py\n├── requirements.txt\n├── requirements-dev.txt\n├── docker-compose.yml\n├── Dockerfile\n├── pyproject.toml\n└── README.md\n```\n\n## Getting Started\n\n### Prerequisites\n\n- Docker \u0026 Docker Compose\n- (Optional) Python 3.11+ for local dev\n\n### Quick Start (Docker)\n\n```sh\ngit clone https://github.com/04bhavyaa/todoapp-fastapi-clean-architecture.git\ncd todoapp-fastapi-clean-architecture\ndocker compose up --build\n```\n\n- Visit [http://localhost:8000](http://localhost:8000) in your browser. The frontend is served automatically by FastAPI.\n\n### Local Development\n\n1. Create a virtual environment and install dependencies:\n   ```sh\n   python -m venv venv\n   source venv/bin/activate  # or venv\\Scripts\\activate on Windows\n   pip install -r requirements.txt\n   ```\n2. Start PostgreSQL (or use Docker Compose)\n3. Run the FastAPI app:\n   ```sh\n   uvicorn src.main:app --reload\n   ```\n4. Visit [http://localhost:8000](http://localhost:8000) — the frontend is served automatically.\n5. (Additional) To run all tests:\n  ```sh\n  pytest\n  ```\n\n## Usage\n\n- Register a new user\n- Login to get access to your todos\n- Add, complete, and delete todos\n- Change your password (with strength validation)\n\n## Project Gallery\n\u003cimg width=\"1919\" height=\"833\" alt=\"Screenshot 2025-09-06 130317\" src=\"https://github.com/user-attachments/assets/5487deb4-2bff-430d-a9e8-e6c7c72e10bc\" /\u003e\n\u003cimg width=\"1919\" height=\"688\" alt=\"Screenshot 2025-09-06 130255\" src=\"https://github.com/user-attachments/assets/56c26802-c7d8-4160-959d-f3fa58a7f28e\" /\u003e\n\u003cimg width=\"1919\" height=\"690\" alt=\"Screenshot 2025-09-06 130241\" src=\"https://github.com/user-attachments/assets/192cf45f-0948-4ef6-8fec-7dcdf0620c2f\" /\u003e\n\u003cimg width=\"1259\" height=\"674\" alt=\"Screenshot 2025-09-06 130545\" src=\"https://github.com/user-attachments/assets/d4a6818d-4f43-43ce-a70f-2611a3399ba7\" /\u003e\n\u003cimg width=\"635\" height=\"591\" alt=\"Screenshot 2025-09-06 130521\" src=\"https://github.com/user-attachments/assets/fd85e7e5-bbfb-4763-a282-044c72f31cf0\" /\u003e\n\u003cimg width=\"1919\" height=\"701\" alt=\"Screenshot 2025-09-06 130446\" src=\"https://github.com/user-attachments/assets/a78fe8dc-3d9b-40f9-a8c1-01a871ad5285\" /\u003e\n\u003cimg width=\"1919\" height=\"712\" alt=\"Screenshot 2025-09-06 130432\" src=\"https://github.com/user-attachments/assets/ab9f8864-c3ff-4346-b698-e49154b2b0f4\" /\u003e\n\u003cimg width=\"1235\" height=\"632\" alt=\"Screenshot 2025-09-06 130417\" src=\"https://github.com/user-attachments/assets/74fbd3a6-d781-4372-80ee-5a4b2a5ef0b6\" /\u003e\n\u003cimg width=\"1919\" height=\"728\" alt=\"Screenshot 2025-09-06 130408\" src=\"https://github.com/user-attachments/assets/e72743d1-ce32-435f-a550-95a1ac3e01ab\" /\u003e\n\u003cimg width=\"1918\" height=\"768\" alt=\"Screenshot 2025-09-06 130348\" src=\"https://github.com/user-attachments/assets/63e4bbf1-57f2-4c6b-bdf8-453531665be1\" /\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F04bhavyaa%2Ftodoapp-fastapi-clean-architecture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F04bhavyaa%2Ftodoapp-fastapi-clean-architecture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F04bhavyaa%2Ftodoapp-fastapi-clean-architecture/lists"}