{"id":31698802,"url":"https://github.com/blandoncj/contact-flow-api","last_synced_at":"2026-04-14T23:33:25.272Z","repository":{"id":318494369,"uuid":"1071530862","full_name":"blandoncj/contact-flow-api","owner":"blandoncj","description":"FastAPI-based contact management system with JWT/OAuth2 security, MySQL database, and Docker deployment. Implements user authentication and full CRUD functionality.","archived":false,"fork":false,"pushed_at":"2025-10-07T13:33:20.000Z","size":20,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-07T15:26:23.755Z","etag":null,"topics":["api","fastapi","jwt","mysql","oauth2","python","rest-api"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blandoncj.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-10-07T13:25:57.000Z","updated_at":"2025-10-07T14:12:30.000Z","dependencies_parsed_at":"2025-10-07T15:26:26.092Z","dependency_job_id":"6db73786-d027-4911-afb4-6c5cd8398009","html_url":"https://github.com/blandoncj/contact-flow-api","commit_stats":null,"previous_names":["blandoncj/contact-flow-api"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/blandoncj/contact-flow-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blandoncj%2Fcontact-flow-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blandoncj%2Fcontact-flow-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blandoncj%2Fcontact-flow-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blandoncj%2Fcontact-flow-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blandoncj","download_url":"https://codeload.github.com/blandoncj/contact-flow-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blandoncj%2Fcontact-flow-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31819787,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"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":["api","fastapi","jwt","mysql","oauth2","python","rest-api"],"created_at":"2025-10-08T19:10:55.509Z","updated_at":"2026-04-14T23:33:25.249Z","avatar_url":"https://github.com/blandoncj.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Contact Flow API\n\n![Python](https://img.shields.io/badge/Python-3.12-%233776AB?logo=python\u0026logoColor=%233776AB)\n![FastAPI](https://img.shields.io/badge/FastAPI-Framework-%23009688?logo=fastapi\u0026logoColor=%23009688)\n![MySQL](https://img.shields.io/badge/MySQL-8.0-%234479A1?logo=mysql\u0026logoColor=%234479A1)\n![JWT](https://img.shields.io/badge/JWT-Authentication-%23323330?logo=jsonwebtokens\u0026logoColor=%23323330)\n![Docker](https://img.shields.io/badge/Docker-2496ED?logo=docker\u0026logoColor=white)\n![OAuth2](https://img.shields.io/badge/OAuth2-F4474F)\n\nAPI for managing contacts, enabling users to authenticate and perform CRUD operations\non their contact list.\n\n## Table of Contents\n\n- [Contact Flow API](#contact-flow-api)\n  - [Table of Contents](#table-of-contents)\n  - [Features](#features)\n  - [Prerequisites](#prerequisites)\n  - [Setup](#setup)\n  - [License](#license)\n  - [Author](#author)\n  - [Contributing](#contributing)\n\n## Features\n\n- **User Authentication**: Users can register, login and obtain a JWT token to\nauthenticate themselves.\n- **CRUD Operations**: Users can create, read, update and delete contacts.\n- **Security**: The API uses JWT for authentication and OAuth2 for authorization.\n- **Dockerized**: The API is containerized using Docker.\n- **API Documentation**: The API is documented using Swagger UI.\n\n## Prerequisites\n\n- [Docker](https://www.docker.com/)\n- [Python](https://www.python.org/)\n\n## Setup\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/blandoncj/ContactFlow-API.git \n```\n\n2. Change directory:\n\n```bash\ncd ContactFlow-API\n```\n\n3. Create a `.env` file in the root directory and add the following environment variables:\n\n```bash\nAPI_KEY=your_api_key\nSECRET_KEY=your_secret_key\nMYSQL_USER=your_mysql_user\nMYSQL_PASSWORD=your_mysql_password\nMYSQL_ROOT_PASSWORD=your_mysql_root_password\nMYSQL_HOST=your_mysql_host # docker-compose service hostname (e.g contact_flow)\nMYSQL_PORT=your_mysql_port # docker-compose service port (e.g 3306)\nMYSQL_DATABASE=your_mysql_database\n```\n\n4. Build and run the Docker containers:\n  \n```bash\ndocker-compose build\ndocker-compose up -d\n```\n\n\u003e [!NOTE]\n\u003e The API will be available at \u003chttp://localhost:8000/docs\u003e and the database will be available at \u003chttp://localhost:8080\u003e (adminer).\n\n5. Create the database tables:\n  \n```sql\nCREATE TABLE users (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    fullname VARCHAR(50) NOT NULL,\n    username VARCHAR(15) NOT NULL UNIQUE,\n    password VARCHAR(255) NOT NULL,\n    is_active BOOLEAN DEFAULT TRUE\n);\n\nCREATE TABLE contacts (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    firstname VARCHAR(50) NOT NULL,\n    lastname VARCHAR(50),\n    email VARCHAR(50),\n    is_favorite BOOLEAN DEFAULT FALSE,\n    user_id INT NOT NULL,\n    FOREIGN KEY (user_id) REFERENCES users(id)\n);\n\nCREATE TABLE phones (\n  id INT AUTO_INCREMENT PRIMARY KEY,\n  number VARCHAR(20) NOT NULL,\n  contact_id INT NOT NULL,\n  FOREIGN KEY (contact_id) REFERENCES contacts(id)\n)\n```\n\n## License\n\n\u003e This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Author\n\nMade with ❤️  by [blandoncj](https://github.com/blandoncj)\n\n## Contributing\n\nContributions are welcome. Please open a issue or create a pull request to contribute.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblandoncj%2Fcontact-flow-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblandoncj%2Fcontact-flow-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblandoncj%2Fcontact-flow-api/lists"}