Skip to main content

Opinionated version of `startproject` with some popular third-party packages. Starter pack includes: whitenoise, django-environ, logging, GitHub Scripts to Rule Them All, basic Dockerfile and Makefile.

Project description

django-spinproject

Opinionated version of django-admin startproject that intends to go further and do things that startproject can't do but most people will do anyway. Here's what you can get:

  • ⚛️ Whitenoise: for serving static files in production (usually you don't want to set up a separate server for this).
  • 🔧 settings.py: slightly modified to also understand environment variables and .env files. This functionality requires the django-environ package. Also, app logger is mostly pre-configured for you.
  • 🔑 Minimal login/logout pages so you can set this up without reading the guide again.
  • 🔒 Support for marking PostgreSQL databases as read-only to prevent accidental modification of critical data.
  • 🧰 script/bootstrap and other scripts to rule them all so your fellow developers and maintainers don't ask you how to run this thing. Current versions of these scripts optimized for use with poetry, but you can easily adapt them for any Python package manager.
  • 🏗️ Dockerfile and .dockerignore: one day your app will go to production, and we've got you covered.
  • 🏛️ Gitlab CI config.
  • ⚕️ Pre-configured linter so you can find some common problems automagically.
  • 🏃 Pre-configured pytest because you are going to need unit tests one day.
  • 🗃️ Auto-checks if you forgot to create migrations whenever you run tests or CI.
  • *️⃣ .gitignore: well, you know why.

Requirements

  • *nix system;
  • django-admin installed and available from $PATH.

Generated files will work fine in Django >= 2.0, not tested in earlier versions.

How to use

  • Install the package: pip install django-spinproject
  • Create a new project: django-spinproject --create <path>
  • OR initialize spinproject in your existing project's folder: django-spinproject --init

You're all set. Now you can take a look at the list of available modules: django-spinproject --help

Use django-spinproject --enable to enable a module, django-spinproject --upgrade to apply changes.

CLI commands

  • --create PATH: create django project in specified path
  • --init: create spinproject.json file
  • --enable MODULE_TO_ENABLE: enable specified module; use 'all' to enable most common modules; use 'ALL' to enable all available modules;
  • --disable MODULE_TO_DISABLE: disable specified module
  • --upgrade [MODULE_TO_UPGRADE]: upgrade (specified or all) enabled modules

Available modules

  • gitignore — Creates .gitignore file suitable for most Django projects.
  • srta — Creates Scripts to Rule Them All (simplifies life a lot, you should check it out).
  • pytest — Creates pytest.ini and .coveragerc files.
  • dockerfile — Creates a Dockerfile.
  • dockerignore — Creates .dockerignore (you should totally do that).
  • docker-scripts — Creates additional SRTA scripts for building and pushing your Docker image.
  • gitlab-ci — Creates GitLab CI config, .gitlab-ci.yml.
  • pg-readonly — Creates a DatabaseWrapper class for readonly connection to PostgreSQL.
  • settings — Improves the default settings.py, adding support for envvars and .env files. Also enables Whitenoise and CLI logger.
  • login-template — Creates minimal login/logout pages.

Planned features

(for requests, create an issue or drop me a line at m1kc@yandex.ru)

Changelog

See the Releases page.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_spinproject-2.7.0.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

django_spinproject-2.7.0-py3-none-any.whl (76.8 kB view details)

Uploaded Python 3

File details

Details for the file django_spinproject-2.7.0.tar.gz.

File metadata

  • Download URL: django_spinproject-2.7.0.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.8 Linux/6.6.13-amd64

File hashes

Hashes for django_spinproject-2.7.0.tar.gz
Algorithm Hash digest
SHA256 927204a1005371060b6d60eabb7b62b32d12c2f2c708264dad757e8760a4e29a
MD5 954c7d263b9a5695ca7fa2c81fe2e5a7
BLAKE2b-256 705819e385e90ac640c4c263fc44ecf6f55b87d70f993f98e132303d8a327b2e

See more details on using hashes here.

File details

Details for the file django_spinproject-2.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_spinproject-2.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 047215c8cf52b58661c38265b2aec3f7a4fd2556a776725c3a083cfbb889bc8d
MD5 32966ce76004f285f109f4da122d5e83
BLAKE2b-256 0dde5cacb2a3c97b981165d82ff35c0aa5b037c22c9cc0ad4205d9d13acd2904

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page