{"id":13416237,"url":"https://github.com/epicserve/django-base-site","last_synced_at":"2025-06-22T16:09:05.248Z","repository":{"id":2300680,"uuid":"1356026","full_name":"epicserve/django-base-site","owner":"epicserve","description":"The Django Base Site is a Django site that is built using the best Django practices and comes with all the common Django packages that you need to jumpstart your next project.","archived":false,"fork":false,"pushed_at":"2025-06-14T14:00:36.000Z","size":8055,"stargazers_count":434,"open_issues_count":7,"forks_count":46,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-06-14T14:38:11.156Z","etag":null,"topics":["boilerplate","django","python","starter-template","tools","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/epicserve.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2011-02-11T18:03:20.000Z","updated_at":"2025-06-14T14:00:38.000Z","dependencies_parsed_at":"2023-12-31T23:20:21.562Z","dependency_job_id":"b49e356a-93a6-4fbc-baa8-9d4cec1a436b","html_url":"https://github.com/epicserve/django-base-site","commit_stats":{"total_commits":564,"total_committers":3,"mean_commits":188.0,"dds":"0.11170212765957444","last_synced_commit":"baa61e75413731f11c3e915fe77e8bf737aea5dc"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/epicserve/django-base-site","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicserve%2Fdjango-base-site","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicserve%2Fdjango-base-site/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicserve%2Fdjango-base-site/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicserve%2Fdjango-base-site/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/epicserve","download_url":"https://codeload.github.com/epicserve/django-base-site/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epicserve%2Fdjango-base-site/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261320427,"owners_count":23140941,"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":["boilerplate","django","python","starter-template","tools","vite"],"created_at":"2024-07-30T21:00:55.871Z","updated_at":"2025-06-22T16:09:00.233Z","avatar_url":"https://github.com/epicserve.png","language":"Python","funding_links":[],"categories":["Projects","Python"],"sub_categories":["Boilerplate"],"readme":"\u003ch1 align=\"center\"\u003eDjango Base Site\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/epicserve/django-base-site/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/epicserve/django-base-site/actions/workflows/ci.yml/badge.svg?branch=main\u0026event=push\" alt=\"CI\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://django-base-site.readthedocs.io/en/latest/?badge=latest\"\u003e\n    \u003cimg src=\"https://readthedocs.org/projects/django-base-site/badge/?version=latest\" alt=\"Documentation Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/epicserve/django-base-site/blob/main/LICENSE.md\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/epicserve/django-base-site.svg\" alt=\"license\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n**Documentation**: [django-base-site.readthedocs.org](http://django-base-site.readthedocs.org/)  \n**Source Code**: [github.com/epicserve/django-base-site](https://github.com/epicserve/django-base-site/)\n\n---\n\n\u003c!--intro-start--\u003e\nThe Django Base Site is an opinionated starter template to jump-start any new Django project. It has been lovingly\nmaintained for over twelve years and has been used to jump-start many other projects. Because it is organized logically,\nit will help you and your team collaborate and stay organized as your project grows. All the best practices and tools\nare used to help you save days of mundane setup and tooling! This Django boilerplate/starter template will help you or\nyour team deploy your site to production in minutes instead of days.\n\nTo get started, jump to the [installation](#installation) section or keep reading to learn more about the included\nfeatures.\n\u003c!--intro-end--\u003e\n\n\u003c!--readme-start--\u003e\n\n## ✨ Features\n\n### 🧑‍💻 Best Practices\n\n* [Environs](https://github.com/sloria/environs) - Used for managing environment variables\n* [Docker](https://www.docker.com/) - Docker Compose for development and a multi-stage Dockerfile for production ready\n  Docker image\n* [UV](https://github.com/astral-sh/uv) - Used to maintain python requirements\n* [Just](https://github.com/casey/just) - Popular tool for running common commands (make equivalent)\n* [python-json-logger](https://github.com/madzak/python-json-logger) and [readable-log-formatter](https://github.com/ipmb/readable-log-formatter) - Use JSON logging for better log parsing\n\n### 📦️ Django Packages\n\n* [Django 5](https://www.djangoproject.com/) - Latest version of Django\n* [Celery](http://docs.celeryproject.org/) - Most popular task runner for running asynchronous tasks in the background\n* [Custom User Model][custom_user_model] - Custom user model so that the user model can be easily extended\n* [Django Allauth](http://www.intenct.nl/projects/django-allauth/) - The most popular package for adding authentication\n  workflows to a Django project\n* [Django Crispy Forms](https://github.com/django-crispy-forms/django-crispy-forms) - The most popular helper for working with Django forms\n* [Django Alive](https://github.com/lincolnloop/django-alive/) - A simple health check package for Django\n* [Django Maintenance Mode](https://github.com/fabiocaccamo/django-maintenance-mode) - A simple maintenance mode package for Django\n\n[custom_user_model]: https://docs.djangoproject.com/en/stable/topics/auth/customizing/#substituting-a-custom-user-model\n\n### 🔧 Python Testing Tools\n\n* [Pytest](https://docs.pytest.org/) - The most popular Python test runner in the Python community\n* [Pytest Django](https://pytest-django.readthedocs.io/en/latest/index.html) - A Django plugin for Pytest\n* [Pytest-cov](https://pytest-cov.readthedocs.io) - Adds code coverage to tests\n* [Model Bakery](https://github.com/model-bakers/model_bakery) - A faster way to create model instances for tests\n* [Django Test Plus](https://github.com/revsys/django-test-plus/) - Helper functions to write tests faster\n\n### 🩺 Code Quality, Formatting, and Linting Tools\n\n* [Ruff](https://github.com/charliermarsh/ruff) - Python formatting and linting. Lighting fast because it's written in Rust! Replaces Black and other tools.\n* [Mypy](http://mypy-lang.org/) - Python Type checking\n* [dj Lint](https://djlint.com/) - Automatic Django HTML template formatting and linting\n* [Django Debug Toolbar](https://github.com/jazzband/django-debug-toolbar) - A toolbar for debugging and\n  optimizing Django queries\n* [Stylelint](https://stylelint.io/) - Automatic Sass formatting and linting\n* [Eslint](https://eslint.org/) - Automatic Javascript formatting and linting\n\n### 💄Frontend\n\n* [Bootstrap 5](https://getbootstrap.com/) - A popular UI framework\n* [Vite](https://vitejs.dev/) - A fast frontend build tool\n\n### 📝 Documentation\n\nThe Django Base Site uses [MkDocs](https://www.mkdocs.org/) for documentation. You can copy the\n[config file](https://github.com/epicserve/django-base-site/blob/main/config/mkdocs.yml) and the\n[docs](https://github.com/epicserve/django-base-site/tree/main/docs) directory to help jumpstart the documentation for\nyour new project. The following are MkDocs plugins being used:\n\n* [MkDocs Material](https://squidfunk.github.io/mkdocs-material/) - Beautify MkDocs theme\n* [mkdocstrings](https://mkdocstrings.github.io/) - Build documentation from Python docstrings\n* [mkdocs-include-markdown-plugin](https://github.com/mondeja/mkdocs-include-markdown-plugin) - Include docs from other\n  files\n* [mkdocs-linkcheck](https://github.com/byrnereese/linkchecker-mkdocs) - Automatic link checking\n\n## Installation\n\n### Requirements\n\nBefore proceeding make sure you have installed [Docker](https://docs.docker.com/engine/installation/) and\n[Just](https://github.com/casey/just#installation). Docker with Docker Compose is used for local development and Just is\nused for common project commands.\n\n### Quickstart Install Script\n\nCopy and paste the following into your terminal to run the install script:\n\n```bash\nbash \u003c(curl -s https://raw.githubusercontent.com/epicserve/django-base-site/main/scripts/start_new_project)\n```\n\nRunning the script mostly does the same thing as manual method. The exception is that the install script has\nquestions to customize your new project setup.\n\n**Note:** When starting the Django runserver it will take several seconds before the CSS styles take effect. This is\nbecause Vite is running in dev mode which takes a few seconds to take effect.\n\nExample output:\n\n    $ cd ~/Sites\n    $ bash \u003c(curl -s https://raw.githubusercontent.com/epicserve/django-base-site/main/scripts/start_new_project)\n    \n    What is the project name slug [example]?\n    What directory do you want your project in [/Users/brento/Sites/example]?\n\n    Done.\n\n    To start Docker Compose run:\n    $ cd /Users/brento/Sites/example\n    $ just start\n\n### Manual Installation\n\n    $ curl -LOk https://github.com/epicserve/django-base-site/archive/main.zip \u0026\u0026 unzip main\n    $ mv django-base-site-main example\n    $ cd example\n    $ export SECRET_KEY=$(python -c \"import random; print(''.join(random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789%^\u0026*(-_=+)') for i in range(50)))\")\n    $ cat \u003e .env \u003c\u003cEOF\n    DEBUG=on\n    SECRET_KEY='$SECRET_KEY'\n    DATABASE_URL=postgres://postgres:@db:5432/postgres\n    INTERNAL_IPS=127.0.0.1,0.0.0.0\n    EOF\n    $ just remove_extra_files\n    $ find ./public -name \".keep\" | xargs rm -rf\n    $ just start\n\n## Usage\n\nThe Django Base Site comes with Just recipes for all the most common commands and tasks that an engineer will use during\ndevelopment. To see the full list of commands run `just` in the root of the project directory. The following is an\nabbreviated list of the most common commands.\n\n```\nbuild_assets                 # Build frontend assets\nclean                        # Remove build files, python cache files and test coverage data\ncollectstatic                # Run Django's collectstatic management command\nformat                       # Format all code\nlint                         # Lint everything\nupgrade_python_requirements  # Run pip-compile make the requirement files\nopen_coverage                # Run the django test runner with coverage\nstart                        # Start docker-compose\nstart_with_docs              # Start docker-compose with docs\nstop                         # Stop all docker-compose services\ntest                         # Run the Django test runner without coverage\n```\n\n## Deploying to Production\n\nThe Django base site is designed to be production ready because it comes with a production\nready [multi-stage Dockerfile](https://github.com/epicserve/django-base-site/blob/main/config/docker/Dockerfile.web).\nYou can also read a [blog post](https://epicserve.com/django/2022/12/30/using-flyio-with-the-django-base-site.html)\nabout using it with fly.io. If you want to blog about using the Django Base Site with other PaaS providers, please let\nme know, and I can link to the post here.\n\n## Contribute\n\n1. Look for an open [issue](https://github.com/epicserve/django-base-site/issues) or create new issue to get a dialog\n   going about the new feature or bug that you've discovered.\n2. Fork the [repository](https://github.com/epicserve/django-base-site) on GitHub to start making your changes to the\n   main branch (or branch off of it).\n4. Make a pull request.\n\n\u003c!--readme-end--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepicserve%2Fdjango-base-site","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepicserve%2Fdjango-base-site","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepicserve%2Fdjango-base-site/lists"}