{"id":34501513,"url":"https://github.com/morikeli/bundi-chat","last_synced_at":"2025-12-24T02:02:39.715Z","repository":{"id":324695555,"uuid":"1098140944","full_name":"morikeli/bundi-chat","owner":"morikeli","description":"A FastAPI-based backend ⚡ powered by Tortoise ORM, providing a secure chat application with features like encrypted messaging, user authentication, and real-time communication.","archived":false,"fork":false,"pushed_at":"2025-11-17T11:21:57.000Z","size":67,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-17T12:11:00.929Z","etag":null,"topics":["chat","chat-app","chat-application","fastapi","fastapi-crud","pydantic","pydantic-v2","python","python-3","python3","tortoise-orm","websocket","websocket-application","websocket-chat","websocket-server","websockets"],"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/morikeli.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-11-17T10:02:05.000Z","updated_at":"2025-11-17T11:47:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/morikeli/bundi-chat","commit_stats":null,"previous_names":["morikeli/bundi-chat"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/morikeli/bundi-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morikeli%2Fbundi-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morikeli%2Fbundi-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morikeli%2Fbundi-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morikeli%2Fbundi-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/morikeli","download_url":"https://codeload.github.com/morikeli/bundi-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/morikeli%2Fbundi-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27992996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["chat","chat-app","chat-application","fastapi","fastapi-crud","pydantic","pydantic-v2","python","python-3","python3","tortoise-orm","websocket","websocket-application","websocket-chat","websocket-server","websockets"],"created_at":"2025-12-24T02:02:20.996Z","updated_at":"2025-12-24T02:02:39.706Z","avatar_url":"https://github.com/morikeli.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **🔐 BundiChat Backend**\r\n\r\n## **📌 Overview**\r\n\r\nBundiChat backend is a fast, scalable, and privacy-focused chat server built with **FastAPI**, **Tortoise ORM**, **Docker**, and **uv** for dependency management.\r\nIt powers a real-time messaging platform with secure authentication, encrypted communication workflows, user avatars, and async performance optimized for production.\r\n\r\n---\r\n\r\n### **📂 Project Structure**\r\n\r\n```\r\n.\r\n├── app/\r\n│   ├── core/\r\n|   ├── middleware/\r\n│   ├── models/\r\n|   ├── routers/\r\n|   ├── schemas/\r\n│   ├── services/\r\n│   ├── utils/\r\n│   ├── __init__.py\r\n│\r\n├── migrations/\r\n├── .dockerignore\r\n├── .env.example\r\n├── .gitignore\r\n├── .python-version\r\n├── Dockerfile\r\n├── README.md\r\n├── docker-compose.yml\r\n├── pyproject.toml\r\n└── uv.lock\r\n```\r\n\r\n## **🛠️ Developer Instructions**\r\n### **Prerequisites**\r\n* 🐍 Python - v3.9+\r\n* 🗃️ uv\r\n* 🐋 Docker\r\n\r\n### **🔧 Tech Stack**\r\n\r\n* **FastAPI** — async high-performance API framework\r\n*  **Tortoise ORM** — expressive async ORM\r\n* **Docker \u0026 Docker Compose** — containerization and running multi-container Docker app, and deployment\r\n* **uv** — dependency \u0026 environment manager\r\n* **WebSockets** — real-time communication\r\n* **PostgreSQL** — storage backend\r\n\r\n---\r\n**NOTE**\r\n\r\n- Make sure you have installed Docker on your machine. Refer to [Docker's installation guide]() and follow a step-by-step guide on how you can install Docker on your OS. If you don't wish to use Docker, check `**NOTE**` section below.\r\n- Make sure you have installed `uv` package manager. Refer to [uv's documentation]() for more info.\r\n\r\n### Docker installation guide\r\n- [Install Docker on Windows](https://docs.docker.com/desktop/setup/install/windows-install)\r\n- Linux:\r\n  - [Install Docker on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)\r\n  - [Install Docker on Debian](https://docs.docker.com/engine/install/debian/)\r\n  - [Install Docker on Fedora](https://docs.docker.com/engine/install/fedora/)\r\n\r\n- [Install Docker on macOS](https://docs.docker.com/desktop/setup/install/mac-install)\r\n\r\nOnce installed, check version using the following commands:\r\n\r\n```bash\r\ndocker --version\r\ndocker compose version\r\n```\r\n\r\n---\r\n\r\nFollow these steps to run the app successfully:\r\n\r\n1. Clone the Project\r\n\r\n```bash\r\ngit clone https://github.com/morikeli/bundi-chat.git\r\ncd bundi-chat\r\n```\r\n\r\n2. Using uv\r\nInstall dependencies from pyproject.toml:\r\n\r\n```bash\r\nuv sync\r\n```\r\nIf you wish to install new dependencies run this command:\r\n\r\n```bash\r\nuv add \u003cpackage-name\u003e\r\n```\r\n\r\n---\r\n\r\n**NOTE**: You can also install multiple packages separated by spaces. For example:\r\n\r\n```bash\r\nuv add \u003cpackage-1\u003e \u003cpackage-2\u003e \u003cpackage-3\u003e \u003cpackage-4\u003e\r\n```\r\n\r\nIf you don't wish to use Docker to run the app, you can use the following commands:\r\n\r\nRun server:\r\n\r\n```bash\r\nuv run fastapi dev\r\n```\r\nYou can also use this command to run the development server\r\n\r\n```bash\r\nuvicorn app:app --reload\r\n```\r\n\r\nAPI documentation is available at:\r\n\r\n* Swagger UI → `http://localhost:8000/api/v1/docs`\r\n* ReDoc → `http://localhost:8000/api/v1/redoc`\r\n\r\n---\r\n\r\n3. Run Using Docker Compose (Recommended)\r\n\r\nMake sure Docker is installed in your local machine.\r\n\r\nBuild and start the container. In Linux, it requires sudo privileges to use docker commands. Therefore use `sudo` before each command:\r\n\r\n```bash\r\ndocker compose up --build\r\n\r\n# If you want to run the container in the background, use:\r\n# docker compose up -d\r\n```\r\n\r\nTo stop containers run this command:\r\n\r\n```bash\r\ndocker compose down\r\n```\r\n\r\nTo view logs, run this command:\r\n\r\n```bash\r\ndocker compose logs -f\r\n```\r\n\r\n---\r\n**Miscellaneous**\r\n\r\nIf you wish to apply linting or script formatting using uv, run the following commands:\r\n\r\n#### **🧹 Linting \u0026 Formatting**\r\n\r\n```bash\r\nuv run ruff check .\r\nuv run ruff format .\r\n```\r\n\r\n---\r\n\r\n## **🤝 Contributions**\r\n\r\nContributions are welcome! 🎉\r\n\r\n### How to contribute:\r\n\r\n1. **Fork** the repo\r\n2. **Create a feature branch**\r\n3. Commit changes with clear messages\r\n4. Submit a **pull request**\r\n5. Follow existing code style \u0026 project structure\r\n\r\nOpen issues anytime for bugs, feature suggestions, or discussions.\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorikeli%2Fbundi-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmorikeli%2Fbundi-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmorikeli%2Fbundi-chat/lists"}