{"id":22192075,"url":"https://github.com/jordan-kowal/django-react-starter","last_synced_at":"2025-12-30T20:05:52.532Z","repository":{"id":159298787,"uuid":"628364403","full_name":"Jordan-Kowal/django-react-starter","owner":"Jordan-Kowal","description":"Django-React starter with Docker support for fast and easy web development.","archived":false,"fork":false,"pushed_at":"2024-03-05T23:23:13.000Z","size":676,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-03-06T21:53:49.364Z","etag":null,"topics":["django","docker","docker-compose","javascript","python","react","starter","vite"],"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/Jordan-Kowal.png","metadata":{"files":{"readme":"README.example.md","changelog":"CHANGELOG.example.md","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}},"created_at":"2023-04-15T18:04:22.000Z","updated_at":"2024-04-14T19:28:09.674Z","dependencies_parsed_at":"2023-11-29T01:27:11.845Z","dependency_job_id":"7caa5eda-353e-4758-9612-9510f88ea485","html_url":"https://github.com/Jordan-Kowal/django-react-starter","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jordan-Kowal%2Fdjango-react-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jordan-Kowal%2Fdjango-react-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jordan-Kowal%2Fdjango-react-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jordan-Kowal%2Fdjango-react-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jordan-Kowal","download_url":"https://codeload.github.com/Jordan-Kowal/django-react-starter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245351762,"owners_count":20601090,"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","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":["django","docker","docker-compose","javascript","python","react","starter","vite"],"created_at":"2024-12-02T12:19:07.462Z","updated_at":"2025-10-31T08:40:41.720Z","avatar_url":"https://github.com/Jordan-Kowal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Django React Starter\n\n- [Django React Starter](#django-react-starter)\n  - [Structure](#structure)\n  - [Getting started](#getting-started)\n    - [Pre-requisites](#pre-requisites)\n    - [Installation](#installation)\n  - [Running the app](#running-the-app)\n    - [How it works](#how-it-works)\n    - [Running commands](#running-commands)\n  - [QA](#qa)\n    - [Using git hooks](#using-git-hooks)\n    - [GitHub Actions](#github-actions)\n  - [Available URLs](#available-urls)\n  - [Deployment](#deployment)\n  - [Made by JKDev](#made-by-jkdev)\n\n## Structure\n\nThis project contains both the frontend and backend of the application:\n\n- `/backend`: Django application which uses:\n  - `Postgres` for the database\n  - `RabbitMQ` for the message broker\n  - `Celery` for background tasks\n  - `MeiliSearch` for search\n- `/frontend`: React application\n\nNote that when building and deploying the application, the frontend is built\nand served by the backend directly, meaning we only deploy 1 application.\n\n## Getting started\n\n### Pre-requisites\n\nThis application is build using `docker` and `docker compose`. Make sure to install them:\n\n- [Docker](https://docs.docker.com/install/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n\n### Installation\n\nBefore starting the application, you will need to create the `.env` and `.env.test` files\n\n```shell\ncp backend/.env.example backend/.env\ncp backend/.env.test.example backend/.env.test\n```\n\nThen you can start the application:\n\n```shell\ndocker compose up\n# or\nmake start\n# or\nmake start.lite\n```\n\nYou might need to update the frontend's `vite.config.ts` **server** options based on\nwhether the backend is running locally or within docker.\n\n_Also, while the entire project runs with `docker compose`, you might want to_\n_install a python virtual environment and the node modules locally_\n_for a better IDE experience._\n\n## Running the app\n\n### How it works\n\nRegarding the way we boot the Django app:\n\n- `docker compose up` will built and boot all of our **containers**\n- The **django container** will call `supervisord` to boot the Django app\n- The `supervisord.conf` will call both `run-app.sh` and `run-celery-worker.sh`\n- `run-app.sh` will run a few commands and start the app\n\nAlso, when building the production image, the frontend is built and served by the backend directly.\n\n### Running commands\n\nBecause everything runs in docker containers,\ncommands also need to be run inside the container.\nTo make things simpler, a `Makefile` is provided\nfor frequent/common commands.\n\n```shell\nmake backend.makemigrations\nmake frontend.test\nmake setup_hooks\n```\n\nRun `make help` for more info.\n\n## QA\n\n### Using git hooks\n\nGit hooks are set in the [.githooks](.githooks) folder\n_(as `.git/hooks` is not tracked in `.git`)_\n\nRun the following command to tell `git` to look for hooks in this folder:\n\n```shell\ngit config core.hooksPath .githooks\n```\n\nor you can run the `Makefile` action\n\n```shell\nmake setup_hooks\n```\n\n### GitHub Actions\n\nWe use GitHub actions to verify, build, and deploy the application. We currently have:\n\n- [dependabot](.github/dependabot.yml): Dependabot configuration for frontend dependencies\n- [update-uv-lockfile](.github/workflows/update-uv-lockfile.yml): Updates the uv lockfile\n- [qa-backend](.github/workflows/qa-backend.yml): runs ruff, ty, and tests\n- [qa-frontend](.github/workflows/qa-frontend.yml): runs biome, tsc, translations, and frontend tests\n- [deploy-staging](.github/workflows/deploy-staging.yml): deploys the application on staging using **fly.io**\n- [deploy-production](.github/workflows/deploy-production.yml): deploys the application on production using **fly.io**\n\n## Available URLs\n\n| Name             | URL                                  |\n|------------------|--------------------------------------|\n| Frontend         | \u003chttp://localhost:3000/\u003e             |\n| Backend          |                                      |\n| -- Home          | \u003chttp://localhost:8000/\u003e             |\n| -- Admin         | \u003chttp://localhost:8000/admin/\u003e       |\n| -- Swagger       | \u003chttp://localhost:8000/api/swagger/\u003e |\n| -- API           | \u003chttp://localhost:8000/api/v1/\u003e      |\n| Meilisearch      |                                      |\n| -- Default UI    | \u003chttp://localhost:7700/\u003e             |\n| -- Advanced UI   | \u003chttp://localhost:24900/\u003e            |\n| RabbitMQ         |                                      |\n| -- Connection    | \u003chttp://localhost:5672/\u003e             |\n| -- Management UI | \u003chttp://localhost:15672/\u003e            |\n\n## Deployment\n\nDeployment is done through [fly.io](https://fly.io/).\nWhen deploying the application **for the first time**, you will need to:\n\n- Create an account on [fly.io](https://fly.io)\n- Install the `flyctl` CLI\n- Run `fly launch` to create a new application\n- Configure it however you want\n- Make sure to set the `FLY_ACCESS_TOKEN` secret in the GitHub repository\n- Then create a new release to trigger the deploy github action\n\n## Made by JKDev\n\n\u003cimg alt=\"JKDev logo\" src=\"https://jordan-kowal.github.io/assets/jkdev/logo.png\" width=\"100\" /\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjordan-kowal%2Fdjango-react-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjordan-kowal%2Fdjango-react-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjordan-kowal%2Fdjango-react-starter/lists"}