{"id":21223850,"url":"https://github.com/thejasmeetsingh/django-deployer","last_synced_at":"2026-04-10T12:31:44.417Z","repository":{"id":235747807,"uuid":"791152968","full_name":"thejasmeetsingh/django-deployer","owner":"thejasmeetsingh","description":"Allows users to deploy their Django application on AWS with just one click.","archived":false,"fork":false,"pushed_at":"2024-06-14T04:12:45.000Z","size":3800,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-26T16:23:10.544Z","etag":null,"topics":["alembic","asynchronous-programming","aws","boto3","celery","docker","fastapi","gunicorn","microservice","nginx","postgresql","pydantic","python3","rabbitmq","redis","restful-api","rpc","sqlalchemy","terraform","uvicorn"],"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/thejasmeetsingh.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}},"created_at":"2024-04-24T07:33:39.000Z","updated_at":"2024-06-14T04:12:48.000Z","dependencies_parsed_at":"2024-11-20T22:55:20.016Z","dependency_job_id":"8acd8b2d-83a5-4ab6-bbb3-6736e6a7e001","html_url":"https://github.com/thejasmeetsingh/django-deployer","commit_stats":null,"previous_names":["thejasmeetsingh/django-deployer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thejasmeetsingh/django-deployer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thejasmeetsingh%2Fdjango-deployer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thejasmeetsingh%2Fdjango-deployer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thejasmeetsingh%2Fdjango-deployer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thejasmeetsingh%2Fdjango-deployer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thejasmeetsingh","download_url":"https://codeload.github.com/thejasmeetsingh/django-deployer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thejasmeetsingh%2Fdjango-deployer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31642708,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-10T07:40:12.752Z","status":"ssl_error","status_checked_at":"2026-04-10T07:40:11.664Z","response_time":98,"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":["alembic","asynchronous-programming","aws","boto3","celery","docker","fastapi","gunicorn","microservice","nginx","postgresql","pydantic","python3","rabbitmq","redis","restful-api","rpc","sqlalchemy","terraform","uvicorn"],"created_at":"2024-11-20T22:53:40.152Z","updated_at":"2026-04-10T12:31:43.682Z","avatar_url":"https://github.com/thejasmeetsingh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Django Deployer\n\nDjango Deployer is a microservice-based application designed to enable users to deploy their Django applications on AWS with a single click. This project leverages various technologies, including Python, FastAPI, PostgreSQL, Redis, Docker, RabbitMQ, Celery, Terraform, Nginx and Boto3, to automate the deployment process.\n\n## Features\n\n![](./assets/overview.png)\n\n### Admin Service\n\n- **Instance Management:** Admins can add different instance types (e.g., t2.micro, t3a.small) and associate them with predefined plans (Low, Medium, High).\n- **Plan Management:** Admins can create and update plans and associate them with instance types.\n- **JWT Authentication:** Secure access to APIs, allowing only pre-configured admins to log in.\n- **RabbitMQ Integration:** Facilitates sending plan and instance data to the User service via RPC calls.\n\n### User Service\n\n- **Plan and Instance Retrieval:** Provides users with a list of plans and instance types to choose from.\n- **Deployment API:** Collects user details, **Public** GitHub repository link, selected plan, and instance details, then initiates the deployment process.\n- **RabbitMQ Integration:** Retrieves plan and instance data from the Admin service and queues tasks for the Deployer service using RabbitMQ.\n\n### Deployer Service\n\n- **Task Processing:** Handles deployment tasks by processing user inputs, preparing the project for deployment, and uploading the necessary files to S3.\n- **Terraform Execution:** Sets up the infrastructure based on the selected instance type and runs the required scripts to configure the instance.\n- **Deployment Script:** Installs necessary software and libraries, downloads the project files from S3, and runs the application onto the instance.\n- **Notification:** Sends an email to the user with the deployment status (success or failure) and the Public IPv4 DNS address if successful. ![](./assets/succeeded.jpg) ![](./assets/failed.jpg)\n\n## Usage\n\n### Admin Operations\n\n- **Manage Plans and Instances:** Admins can perform CRUD operations on plans and instances, including viewing the list, viewing details, adding, updating, and deleting plans and instances.\n- **Interaction via REST API:** Admins interact with the Admin service via REST API calls.\n\n### User Operations\n\n- **Select Plan and Instance:** Users can choose from available plans and instance types.\n- **Deploy Application:** Users can initiate the deployment process by providing their email, **Public** GitHub repository link, and selected plan details.\n- **Interaction via REST API:** Users interact with the User service via REST API calls.\n\n### Deployer Operations\n\n- **Automated Deployment:** The service processes the deployment tasks, sets up the infrastructure, and deploys the application on AWS.\n- **Internal Service:** Only the User service interacts with the Deployer service internally; End users cannot directly interact with the Deployer service.\n\n## Future Enhancements\n\n- Database Integration.\n- Environment Variable Support.\n- SSL/TLS and HTTPS Integration.\n- UI for interacting with admin and user service APIs.\n\n## Getting Started\n\n**Pre-requisites:**\n\n- [Docker](https://www.docker.com/products/docker-desktop/)\n- AWS Account with necessary permissions for Terraform.\n- A verified domain should be added on AWS SES.\n- And, S3 Bucket for storing codebase files.\n\n**Few Caveats:**\n\n- The project you need to deployed should be available on GitHub and should be a public repository.\n- The project structure should look like this:\n  ```\n  mysite/\n      manage.py\n      mysite/\n          __init__.py\n          settings.py\n          urls.py\n          asgi.py\n          wsgi.py\n      polls/\n          __init__.py\n          admin.py\n          apps.py\n          migrations/\n              __init__.py\n          models.py\n          tests.py\n          views.py\n  ```\n\n**Start/Stop the services:**\n\n1. Clone the project repository to your local machine.\n\n2. Open a terminal and navigate to the project directory.\n\n3. Run `make up` to start all the services.\n\n4. To stop the services, Run `make down`.\n\n## API Collection\n\n[\u003cimg src=\"https://run.pstmn.io/button.svg\" alt=\"Run In Postman\" style=\"width: 128px; height: 32px;\"\u003e](https://app.getpostman.com/run-collection/17396704-892d5957-4c38-42b6-a408-5719aa8632aa?action=collection%2Ffork\u0026source=rip_markdown\u0026collection-url=entityId%3D17396704-892d5957-4c38-42b6-a408-5719aa8632aa%26entityType%3Dcollection%26workspaceId%3D392b781a-05ab-415b-9eb8-456aca6f3129)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthejasmeetsingh%2Fdjango-deployer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthejasmeetsingh%2Fdjango-deployer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthejasmeetsingh%2Fdjango-deployer/lists"}