From 6bf155b595c6df1dafcba15dfd981d98cbd319ee Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Wed, 29 Oct 2025 11:59:50 +0545 Subject: [PATCH] chore: update README and pyproject.toml with project description and dependencies --- README.md | 140 ++++++++++++++++++++++++++++++++ src/templates/pyproject_toml.j2 | 20 ++--- 2 files changed, 150 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e69de29..46253b9 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,140 @@ +# djinit + +

+ Django + Python + License +

+ +A fast, interactive CLI to bootstrap a modern, production‑ready Django project in minutes — featuring split settings, DRF and JWT integration, OpenAPI docs, CORS, static file handling via WhiteNoise, Postgres‑friendly configuration, CI/CD templates, deployment helpers, and battle‑tested defaults that deliver a polished developer experience out of the box. + +- ✨ Split settings: `settings/base.py`, `settings/development.py`, `settings/production.py` +- 🧱 Optional nested apps layout (e.g., `apps/`) +- 🧩 App scaffolding: URLs, serializers, routes +- 🔗 Project URLs wired automatically +- 🧰 Utility files: `.gitignore`, `README.md`, `.env.sample`, `requirements.txt`, `pyproject.toml` +- 🚀 Deploy helpers: `Justfile`, `Procfile`, `runtime.txt` +- 🛠️ CI/CD: GitHub Actions and/or GitLab CI +- 🎨 Polished UX with `rich` + +--- + +## Demo + +![djinit demo](docs/demo.gif) + +Tip: If the GIF doesn't load, open `docs/demo.gif` or view it on the repository page. + +## Installation + +Using pipx (recommended): + +```bash +pipx install git+https://github.com/S4NKALP/djinit +``` + +Using pip (user space): + +```bash +pip install --user git+https://github.com/S4NKALP/djinit +``` + +From source: + +```bash +git clone https://github.com/S4NKALP/djinit +cd djinit +pip install -e . +``` + +Requirements: Python 3.13+ + +## Quick start + +Run the interactive setup: + +```bash +djinit setup +``` + +Prompts include: + +- Project directory +- Django project name (used by `django-admin startproject`) +- Apps layout (flat vs nested package like `apps/`) +- App names (comma‑separated) +- CI/CD choice (GitHub, GitLab, both, none) +- Database config preference (`DATABASE_URL` vs individual params) + +## Commands + +- `djinit setup` — Launch the interactive project generator +- `djinit app ` — Create one or more Django apps in an existing project + - Examples: + - `djinit app users` + - `djinit app users,products,orders` + - `djinit app users products orders` +- `djinit secret [--count N] [--length L]` — Print random Django `SECRET_KEY` values + - Example: `djinit secret --count 5 --length 50` + +## What gets generated + +- Django project and apps, then structure validation +- Settings package and split settings +- Base/development/production settings +- Utility files +- App files: `urls.py`, `serializers.py`, `routes.py` +- Project `urls.py` (auto‑includes your apps) +- Updated `wsgi.py`, `asgi.py`, `manage.py` +- `Justfile`, `Procfile`, `runtime.txt` +- CI/CD workflows (per your selection) + +### Output highlights + +- `config/settings/` → `__init__.py`, `base.py`, `development.py`, `production.py` +- `apps//` → `urls.py`, `serializers.py`, `routes.py` +- Project root → `.gitignore`, `README.md`, `.env.sample`, `requirements.txt`, `pyproject.toml`, `Justfile`, `Procfile`, `runtime.txt` +- CI/CD → `.github/workflows/` and/or `.gitlab-ci.yml` + +Note: If you choose a nested apps package (e.g., `apps`), imports and `INSTALLED_APPS` entries are configured accordingly. + +## Included packages (by default) + +Generated `requirements.txt` includes: + +- Django +- python-dotenv +- django-jazzmin +- djangorestframework +- djangorestframework-simplejwt +- drf-spectacular +- django-cors-headers +- whitenoise +- psycopg2-binary +- gunicorn +- dj-database-url (when you opt into `DATABASE_URL`) + +These give you a ready‑to‑use stack with DRF, JWT auth, OpenAPI schema generation, CORS, static files in production, and Postgres support. + +## Environment and database + +- A `.env.sample` is generated to get you started. +- If you opt into `DATABASE_URL`, `production.py` expects an environment variable like: + `postgres://user:password@host:port/database` + +## Contributing + +Contributions are welcome! +Please open an issue for bugs/ideas. PRs with clear descriptions are appreciated. + +## Acknowledgments + +- Django and the Django community +- Jinja2 +- rich +- click +- ruff + +## License + +MIT © Sankalp Tharu diff --git a/src/templates/pyproject_toml.j2 b/src/templates/pyproject_toml.j2 index cc4bde1..370b8cc 100644 --- a/src/templates/pyproject_toml.j2 +++ b/src/templates/pyproject_toml.j2 @@ -6,16 +6,16 @@ readme = "README.md" requires-python = ">=3.13" license = { text = "MIT" } dependencies = [ - "django>=5.2.7", - "python-dotenv>=1.1.1", - "django-jazzmin>=3.0.1", - "djangorestframework>=3.16.1", - "djangorestframework-simplejwt>=5.5.1", - "drf-spectacular>=0.28.0", - "django-cors-headers>=4.9.0", - "whitenoise>=6.8.2", - "psycopg2-binary>=2.9.9", - "gunicorn>=21.2.0", + "django", + "python-dotenv", + "django-jazzmin", + "djangorestframework", + "djangorestframework-simplejwt", + "drf-spectacular", + "django-cors-headers", + "whitenoise", + "psycopg2-binary", + "gunicorn", ] [tool.ruff]