Metadata-Version: 2.1
Name: forge
Version: 0.16.1
Summary: Quickly build a professional web app using Django.
Home-page: https://www.forgepackages.com/
License: MIT
Keywords: django,saas,forge,framework
Author: Dave Gaeddert
Author-email: dave.gaeddert@dropseed.dev
Requires-Python: >=3.8,<4.0
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: Django (>=4.0,<5.0)
Requires-Dist: click (>=8.1.0,<9.0.0)
Requires-Dist: dj-database-url (>=1.0.0,<2.0.0)
Requires-Dist: django-widget-tweaks (>=1.4.12,<2.0.0)
Requires-Dist: forge-core (<1.0.0)
Requires-Dist: forge-db (>=0.3.0,<0.4.0)
Requires-Dist: forge-format (<1.0.0)
Requires-Dist: forge-heroku (<1.0.0)
Requires-Dist: forge-tailwind (<1.0.0)
Requires-Dist: forge-work (<1.0.0)
Requires-Dist: hiredis (>=2.0.0,<3.0.0)
Requires-Dist: ipdb (>=0.13.9,<0.14.0)
Requires-Dist: pytest (>=7.0.0,<8.0.0)
Requires-Dist: pytest-django (>=4.5.2,<5.0.0)
Requires-Dist: python-dotenv (>=0.20.0,<0.21.0)
Requires-Dist: redis (>=4.2.2,<5.0.0)
Requires-Dist: whitenoise (>=6.0.0,<7.0.0)
Project-URL: Documentation, https://www.forgepackages.com/docs/
Project-URL: Repository, https://github.com/forgepackages/forge
Description-Content-Type: text/markdown

# Forge

<img height="100" width="100" src="https://user-images.githubusercontent.com/649496/176748343-3829aad8-4bcf-4c25-bb5d-6dc1f796fac0.png" align="right" />

**Quickly build a professional web app using Django.**

Forge is a set of opinions for how to build with Django.
It guides how you work,
chooses what tools you use,
and makes decisions so you don't have to.

At it's core,
Forge *is* Django.
But we've taken a number of steps to make it even easier to build and deploy a production-ready app on day one.

If you're an experienced Django user,
you'll understand and (hopefully) agree with some of Forge's opinions.
If you're new to Django or building web applications,
we've simply removed questions that you might not even be aware of.

Forge will get you from *zero to one* on a revenue-generating SaaS, internal business application, or hobby project.

## Quickstart

Start a new project in 5 minutes:

```sh
curl -sSL https://forgepackages.com/quickstart.py | python3 - my-project
```

[![Forge Django quickstart](https://user-images.githubusercontent.com/649496/173145833-e4f96a4c-efb6-4cc3-b118-184be1a007f1.png)](https://www.youtube.com/watch?v=wYMRxTGDmdU)


### What's included

Things that come with Forge,
that you won't get from Django itself:

- Configure settings with environment variables
- A minimal `settings.py` with sane, opinionated defaults
- Extraneous files (`manage.py`, `wsgi.py`, `asgi.py`) have been removed unless you need to customize them
- Send emails using Django templates (ex. `templates/email/welcome.html`)
- Default form rendering with Tailwind classes
- Login in with email address (in addition to usernames)
- Abstract models for common uses (UUIDs, created_at, updated_at, etc.)
- Test using [pytest](https://docs.pytest.org/en/latest/) and [pytest-django](https://pytest-django.readthedocs.io/en/latest/)
- Default HTTP error templates (400, 403, 404, 500)
- Default Tailwind-styled password change and password reset templates
- Default Tailwind-styled login template
- Default Tailwind-styled sign up template
- Start with a custom user model (`users.User`)
- Start with a "team" model (`teams.Team`)

We're also able to make some decisions about what tools you use *with* Django -- things that Django (rightfully) doesn't take a stance on:

- Deploy using [Heroku](https://heroku.com/)
- Manage Python dependencies using [Poetry](https://python-poetry.org/)
- Style using [Tailwind CSS](https://tailwindcss.com/)
- Format your code using [black](https://github.com/psf/black) and [isort](https://github.com/PyCQA/isort)
- CI testing with [GitHub Actions](https://github.com/features/actions)

All of this comes together with a `forge` CLI.


## Existing projects

A lot (but not all) of the Forge features can be integrated into existing projects by installing select packages:

- [forge-work](https://github.com/forgepackages/forge-work)
- [forge-tailwind](https://github.com/forgepackages/forge-tailwind)
- [forge-db](https://github.com/forgepackages/forge-db)
- [forge-heroku](https://github.com/forgepackages/forge-heroku)
- [forge-format](https://github.com/forgepackages/forge-format)

You can also look at the [Forge starter-template](https://github.com/forgepackages/starter-template),
which is what the quickstart uses to start a new project.


## Inspired by

- [create-react-app](https://create-react-app.dev/)
- [Bullet Train](https://bullettrain.co/)
- [SaaS Pegasus](https://www.saaspegasus.com/)
- [Laravel Spark](https://spark.laravel.com/)

