{"id":13595968,"url":"https://github.com/vintasoftware/django-react-boilerplate","last_synced_at":"2025-05-14T02:05:53.026Z","repository":{"id":9903310,"uuid":"63726409","full_name":"vintasoftware/django-react-boilerplate","owner":"vintasoftware","description":"Django 5, React, Bootstrap 5 with Python 3 and Webpack project boilerplate","archived":false,"fork":false,"pushed_at":"2025-02-25T18:13:18.000Z","size":1165,"stargazers_count":2106,"open_issues_count":26,"forks_count":514,"subscribers_count":61,"default_branch":"main","last_synced_at":"2025-04-11T14:17:05.231Z","etag":null,"topics":["bootstrap","bootstrap4","celery","django","heroku","python","react","redux","typescript","webpack"],"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/vintasoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2016-07-19T20:37:29.000Z","updated_at":"2025-04-11T09:30:20.000Z","dependencies_parsed_at":"2022-08-07T05:15:15.470Z","dependency_job_id":"969d0e97-d693-4b82-8917-52a2fc11c419","html_url":"https://github.com/vintasoftware/django-react-boilerplate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vintasoftware%2Fdjango-react-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vintasoftware%2Fdjango-react-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vintasoftware%2Fdjango-react-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vintasoftware%2Fdjango-react-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vintasoftware","download_url":"https://codeload.github.com/vintasoftware/django-react-boilerplate/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254052692,"owners_count":22006716,"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":["bootstrap","bootstrap4","celery","django","heroku","python","react","redux","typescript","webpack"],"created_at":"2024-08-01T16:02:02.827Z","updated_at":"2025-05-14T02:05:48.012Z","avatar_url":"https://github.com/vintasoftware.png","language":"Python","readme":"# Django React Boilerplate\n\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)\n[![License: MIT](https://img.shields.io/github/license/vintasoftware/django-react-boilerplate.svg)](LICENSE.txt)\n\n## About\n\nA [Django](https://www.djangoproject.com/) project boilerplate/template with a multitude of state-of-the-art libraries and tools. If pairing Django with React is a possibility for your project or spinoff, this is the best solution available. Save time with tools like:\n\n-   [React](https://react.dev/), for building interactive UIs\n-   [TypeScript](https://www.typescriptlang.org/), for static type checking\n-   [Poetry](https://python-poetry.org/), for managing the environment and its dependencies\n-   [django-js-reverse](https://github.com/vintasoftware/django-js-reverse), for generating URLs on JS\n-   [React Bootstrap](https://react-bootstrap.github.io/), for responsive styling\n-   [Webpack](https://webpack.js.org/), for bundling static assets\n-   [Celery](https://docs.celeryq.dev/en/stable/), for background worker tasks\n-   [WhiteNoise](https://whitenoise.readthedocs.io/en/stable/) with [brotlipy](https://github.com/python-hyper/brotlicffi), for efficient static files serving\n-   [ruff](https://github.com/astral-sh/ruff) and [ESLint](https://eslint.org/) with [pre-commit](https://pre-commit.com/) for automated quality assurance (does not replace proper testing!)\n\nFor continuous integration, a [Github Action](https://github.com/features/actions) configuration `.github/workflows/main.yml` is included.\n\nAlso, includes a Render.com `render.yaml` and a working Django `production.py` settings, enabling easy deployments with ['Deploy to Render' button](https://render.com/docs/deploy-to-render). The `render.yaml` includes the following:\n\n-   PostgreSQL, for DB\n-   Redis, for Celery\n\n## Features Catalogue\n\n### Frontend\n\n-   `react` for building interactive UIs\n-   `react-dom` for rendering the UI\n-   `react-router` for page navigation\n-   `webpack` for bundling static assets\n-   `webpack-bundle-tracker` for providing the bundled assets to Django\n-   Styling\n    -   `bootstrap` for providing responsive stylesheets\n    -   `react-bootstrap` for providing components built on top of Bootstrap CSS without using plugins\n    -   `sass` for providing compatibility with SCSS files\n-   State management and backend integration\n    -   `axios` for performing asynchronous calls\n    -   `cookie` for easy integration with Django using the `csrftoken` cookie\n    -   `openapi-ts` for generating TypeScript client API code from the backend OpenAPI schema\n    -   `history` for providing browser history to Connected React Router\n-   Utilities\n    -   `lodash` for general utility functions\n    -   `classnames` for easy working with complex CSS class names on components\n    -   `react-refresh` for improving QoL while developing through automatic browser refreshing\n\n### Backend\n\n-   `django` for building backend logic using Python\n-   `djangorestframework` for building a REST API on top of Django\n-   `drf-spectacular` for generating an OpenAPI schema for the Django REST API\n-   `django-webpack-loader` for rendering the bundled frontend assets\n-   `django-js-reverse` for easy handling of Django URLs on JS\n-   `django-upgrade` for automatically upgrading Django code to the target version on pre-commit\n-   `django-guid` for adding a unique correlation ID to log messages from Django requests\n-   `psycopg` for using PostgreSQL database\n-   `sentry-sdk` for error monitoring\n-   `python-decouple` for reading environment variables on settings files\n-   `celery` for background worker tasks\n-   `django-csp` for setting the draft security HTTP header Content-Security-Policy\n-   `django-permissions-policy` for setting the draft security HTTP header Permissions-Policy\n-   `django-defender` for blocking brute force attacks against login\n-   `whitenoise` and `brotlipy` for serving static assets\n\n## Share your project!\n\nSeveral people have leveraged our boilerplate to start spinoffs or to boost their efforts in the challenging pursuit of securing funding. Starting with a solid foundation allows you to create more resilient products and focus on what really matters: discovering and delivering value to your customers. If you are one of those people, we're eager to help you even more! We can spread the word about your project across our social media platforms, giving you access to a broader audience.\n\nSend us an email at contact@vintasoftware.com telling us a bit more about how our boilerplate helped you boost your project.\n\n## Project bootstrap [![main](https://github.com/vintasoftware/django-react-boilerplate/actions/workflows/main.yml/badge.svg)](https://github.com/vintasoftware/django-react-boilerplate/actions/workflows/main.yml) [![Known Vulnerabilities](https://snyk.io/test/github/vintasoftware/django-react-boilerplate/badge.svg)](https://snyk.io/test/github/vintasoftware/django-react-boilerplate)\n\n-   [ ] Make sure you have Python 3.12 installed\n-   [ ] Install Django with `pip install django`, to have the `django-admin` command available\n-   [ ] Open the command line and go to the directory you want to start your project in\n-   [ ] Start your project using (replace `project_name` with your project name and remove the curly braces):\n    ```\n    django-admin startproject {{project_name}} --extension py,json,yml,yaml,toml --name Dockerfile,README.md,.env.example,.gitignore,Makefile --template=https://github.com/vintasoftware/django-react-boilerplate/archive/refs/heads/main.zip\n    ```\n    Alternatively, you may start the project in the current directory by placing a `.` right after the project name, using the following command:\n    ```\n    django-admin startproject {{project_name}} . --extension py,json,yml,yaml,toml --name Dockerfile,README.md,.env.example,.gitignore,Makefile --template=https://github.com/vintasoftware/django-react-boilerplate/archive/refs/heads/main.zip\n    ```\nIn the next steps, always remember to replace {{project_name}} with your project's name (in case it isn't yet):\n-   [ ] Above: don't forget the `--extension` and `--name` params!\n-   [ ] Go into project's root directory: `cd {{project_name}}`\n-   [ ] Change the first line of README to the name of the project\n-   [ ] Add an email address to the `ADMINS` settings variable in `{{project_name}}/backend/{{project_name}}/settings/base.py`\n-   [ ] Change the `SERVER_EMAIL` to the email address used to send e-mails in `{{project_name}}/backend/{{project_name}}/settings/production.py`\n\nAfter completing ALL of the above, remove this `Project bootstrap` section from the project README. Then follow `Running` below.\n\n## Running\n\n### Tools\n\n-   Setup [editorconfig](http://editorconfig.org/), [ruff](https://github.com/astral-sh/ruff) and [ESLint](http://eslint.org/) in the text editor you will use to develop.\n\n### Setup\n\n-   Do the following:\n    -   Create a git-untracked `local.py` settings file:\n        `cp backend/{{project_name}}/settings/local.py.example backend/{{project_name}}/settings/local.py`\n    -   Create a git-untracked `.env.example` file:\n        `cp backend/.env.example backend/.env`\n\n### If you are using Docker:\n\n-   Open the `backend/.env` file on a text editor and uncomment the line `DATABASE_URL=postgres://{{project_name}}:password@db:5432/{{project_name}}`\n-   Open a new command line window and go to the project's directory\n-   Run the initial setup:\n    `make docker_setup`\n-   Create the migrations for `users` app:\n    `make docker_makemigrations`\n-   Run the migrations:\n    `make docker_migrate`\n-   Run the project:\n    `make docker_up`\n-   Access `http://localhost:8000` on your browser and the project should be running there\n    -   When you run `make docker_up`, some containers are spinned up (frontend, backend, database, etc) and each one will be running on a different port\n    -   The container with the React app uses port 3000. However, if you try accessing it on your browser, the app won't appear there and you'll probably see a blank page with the \"Cannot GET /\" error\n    -   This happens because the container responsible for displaying the whole application is the Django app one (running on port 8000). The frontend container is responsible for providing a bundle with its assets for [django-webpack-loader](https://github.com/django-webpack/django-webpack-loader) to consume and render them on a Django template\n-   To access the logs for each service, run:\n    `make docker_logs \u003cservice name\u003e` (either `backend`, `frontend`, etc)\n-   To stop the project, run:\n    `make docker_down`\n\n#### Adding new dependencies\n\n-   Open a new command line window and go to the project's directory\n-   Update the dependencies management files by performing any number of the following steps:\n    -   To add a new **frontend** dependency, run `npm install \u003cpackage name\u003e --save`\n        \u003e The above command will update your `package.json`, but won't make the change effective inside the container yet\n    -   To add a new **backend** dependency, run `docker compose run --rm backend bash` to open an interactive shell and then run `poetry add {dependency}` to add the dependency. If the dependency should be only available for development user append `-G dev` to the command.\n    -   After updating the desired file(s), run `make docker_update_dependencies` to update the containers with the new dependencies\n        \u003e The above command will stop and re-build the containers in order to make the new dependencies effective\n\n### If you are not using Docker:\n\n#### Setup the backend app\n\n-   Open the `backend/.env` file on a text editor and do one of the following:\n    -   If you wish to use SQLite locally, uncomment the line `DATABASE_URL=sqlite:///db.sqlite3`\n    -   If you wish to use PostgreSQL locally, uncomment and edit the line `DATABASE_URL=postgres://{{project_name}}:password@db:5432/{{project_name}}` in order to make it correctly point to your database URL\n        -   The url format is the following: `postgres://USER:PASSWORD@HOST:PORT/NAME`\n    -   If you wish to use another database engine locally, add a new `DATABASE_URL` setting for the database you wish to use\n        -   Please refer to [dj-database-url](https://github.com/jazzband/dj-database-url#url-schema) on how to configure `DATABASE_URL` for commonly used engines\n-   Open a new command line window and go to the project's directory\n-   Run `poetry install`\n\n#### Run the backend app\n\n-   Go to the `backend` directory\n-   Create the migrations for `users` app:\n    `poetry run python manage.py makemigrations`\n-   Run the migrations:\n    `poetry run python manage.py migrate`\n-   Generate the OpenAPI schema:\n    `poetry run python manage.py spectacular --color --file schema.yml`\n-   Run the project:\n    `poetry run python manage.py runserver`\n\n#### Setup and run the frontend app\n\n-   Open a new command line window and go to the project's directory\n-   `npm install`\n-   `npm run openapi-ts`\n    -   This is used to generate the TypeScript client API code from the backend OpenAPI schema\n-   `npm run dev`\n    -   This is used to serve the frontend assets to be consumed by [django-webpack-loader](https://github.com/django-webpack/django-webpack-loader) and not to run the React application as usual, so don't worry if you try to check what's running on port 3000 and see an error on your browser\n-   Open a browser and go to `http://localhost:8000` to see the project running\n\n#### Setup Celery\n\n-   `poetry run celery --app={{project_name}} worker --loglevel=info`\n\n#### Setup Redis\n\n-   Ensure that Redis is already installed on your system. Once confirmed, run `redis-server --port 6379` to start the Redis server.\n-   If you wish to use Redis for Celery, you need to set the `CELERY_BROKER_URL` environment variable in the `backend/.env` file to `redis://localhost:6379/0`.\n    -   The `/0` at the end of the URL specifies the database number on the Redis server. Redis uses a zero-based numbering system for databases, so `0` is the first database. If you don't specify a database number, Redis will use the first database by default.\n    -   Note: Prefer RabbitMQ over Redis for Broker, mainly because RabbitMQ doesn't need visibility timeout. See [Recommended Celery Django settings for reliability](https://gist.github.com/fjsj/da41321ac96cf28a96235cb20e7236f6).\n\n#### Mailhog\n\n-   For development, we use Mailhog to test our e-mail workflows, since it allows us to inspect the messages to validate they're correctly built\n    -   Docker users already have it setup and running once they start the project\n    -   For non-Docker users, please have a look [here](https://github.com/mailhog/MailHog#installation) for instructions on how to setup Mailhog on specific environments\n        \u003e The project expects Mailhog SMTP server to be running on port 1025, you may alter that by changing `EMAIL_PORT` on settings\n\n### Testing\n\n`make test`\n\nWill run django tests using `--keepdb` and `--parallel`. You may pass a path to the desired test module in the make command. E.g.:\n\n`make test someapp.tests.test_views`\n\n### Adding new pypi libs\n\nTo add a new **backend** dependency, run `poetry add {dependency}`. If the dependency should be only available for development user append `-G dev` to the command.\n\n### API Schema and Client generation\n\nWe use the [`DRF-Spectacular`](https://drf-spectacular.readthedocs.io/en/latest/readme.html) tool to generate an OpenAPI schema from our Django Rest Framework API. The OpenAPI schema serves as the backbone for generating client code, creating comprehensive API documentation, and more.\n\nThe API documentation pages are accessible at `http://localhost:8000/api/schema/swagger-ui/` or `http://localhost:8000/api/schema/redoc/`.\n\n\u003e [!IMPORTANT]\n\u003e Anytime a view is created, updated, or removed, the schema must be updated to reflect the changes. Failing to do so can lead to outdated client code or documentation.\n\u003e\n\u003e To update the schema, run:\n\u003e - If you are using Docker: `make docker_backend_update_schema`\n\u003e - If you are not using Docker: `poetry run python manage.py spectacular --color --file schema.yml`\n\nWe use the [`openapi-ts`](https://heyapi.vercel.app/openapi-ts/get-started.html) tool to generate TypeScript client code from the OpenAPI schema. The generated client code is used to interact with the API in a type-safe manner.\n\n\u003e [!IMPORTANT]\n\u003e Anytime the API schema is updated, the client code must be regenerated to reflect the changes. Failing to do so can lead to type errors in the client code.\n\u003e\n\u003e To update the client code, run:\n\u003e - If you are using Docker: `make docker_frontend_update_api`\n\u003e - If you are not using Docker: `npm run openapi-ts`\n\n\u003e [!NOTE]\n\u003e If `pre-commit` is properly enabled, it will automatically update both schema and client before each commit whenever necessary.\n\n## Github Actions\n\nTo enable Continuous Integration through Github Actions, we provide a `proj_main.yml` file. To connect it to Github you need to rename it to `main.yml` and move it to the `.github/workflows/` directory.\n\nYou can do it with the following commands:\n\n```bash\nmkdir -p .github/workflows\nmv proj_main.yml .github/workflows/main.yml\n```\n\n## Production Deployment\n\n### Setup\n\nThis project comes with an `render.yaml` file, which can be used to create an app on Render.com from a GitHub repository.\n\nBefore deploying, please make sure you've generated an up-to-date `poetry.lock` file containing the Python dependencies. This is necessary even if you've used Docker for local runs. Do so by following [these instructions](#setup-the-backend-app).\n\nAfter setting up the project, you can init a repository and push it on GitHub. If your repository is public, you can use the following button:\n\n[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy)\n\nIf you are in a private repository, access the following link replacing `$YOUR_REPOSITORY_URL$` with your repository link.\n\n-   `https://render.com/deploy?repo=$YOUR_REPOSITORY_URL$`\n\nKeep reading to learn how to configure the prompted environment variables.\n\n#### `ALLOWED_HOSTS`\n\nChances are your project name isn't unique in Render, and you'll get a randomized suffix as your full app URL like: `https://{{project_name}}-a1b2.onrender.com`.\n\nBut this will only happen after the first deploy, so you are not able to properly fill `ALLOWED_HOSTS` yet. Simply set it to `*` then fix it later to something like `{{project_name}}-a1b2.onrender.com` and your domain name like `example.org`.\n\n#### `ENABLE_DJANGO_COLLECTSTATIC`\n\nDefault is 1, meaning the build script will run collectstatic during deploys.\n\n#### `AUTO_MIGRATE`\n\nDefault is 1, meaning the build script will run collectstatic during deploys.\n\n### Build script\n\nBy default, the project will always run the `render_build.sh` script during deployments. This script does the following:\n\n1.  Build the frontend\n2.  Build the backend\n3.  Run Django checks\n4.  Run `collectstatic`\n5.  Run Django migrations\n6.  Push frontend source maps to Sentry\n\n### Celery\n\nAs there aren't free plans for Workers in Render.com, the configuration for Celery workers/beat will be commented by default in the `render.yaml`. This means celery won't be available by default.\n\nUncommenting the worker configuration lines on `render.yaml` will imply in costs.\n\n### SendGrid\n\nTo enable sending emails from your application you'll need to have a valid SendGrid account and also a valid verified sender identity. After finishing the validation process you'll be able to generate the API credentials and define the `SENDGRID_USERNAME` and `SENDGRID_PASSWORD` environment variables on Render.com.\n\nThese variables are required for your application to work on Render.com since it's pre-configured to automatically email admins when the application is unable to handle errors gracefully.\n\n### Media storage\n\nMedia files integration with S3 or similar is not supported yet. Please feel free to contribute!\n\n### Sentry\n\n[Sentry](https://sentry.io) is already set up on the project. For production, add `SENTRY_DSN` environment variable on Render.com, with your Sentry DSN as the value.\n\nYou can test your Sentry configuration by deploying the boilerplate with the sample page and clicking on the corresponding button.\n\n### Sentry source maps for JS files\n\nThe `render_build.sh` script has a step to push Javascript source maps to Sentry, however some environment variables need to be set on Render.com.\n\nThe environment variables that need to be set are:\n\n-   `SENTRY_ORG` - Name of the Sentry Organization that owns your Sentry Project.\n-   `SENTRY_PROJECT_NAME` - Name of the Sentry Project.\n-   `SENTRY_API_KEY` - Sentry API key that needs to be generated on Sentry. [You can find or create authentication tokens within Sentry](https://sentry.io/api/).\n\nAfter enabling dyno metadata and setting the environment variables, your next Render.com Deploys will create a release on Sentry where the release name is the commit SHA, and it will push the source maps to it.\n\n## Linting\n\n-   At pre-commit time (see below)\n-   Manually with `poetry run ruff` and `npm run lint` on project root.\n-   During development with an editor compatible with ruff and ESLint.\n\n## Pre-commit hooks\n\n### If you are using Docker:\n\n-   Not supported yet. Please feel free to contribute!\n\n### If you are not using Docker:\n\n-   On project root, run `poetry run pre-commit install` to enable the hook into your git repo. The hook will run automatically for each commit.\n\n## Opinionated Settings\n\nSome settings defaults were decided based on Vinta's experiences. Here's the rationale behind them:\n\n### `DATABASES[\"default\"][\"ATOMIC_REQUESTS\"] = True`\n\n- Using atomic requests in production prevents several database consistency issues. Check [Django docs for more details](https://docs.djangoproject.com/en/5.0/topics/db/transactions/#tying-transactions-to-http-requests).\n\n- **Important:** When you are queueing a new Celery task directly from a Django view, particularly with little or no delay/ETA, it is essential to use `transaction.on_commit(lambda: my_task.delay())`. This ensures that the task is only queued after the associated database transaction has been successfully committed.\n  - If `transaction.on_commit` is not utilized, or if a significant delay is not set, you risk encountering race conditions. In such scenarios, the Celery task might execute before the completion of the request's transaction. This can lead to inconsistencies and unexpected behavior, as the task might operate on a database state that does not yet reflect the changes made in the transaction. Read more about this problem on [this article](https://www.vinta.com.br/blog/database-concurrency-in-django-the-right-way).\n\n### `CELERY_TASK_ACKS_LATE = True`\n\n- We believe Celery tasks should be idempotent. So for us it's safe to set `CELERY_TASK_ACKS_LATE = True` to ensure tasks will be re-queued after a worker failure. Check Celery docs on [\"Should I use retry or acks_late?\"](https://docs.celeryq.dev/en/stable/faq.html#faq-acks-late-vs-retry) for more info.\n\n### Django-CSP\n\nDjango-CSP helps implementing Content Security Policy (CSP) in Django projects to mitigate cross-site scripting (XSS) attacks by declaring which dynamic resources are allowed to load.\n\nIn this project, we have defined several CSP settings that define the sources from which different types of resources can be loaded. If you need to load external images, fonts, or other resources, you will need to add the sources to the corresponding CSP settings. For example:\n- To load scripts from an external source, such as https://browser.sentry-cdn.com, you would add this source to `CSP_SCRIPT_SRC`.\n- To load images from an external source, such as https://example.com, you would add this source to `CSP_IMG_SRC`.\n\nPlease note that you should only add trusted sources to these settings to maintain the security of your site. For more details, please refer to the [Django-CSP documentation](https://django-csp.readthedocs.io/en/latest/).\n\n## Contributing\n\nIf you wish to contribute to this project, please first discuss the change you wish to make via an [issue](https://github.com/vintasoftware/django-react-boilerplate/issues).\n\nCheck our [contributing guide](https://github.com/vintasoftware/django-react-boilerplate/blob/main/CONTRIBUTING.md) to learn more about our development process and how you can test your changes to the boilerplate.\n\n## Commercial Support\n\n[![alt text](https://avatars2.githubusercontent.com/u/5529080?s=80\u0026v=4 \"Vinta Logo\")](https://www.vinta.com.br/)\n\nThis project is maintained by [Vinta Software](https://www.vinta.com.br/) and is used in products of Vinta's clients. We are always looking for exciting work! If you need any commercial support, feel free to get in touch: contact@vinta.com.br\n","funding_links":[],"categories":["Projects","Uncategorized","Python","Django"],"sub_categories":["Boilerplate","Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvintasoftware%2Fdjango-react-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvintasoftware%2Fdjango-react-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvintasoftware%2Fdjango-react-boilerplate/lists"}