codefortify-starter 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codefortify_starter/__init__.py +7 -0
- codefortify_starter/__main__.py +6 -0
- codefortify_starter/cli.py +103 -0
- codefortify_starter/constants.py +48 -0
- codefortify_starter/generator.py +246 -0
- codefortify_starter/template_engine.py +63 -0
- codefortify_starter/templates/base_project/README.md.jinja +87 -0
- codefortify_starter/templates/base_project/apps/__init__.py +1 -0
- codefortify_starter/templates/base_project/apps/home/__init__.py +1 -0
- codefortify_starter/templates/base_project/apps/home/apps.py.jinja +7 -0
- codefortify_starter/templates/base_project/apps/home/templates/home/index.html.jinja +25 -0
- codefortify_starter/templates/base_project/apps/home/tests.py.jinja +17 -0
- codefortify_starter/templates/base_project/apps/home/urls.py.jinja +14 -0
- codefortify_starter/templates/base_project/apps/home/views.py.jinja +13 -0
- codefortify_starter/templates/base_project/core/__init__.py.jinja +7 -0
- codefortify_starter/templates/base_project/core/asgi.py.jinja +10 -0
- codefortify_starter/templates/base_project/core/env.py.jinja +46 -0
- codefortify_starter/templates/base_project/core/middleware/__init__.py +1 -0
- codefortify_starter/templates/base_project/core/middleware/exceptions.py +26 -0
- codefortify_starter/templates/base_project/core/middleware/security.py +12 -0
- codefortify_starter/templates/base_project/core/settings/__init__.py +1 -0
- codefortify_starter/templates/base_project/core/settings/base.py.jinja +160 -0
- codefortify_starter/templates/base_project/core/settings/dev.py.jinja +8 -0
- codefortify_starter/templates/base_project/core/settings/production.py.jinja +21 -0
- codefortify_starter/templates/base_project/core/templates/errors/400.html +8 -0
- codefortify_starter/templates/base_project/core/templates/errors/403.html +8 -0
- codefortify_starter/templates/base_project/core/templates/errors/404.html +8 -0
- codefortify_starter/templates/base_project/core/templates/errors/405.html +8 -0
- codefortify_starter/templates/base_project/core/templates/errors/500.html +8 -0
- codefortify_starter/templates/base_project/core/urls.py.jinja +23 -0
- codefortify_starter/templates/base_project/core/views.py.jinja +56 -0
- codefortify_starter/templates/base_project/core/wsgi.py.jinja +10 -0
- codefortify_starter/templates/base_project/dot-env.example.jinja +66 -0
- codefortify_starter/templates/base_project/dot-gitignore +34 -0
- codefortify_starter/templates/base_project/manage.py.jinja +16 -0
- codefortify_starter/templates/base_project/static/css/main.css +19 -0
- codefortify_starter/templates/base_project/templates/base.html.jinja +19 -0
- codefortify_starter/templates/features/celery/apps/home/tasks.py.jinja +7 -0
- codefortify_starter/templates/features/celery/core/celery.py.jinja +16 -0
- codefortify_starter/templates/features/docker/DOCKER_README.md.jinja +67 -0
- codefortify_starter/templates/features/docker/Dockerfile.jinja +20 -0
- codefortify_starter/templates/features/docker/docker-compose.prod.yml.jinja +158 -0
- codefortify_starter/templates/features/docker/docker-compose.yml.jinja +208 -0
- codefortify_starter/templates/features/docker/docker_deploy.sh.jinja +132 -0
- codefortify_starter/templates/features/docker/dot-dockerignore +12 -0
- codefortify_starter/templates/features/docker/entrypoint.sh.jinja +95 -0
- codefortify_starter/templates/features/drf/apps/api/__init__.py +1 -0
- codefortify_starter/templates/features/drf/apps/api/apps.py.jinja +7 -0
- codefortify_starter/templates/features/drf/apps/api/serializers.py +7 -0
- codefortify_starter/templates/features/drf/apps/api/tests.py +11 -0
- codefortify_starter/templates/features/drf/apps/api/urls.py +11 -0
- codefortify_starter/templates/features/drf/apps/api/views.py +16 -0
- codefortify_starter/templates/features/htmx/templates/partials/example.html.jinja +5 -0
- codefortify_starter/validators.py +70 -0
- codefortify_starter-1.0.0.dist-info/METADATA +276 -0
- codefortify_starter-1.0.0.dist-info/RECORD +60 -0
- codefortify_starter-1.0.0.dist-info/WHEEL +5 -0
- codefortify_starter-1.0.0.dist-info/entry_points.txt +2 -0
- codefortify_starter-1.0.0.dist-info/licenses/LICENSE +22 -0
- codefortify_starter-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Validation and normalization helpers for CLI input."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import keyword
|
|
6
|
+
import re
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
|
|
9
|
+
from codefortify_starter.constants import VALID_DATABASES
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
PROJECT_NAME_RE = re.compile(r"^[A-Za-z][A-Za-z0-9_-]*$")
|
|
13
|
+
PROJECT_SLUG_RE = re.compile(r"^[a-z_][a-z0-9_]*$")
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class ValidationError(ValueError):
|
|
17
|
+
"""Raised when user-provided generator inputs are invalid."""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass(frozen=True)
|
|
21
|
+
class ProjectIdentity:
|
|
22
|
+
"""Normalized project naming attributes."""
|
|
23
|
+
|
|
24
|
+
project_name: str
|
|
25
|
+
project_slug: str
|
|
26
|
+
project_title: str
|
|
27
|
+
project_package: str
|
|
28
|
+
project_class_name: str
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def build_project_identity(raw_name: str) -> ProjectIdentity:
|
|
32
|
+
"""Validate and normalize the requested project name."""
|
|
33
|
+
project_name = raw_name.strip()
|
|
34
|
+
if not project_name:
|
|
35
|
+
raise ValidationError("Project name cannot be empty.")
|
|
36
|
+
if "/" in project_name or "\\" in project_name:
|
|
37
|
+
raise ValidationError("Project name must not contain path separators.")
|
|
38
|
+
if not PROJECT_NAME_RE.fullmatch(project_name):
|
|
39
|
+
raise ValidationError(
|
|
40
|
+
"Project name must start with a letter and contain only letters, numbers, hyphens, or underscores."
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
project_slug = project_name.lower().replace("-", "_")
|
|
44
|
+
if not PROJECT_SLUG_RE.fullmatch(project_slug):
|
|
45
|
+
raise ValidationError("Unable to build a valid Python package slug from the project name.")
|
|
46
|
+
if keyword.iskeyword(project_slug):
|
|
47
|
+
raise ValidationError(f"'{project_slug}' is a reserved Python keyword.")
|
|
48
|
+
|
|
49
|
+
class_name = "".join(part.capitalize() for part in project_slug.split("_"))
|
|
50
|
+
title = class_name or project_slug.capitalize()
|
|
51
|
+
return ProjectIdentity(
|
|
52
|
+
project_name=project_name,
|
|
53
|
+
project_slug=project_slug,
|
|
54
|
+
project_title=title,
|
|
55
|
+
project_package=project_slug,
|
|
56
|
+
project_class_name=class_name,
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
def normalize_database(requested_database: str | None, *, use_docker: bool) -> str:
|
|
61
|
+
"""Resolve database selection defaults and validate explicit values."""
|
|
62
|
+
if requested_database is None:
|
|
63
|
+
return "postgres" if use_docker else "sqlite"
|
|
64
|
+
|
|
65
|
+
database = requested_database.strip().lower()
|
|
66
|
+
if database not in VALID_DATABASES:
|
|
67
|
+
valid_values = ", ".join(VALID_DATABASES)
|
|
68
|
+
raise ValidationError(f"Unsupported database '{requested_database}'. Choose one of: {valid_values}.")
|
|
69
|
+
return database
|
|
70
|
+
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: codefortify-starter
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: A production-ready Django project generator with optional HTMX, DRF, Docker, Celery, Redis, PostgreSQL, and MySQL support.
|
|
5
|
+
Author-email: Codefortify <maintainers@codefortify.dev>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/codefortify/codefortify-starter
|
|
8
|
+
Project-URL: Source, https://github.com/codefortify/codefortify-starter
|
|
9
|
+
Keywords: django,django-starter,django-boilerplate,project-generator,python,codefortify,htmx,drf,docker,celery,redis,postgresql,mysql,cookiecutter-alternative,backend
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Framework :: Django
|
|
13
|
+
Classifier: Framework :: Django :: 5.2
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: typer<1.0.0,>=0.12.0
|
|
28
|
+
Requires-Dist: rich<14.0.0,>=13.7.0
|
|
29
|
+
Requires-Dist: Jinja2<4.0.0,>=3.1.0
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
|
|
32
|
+
# codefortify-starter
|
|
33
|
+
|
|
34
|
+
`codefortify-starter` is a professional Django project starter generator for building clean, scalable, and production-ready Django applications faster.
|
|
35
|
+
|
|
36
|
+
It creates a modern Django architecture with a structured settings layout, reusable app organization, environment-based configuration, templates, static/media setup, and optional support for HTMX, Django REST Framework, Docker, Celery, Redis, PostgreSQL, and MySQL.
|
|
37
|
+
|
|
38
|
+
Whether you need a simple Django MVT project or a full API-ready Dockerized architecture with background workers, `codefortify-starter` gives you a consistent foundation for starting new projects.
|
|
39
|
+
|
|
40
|
+
## What It Is
|
|
41
|
+
|
|
42
|
+
`codefortify-starter` is a PyPI-installable Django project generator that helps developers quickly scaffold clean, maintainable, production-ready Django architectures.
|
|
43
|
+
|
|
44
|
+
By default, it generates a simple Django MVT project. With flags, it can add HTMX, DRF, Docker, Celery, Redis, PostgreSQL, and MySQL.
|
|
45
|
+
|
|
46
|
+
## Why It Exists
|
|
47
|
+
|
|
48
|
+
Most Django projects repeat the same setup work: project layout, settings split, dependency wiring, env bootstrapping, and deployment scaffolding. `codefortify-starter` reduces that repeated effort and standardizes project initialization.
|
|
49
|
+
|
|
50
|
+
## Who Should Use It
|
|
51
|
+
|
|
52
|
+
- Django developers starting new applications
|
|
53
|
+
- Teams that want a consistent starter architecture
|
|
54
|
+
- Backend/API engineers who need optional DRF, Docker, and Celery setup
|
|
55
|
+
- Developers who want a lightweight alternative to larger templating frameworks
|
|
56
|
+
|
|
57
|
+
## Installation
|
|
58
|
+
|
|
59
|
+
Install from PyPI:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pip install codefortify-starter
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Install an exact version:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pip install codefortify-starter==1.0.0
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Verify the CLI:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
codefortify-startproject --help
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Quick Start
|
|
78
|
+
|
|
79
|
+
Create a basic Django MVT project:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
codefortify-startproject myproject
|
|
83
|
+
cd myproject
|
|
84
|
+
python -m venv .venv
|
|
85
|
+
source .venv/bin/activate
|
|
86
|
+
pip install -r requirements.txt
|
|
87
|
+
cp .env.example .env
|
|
88
|
+
python manage.py migrate
|
|
89
|
+
python manage.py runserver
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Supported CLI Flags
|
|
93
|
+
|
|
94
|
+
- `--htmx`
|
|
95
|
+
- `--drf`
|
|
96
|
+
- `--docker`
|
|
97
|
+
- `--celery`
|
|
98
|
+
- `--database [sqlite|postgres|mysql]`
|
|
99
|
+
- `--no-git`
|
|
100
|
+
- `--force`
|
|
101
|
+
- `--directory PATH`
|
|
102
|
+
- `--all`
|
|
103
|
+
|
|
104
|
+
## Command Examples
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
codefortify-startproject myproject
|
|
108
|
+
codefortify-startproject myproject --htmx
|
|
109
|
+
codefortify-startproject myproject --drf
|
|
110
|
+
codefortify-startproject myproject --docker
|
|
111
|
+
codefortify-startproject myproject --celery
|
|
112
|
+
codefortify-startproject myproject --docker --celery
|
|
113
|
+
codefortify-startproject myproject --drf --docker --celery
|
|
114
|
+
codefortify-startproject myproject --database postgres
|
|
115
|
+
codefortify-startproject myproject --database mysql
|
|
116
|
+
codefortify-startproject myproject --no-git
|
|
117
|
+
codefortify-startproject myproject --force
|
|
118
|
+
codefortify-startproject myproject --directory /path/to/projects
|
|
119
|
+
codefortify-startproject myproject --all
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
`--all` is equivalent to:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
codefortify-startproject myproject --htmx --drf --docker --celery --database postgres
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Feature Matrix
|
|
129
|
+
|
|
130
|
+
| Feature | Flag | Description |
|
|
131
|
+
|---|---|---|
|
|
132
|
+
| Django MVT | default | Clean Django project with settings, templates, static/media, and home app |
|
|
133
|
+
| HTMX | `--htmx` | Adds `django-htmx`, middleware, and example partial views |
|
|
134
|
+
| Django REST Framework | `--drf` | Adds DRF, API app, API routes, serializers, and tests |
|
|
135
|
+
| Docker | `--docker` | Adds Dockerfile, docker-compose, entrypoint, deployment script, and Docker docs |
|
|
136
|
+
| Celery + Redis | `--celery` | Adds Celery config, Redis broker settings, and example task |
|
|
137
|
+
| PostgreSQL | `--database postgres` | Adds PostgreSQL-ready configuration |
|
|
138
|
+
| MySQL | `--database mysql` | Adds MySQL-ready configuration |
|
|
139
|
+
| Full stack | `--all` | Adds HTMX, DRF, Docker, Celery, Redis, and PostgreSQL |
|
|
140
|
+
|
|
141
|
+
## Generated Architecture
|
|
142
|
+
|
|
143
|
+
```text
|
|
144
|
+
myproject/
|
|
145
|
+
├── apps/
|
|
146
|
+
│ └── home/
|
|
147
|
+
├── core/
|
|
148
|
+
│ ├── settings/
|
|
149
|
+
│ │ ├── base.py
|
|
150
|
+
│ │ ├── dev.py
|
|
151
|
+
│ │ └── production.py
|
|
152
|
+
│ ├── urls.py
|
|
153
|
+
│ ├── asgi.py
|
|
154
|
+
│ └── wsgi.py
|
|
155
|
+
├── templates/
|
|
156
|
+
├── static/
|
|
157
|
+
├── media/
|
|
158
|
+
├── manage.py
|
|
159
|
+
├── requirements.txt
|
|
160
|
+
├── .env.example
|
|
161
|
+
└── README.md
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Feature-specific files are added only when their flags are selected (for example `apps/api`, `core/celery.py`, `Dockerfile`, compose files, and task modules).
|
|
165
|
+
|
|
166
|
+
## Database Options
|
|
167
|
+
|
|
168
|
+
- Default without `--docker`: SQLite
|
|
169
|
+
- Default with `--docker`: PostgreSQL
|
|
170
|
+
- Explicit: `--database postgres`, `--database mysql`, or `--database sqlite`
|
|
171
|
+
|
|
172
|
+
Generated settings safely handle an empty `DATABASE_URL` and support local fallback behavior for development.
|
|
173
|
+
|
|
174
|
+
## HTMX Usage
|
|
175
|
+
|
|
176
|
+
Generate with HTMX:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
codefortify-startproject myproject --htmx
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
The generated project includes HTMX middleware and an example partial endpoint.
|
|
183
|
+
|
|
184
|
+
## DRF Usage
|
|
185
|
+
|
|
186
|
+
Generate with DRF:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
codefortify-startproject myproject --drf
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The generated API app includes a health endpoint:
|
|
193
|
+
|
|
194
|
+
- `GET /api/health/`
|
|
195
|
+
|
|
196
|
+
## Docker Usage
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
codefortify-startproject myproject --docker
|
|
200
|
+
cd myproject
|
|
201
|
+
cp .env.example .env
|
|
202
|
+
docker compose build
|
|
203
|
+
docker compose up -d
|
|
204
|
+
docker compose exec web python manage.py migrate
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Celery Usage
|
|
208
|
+
|
|
209
|
+
Generate with Celery support:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
codefortify-startproject myproject --celery
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Run worker locally:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
celery -A core worker -l info
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Full Stack Usage
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
codefortify-startproject myproject --all
|
|
225
|
+
cd myproject
|
|
226
|
+
cp .env.example .env
|
|
227
|
+
docker compose build
|
|
228
|
+
docker compose up -d
|
|
229
|
+
docker compose ps
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Local Development (This Package)
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
python -m venv .pkgvenv
|
|
236
|
+
source .pkgvenv/bin/activate
|
|
237
|
+
pip install -r requirements.txt
|
|
238
|
+
pip install -e .
|
|
239
|
+
python -m pytest -q tests
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Build and Publish
|
|
243
|
+
|
|
244
|
+
Build and validate:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
rm -rf dist build *.egg-info
|
|
248
|
+
python -m build
|
|
249
|
+
twine check dist/*
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Publish to TestPyPI:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
twine upload --repository testpypi dist/*
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Publish to PyPI:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
twine upload dist/*
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Testing from TestPyPI
|
|
265
|
+
|
|
266
|
+
Use this only for testing pre-release package builds:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
pip install --index-url https://test.pypi.org/simple/ \
|
|
270
|
+
--extra-index-url https://pypi.org/simple \
|
|
271
|
+
codefortify-starter==1.0.0
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## License
|
|
275
|
+
|
|
276
|
+
MIT License. See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
codefortify_starter/__init__.py,sha256=eIQuq0aj8MjFppFiwY4qNH2--4o8yzrH9hCm4c3kdOA,189
|
|
2
|
+
codefortify_starter/__main__.py,sha256=2AQ0rURMaY59nRb06NUCCxZ2dNqSQxvxDfd1V0HUFS8,82
|
|
3
|
+
codefortify_starter/cli.py,sha256=TW-yiDzbg8zHPbnkyk-pEyBYBzXCfbo5KV1ZVDXqmrc,3773
|
|
4
|
+
codefortify_starter/constants.py,sha256=mL0o3q2z2o9xAnzja7muVSqLHGWgBeZGRBqAOIWhQn4,1225
|
|
5
|
+
codefortify_starter/generator.py,sha256=xtv0UxC7f55w3UcTR2iDYA-cppy1WdrIKZIfCEQTSdU,8856
|
|
6
|
+
codefortify_starter/template_engine.py,sha256=QMWcYg1uCl22yKBwAmanbK-OJqBRinTxn1_esru5NjY,2416
|
|
7
|
+
codefortify_starter/validators.py,sha256=F0_Uf7_FV0cMvewMil5eUVvks78prb6TGPL8YOWOZDY,2430
|
|
8
|
+
codefortify_starter/templates/base_project/README.md.jinja,sha256=Lf3htG3-1VPeNKaWzA26sSUtcXuRav-s_dwNMG0Nps8,1357
|
|
9
|
+
codefortify_starter/templates/base_project/dot-env.example.jinja,sha256=P835WHPkZLmOZrypDVqwxWCjJayTI67p5YpHxoKI0XI,2149
|
|
10
|
+
codefortify_starter/templates/base_project/dot-gitignore,sha256=woqUCvO-I6mZ-hrgYMGHTeuNU2oBqvk15_3iXsW756M,308
|
|
11
|
+
codefortify_starter/templates/base_project/manage.py.jinja,sha256=xs_a6AVI9Nv_Klnk57k0S8tB1yJFVBQP79rL0UQThKw,274
|
|
12
|
+
codefortify_starter/templates/base_project/apps/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
13
|
+
codefortify_starter/templates/base_project/apps/home/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
14
|
+
codefortify_starter/templates/base_project/apps/home/apps.py.jinja,sha256=VtvR6nzdPbsS9jbF7soytpBUf8IEovQVB4eVvxEzkT4,146
|
|
15
|
+
codefortify_starter/templates/base_project/apps/home/tests.py.jinja,sha256=IL4Lf8hwQ6fi97-L3gLtlPOZCl4_zn0fMettwMLGo8w,595
|
|
16
|
+
codefortify_starter/templates/base_project/apps/home/urls.py.jinja,sha256=MMcTp2IXiCJ3xb-hAYZhtxR4CDe4bqBbBDPjxPIq30Y,288
|
|
17
|
+
codefortify_starter/templates/base_project/apps/home/views.py.jinja,sha256=rlmZC5dLoftHiU3xVGJHzqefuM6Qd2MnjpOVBItve58,264
|
|
18
|
+
codefortify_starter/templates/base_project/apps/home/templates/home/index.html.jinja,sha256=sHJ_ZvFFdnOnZbuCjh4huMBXor8GO2sjSR6gXLv7qD0,523
|
|
19
|
+
codefortify_starter/templates/base_project/core/__init__.py.jinja,sha256=8-lzmnk3e_XuZR3kZl4hGZBb6Fyz3lw4VZuyK42lpwM,168
|
|
20
|
+
codefortify_starter/templates/base_project/core/asgi.py.jinja,sha256=PP_KiqQLcF1IW0-KTtb0QqN1W91yuWPbOhlXBWNWpiM,160
|
|
21
|
+
codefortify_starter/templates/base_project/core/env.py.jinja,sha256=zSJKcdtnp_OlK2rFdTUz9NXVuGcaDIgdU-5zX0vH2cs,1674
|
|
22
|
+
codefortify_starter/templates/base_project/core/urls.py.jinja,sha256=Asm7_XCqbzAhVsTVUBe-q-Abxq06k-6k9Gv5slW0g9Q,682
|
|
23
|
+
codefortify_starter/templates/base_project/core/views.py.jinja,sha256=ONYrnPcRjY11Nq6B4KpTnIu95H-bCj4SRloXCh3MREs,1956
|
|
24
|
+
codefortify_starter/templates/base_project/core/wsgi.py.jinja,sha256=MBYweKxuRQsMOIelX3rZo0iGAEsFqFCnKNweaQq5cH0,160
|
|
25
|
+
codefortify_starter/templates/base_project/core/middleware/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
26
|
+
codefortify_starter/templates/base_project/core/middleware/exceptions.py,sha256=faAb-g8R0J588TYlAiZGn3gs4frtHnHDg7WmYaO2-U0,768
|
|
27
|
+
codefortify_starter/templates/base_project/core/middleware/security.py,sha256=6-jERDJGdwhuKVCc8WBbz3HDnTqYt9Jja_SKUy1oLbM,513
|
|
28
|
+
codefortify_starter/templates/base_project/core/settings/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
29
|
+
codefortify_starter/templates/base_project/core/settings/base.py.jinja,sha256=zvwB26ugjjE1Eguu7sr-EaQtc9Gld6MUkHR9_K6IF9k,4884
|
|
30
|
+
codefortify_starter/templates/base_project/core/settings/dev.py.jinja,sha256=B99Jq9vh_5jMboFBKeJqYzFOHme8jI_ZT3oYxTaqKi8,140
|
|
31
|
+
codefortify_starter/templates/base_project/core/settings/production.py.jinja,sha256=y5yEjGRBLpWD_tE3d4IkZnq9YRCfojYDGoYdnwLmkcA,871
|
|
32
|
+
codefortify_starter/templates/base_project/core/templates/errors/400.html,sha256=NP4INirYFSAQPw9gx7rOB8QWRp2ZvnNc6h49YL9ttUg,138
|
|
33
|
+
codefortify_starter/templates/base_project/core/templates/errors/403.html,sha256=MbT4KuCQp3K4aXOx7sIulp4OoPucv6a9TNeLRZ-Fp44,150
|
|
34
|
+
codefortify_starter/templates/base_project/core/templates/errors/404.html,sha256=i48qo-ZJ8A8lpACSL2DHL1Ta5NeXmStwLvUwX9agbAs,139
|
|
35
|
+
codefortify_starter/templates/base_project/core/templates/errors/405.html,sha256=xtF1KGSh_a7jTEfXwUw7VDJDpLHfVpmOY9ERLw06ESs,152
|
|
36
|
+
codefortify_starter/templates/base_project/core/templates/errors/500.html,sha256=7CyIDPYtiAXXcimIbbneKpc7ZvOpHqbQ-oEUEvmle-4,149
|
|
37
|
+
codefortify_starter/templates/base_project/static/css/main.css,sha256=IVUQ885XgRJpq-dQm4Agk3uEw51SUODf_CaxfHAzCbg,241
|
|
38
|
+
codefortify_starter/templates/base_project/templates/base.html.jinja,sha256=msJNjXXqBdXyB5Iw5k9uv9PhUu3y5J4LKX6L2-BYBbg,497
|
|
39
|
+
codefortify_starter/templates/features/celery/apps/home/tasks.py.jinja,sha256=JrXEd0gLi7fBrqcfGnr7bIqdJLRfjnP3_NObfY_LmPI,77
|
|
40
|
+
codefortify_starter/templates/features/celery/core/celery.py.jinja,sha256=f0036dyYR_JD_fioa10WhxvVcDOiN6bdG8TCeYVlCe4,362
|
|
41
|
+
codefortify_starter/templates/features/docker/DOCKER_README.md.jinja,sha256=OAmg5MKMkYzNj5SdkFHprAVdxCmncQi5SjtF6hpeRGk,1137
|
|
42
|
+
codefortify_starter/templates/features/docker/Dockerfile.jinja,sha256=ABJoa7eXRFZek9poniWdYfsk6U_dQugMeLYOqjVeT6U,455
|
|
43
|
+
codefortify_starter/templates/features/docker/docker-compose.prod.yml.jinja,sha256=IJtMR8ZDUn_dal-sHwSBylGmqa_hNd6L0yrOJehogWI,4794
|
|
44
|
+
codefortify_starter/templates/features/docker/docker-compose.yml.jinja,sha256=xDpaUIthqS3a6n9seLxwNq_DbO5MY4KdHCLNaBlTRjg,6399
|
|
45
|
+
codefortify_starter/templates/features/docker/docker_deploy.sh.jinja,sha256=aLt3SHBE2OgL6uQfiV7oflvh6K82CiXUA3QyQBjKvb8,2723
|
|
46
|
+
codefortify_starter/templates/features/docker/dot-dockerignore,sha256=2Sdou5O_tXMH9PGsUVaYItjdfRFgKzF4cKDezzSd-vc,90
|
|
47
|
+
codefortify_starter/templates/features/docker/entrypoint.sh.jinja,sha256=pCdX_Tt5eITqMGofpykl3i1k2uaOd-8xKorAz1wHLKI,2475
|
|
48
|
+
codefortify_starter/templates/features/drf/apps/api/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
49
|
+
codefortify_starter/templates/features/drf/apps/api/apps.py.jinja,sha256=-EQ9amecVqf6LQ8O7dl86-ENAqxbm2f3zuEt3y2dxPw,144
|
|
50
|
+
codefortify_starter/templates/features/drf/apps/api/serializers.py,sha256=uFtBEuoKKIOPqAk11Bknx7d3wXwPSAwxh_f7tOMV-1c,165
|
|
51
|
+
codefortify_starter/templates/features/drf/apps/api/tests.py,sha256=cCsU3I_Gntrn4DKFjvMRv0hiqCb7FJEbibk22sIovD0,365
|
|
52
|
+
codefortify_starter/templates/features/drf/apps/api/urls.py,sha256=cX10n5SKnPw86YZSyB7bscGoOMeBTJcJuBW09A2wiow,171
|
|
53
|
+
codefortify_starter/templates/features/drf/apps/api/views.py,sha256=DROkoGEUCirjidu8MyLyXzy-GBfDTelOdKzTZCYwdyk,495
|
|
54
|
+
codefortify_starter/templates/features/htmx/templates/partials/example.html.jinja,sha256=K-u1KawFcofhb3qv2ttDRRbSb514ScxSeThm88Rsl5c,136
|
|
55
|
+
codefortify_starter-1.0.0.dist-info/licenses/LICENSE,sha256=1-ZctcUxkGU1x6Ioi7pi1yjTrYgjZX5hYVP9EnPMcQY,1069
|
|
56
|
+
codefortify_starter-1.0.0.dist-info/METADATA,sha256=ibSj3uLiHxSL-znb2aoGmZ0duZFMjzydVBqW5jr7l1k,7623
|
|
57
|
+
codefortify_starter-1.0.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
58
|
+
codefortify_starter-1.0.0.dist-info/entry_points.txt,sha256=r2p0PulHgiMGVRM3HmJm4H2seY01-fxumj3pf6X28Pk,74
|
|
59
|
+
codefortify_starter-1.0.0.dist-info/top_level.txt,sha256=fnRqkfOK2-8EKUg0c_iHRQEnsgnYBesv_GDA26F8xCU,20
|
|
60
|
+
codefortify_starter-1.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Codefortify
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
codefortify_starter
|