clone from upstream lithium project
This commit is contained in:
parent
6f5167c24f
commit
f946e4933a
56 changed files with 754 additions and 503 deletions
137
README.md
137
README.md
|
|
@ -1,67 +1,122 @@
|
|||
# DjangoX
|
||||
# Lithium: A Django-Powered Boilerplate
|
||||
Lithium is a batteries-included Django starter project with everything you need to start coding, including user authentication, static files, default styling, debugging, DRY forms, custom error pages, and more.
|
||||
|
||||
**DjangoX** - A framework for launching new Django projects quickly.
|
||||
> This project was formerly known as _DjangoX_ but was renamed to _Lithium_ in November 2024.
|
||||
|
||||
Comes with a custom user model, social authentication, and email/password for sign up and log in.
|
||||
https://github.com/wsvincent/djangox/assets/766418/a73ea730-a7b4-4e53-bf51-aa68f6816d6a
|
||||
|
||||

|
||||
## 👋 Free Newsletter
|
||||
[Sign up for updates](https://buttondown.com/lithiumsaas) to the free and upcoming premium SaaS version!
|
||||
|
||||
## Features
|
||||
## 🚀 Features
|
||||
|
||||
* Django 2.0 and Python 3.6
|
||||
* [Pipenv](https://github.com/pypa/pipenv) for virtualenvs
|
||||
* User registration via [django-allauth](https://github.com/pennersr/django-allauth)
|
||||
* Add social auth via Google, Facebook, etc
|
||||
* [Bootstrap v4](https://getbootstrap.com/)
|
||||
* Custom user model with email and no username
|
||||
- Django 5.1 & Python 3.12
|
||||
- Installation via [Pip](https://pypi.org/project/pip/) or [Docker](https://www.docker.com/)
|
||||
- User authentication--log in, sign up, password reset--via [django-allauth](https://github.com/pennersr/django-allauth)
|
||||
- Static files configured with [Whitenoise](http://whitenoise.evans.io/en/stable/index.html)
|
||||
- Styling with [Bootstrap v5](https://getbootstrap.com/)
|
||||
- Debugging with [django-debug-toolbar](https://github.com/jazzband/django-debug-toolbar)
|
||||
- DRY forms with [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms)
|
||||
- Custom 404, 500, and 403 error pages
|
||||
|
||||
## First-time setup
|
||||
## Table of Contents
|
||||
* **[Installation](#installation)**
|
||||
* [Pip](#pip)
|
||||
* [Docker](#docker)
|
||||
* [Next Steps](#next-steps)
|
||||
* [Contributing](#contributing)
|
||||
* [Support](#support)
|
||||
* [License](#license)
|
||||
|
||||
1. Make sure Python 3.6x and Pipenv are already installed. [See here for help](https://djangoforbeginners.com/initial-setup/).
|
||||
2. Install packages with `pipenv install`
|
||||
3. Activate a virtual environment with `pipenv shell`
|
||||
4. Set up the initial migration for our custom user models in `users`
|
||||
## 📖 Installation
|
||||
Lithium can be installed via Pip or Docker. To start, clone the repo to your local computer and change into the proper directory.
|
||||
|
||||
$ python manage.py makemigrations users
|
||||
```
|
||||
$ git clone https://github.com/wsvincent/lithium.git
|
||||
$ cd lithium
|
||||
```
|
||||
|
||||
5. Build the database schema:
|
||||
### Pip
|
||||
You can use [pip](https://pypi.org/project/pip/) to create a fresh virtual environment on either Windows or macOS.
|
||||
|
||||
$ python manage.py migrate
|
||||
```
|
||||
# On Windows
|
||||
$ python -m venv .venv
|
||||
$ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
|
||||
$ .venv\Scripts\Activate.ps1
|
||||
(.venv) $
|
||||
|
||||
6. Create a superuser:
|
||||
# On macOS
|
||||
$ python -m venv .venv
|
||||
$ source .venv/bin/activate
|
||||
(.venv) $
|
||||
```
|
||||
|
||||
$ python manage.py createsuperuser
|
||||
Then install all packages hosted in `requirements.txt` and run `migrate` to configure the initial database. The command `createsuperuser` will create a new superuser account for accessing the admin. Execute the `runserver` commandt o start up the local server.
|
||||
|
||||
7. Confirm everything is working:
|
||||
```
|
||||
(.venv) $ pip install -r requirements.txt
|
||||
(.venv) $ python manage.py migrate
|
||||
(.venv) $ python manage.py createsuperuser
|
||||
(.venv) $ python manage.py runserver
|
||||
# Load the site at http://127.0.0.1:8000 or http://127.0.0.1:8000/admin for the admin
|
||||
```
|
||||
|
||||
$ python manage.py runserver
|
||||
### Docker
|
||||
|
||||
Load the site at [http://127.0.0.1:8000](http://127.0.0.1:8000).
|
||||
To use Docker with PostgreSQL as the database update the `DATABASES` section of `django_project/settings.py` to reflect the following:
|
||||
|
||||
Click on links for "Sign up" or "Log in."
|
||||
```python
|
||||
# django_project/settings.py
|
||||
DATABASES = {
|
||||
"default": {
|
||||
"ENGINE": "django.db.backends.postgresql",
|
||||
"NAME": "postgres",
|
||||
"USER": "postgres",
|
||||
"PASSWORD": "postgres",
|
||||
"HOST": "db", # set in docker-compose.yml
|
||||
"PORT": 5432, # default postgres port
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
8. This is optional but I also recommend logging into admin and changing the default site:
|
||||
The `INTERNAL_IPS` configuration in `django_project/settings.py` must be also be updated:
|
||||
|
||||
Go to [http://127.0.0.1:8000/admin]([http://127.0.0.1:8000/admin]). You may need to logout and then login with your superuser account.
|
||||
```python
|
||||
# config/settings.py
|
||||
# django-debug-toolbar
|
||||
import socket
|
||||
hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
|
||||
INTERNAL_IPS = [ip[:-1] + "1" for ip in ips]
|
||||
```
|
||||
|
||||
Navigate to [http://127.0.0.1:8000/admin/sites/site/](http://127.0.0.1:8000/admin/sites/site/) and change the default "example.com" to "127.0.0.1" and the name to "<YOUR_PROJECT_NAME>" for local development.
|
||||
And then proceed to build the Docker image, run the container, and execute the standard commands within Docker.
|
||||
|
||||
## Recommendations
|
||||
```
|
||||
$ docker compose up -d --build
|
||||
$ docker compose exec web python manage.py migrate
|
||||
$ docker compose exec web python manage.py createsuperuser
|
||||
# Load the site at http://127.0.0.1:8000 or http://127.0.0.1:8000/admin for the admin
|
||||
```
|
||||
|
||||
* Use [PostgreSQL locally via Docker](https://wsvincent.com/django-docker-postgresql/)
|
||||
* Use [django-environ](https://github.com/joke2k/django-environ) for environment variables
|
||||
* Update [EMAIL_BACKEND](https://docs.djangoproject.com/en/2.0/topics/email/#module-django.core.mail) to [configure an SMTP backend](https://djangoforbeginners.com/password-change-reset/)
|
||||
* Add [django-debug-toolbar](https://github.com/jazzband/django-debug-toolbar) and [django-extensions](https://github.com/django-extensions/django-extensions)
|
||||
## Next Steps
|
||||
|
||||
* Make the [admin more secure](https://opensource.com/article/18/1/10-tips-making-django-admin-more-secure)
|
||||
- Add environment variables. There are multiple packages but I personally prefer [environs](https://pypi.org/project/environs/).
|
||||
- Add [gunicorn](https://pypi.org/project/gunicorn/) as the production web server.
|
||||
- Update the [EMAIL_BACKEND](https://docs.djangoproject.com/en/4.0/topics/email/#module-django.core.mail) and connect with a mail provider.
|
||||
- Make the [admin more secure](https://opensource.com/article/18/1/10-tips-making-django-admin-more-secure).
|
||||
- `django-allauth` supports [social authentication](https://django-allauth.readthedocs.io/en/latest/providers.html) if you need that.
|
||||
|
||||
## Adding Social Authentication
|
||||
I cover all of these steps in tutorials and premium courses over at [LearnDjango.com](https://learndjango.com).
|
||||
|
||||
* [Configuring Google](https://wsvincent.com/django-allauth-tutorial-custom-user-model/#google-credentials)
|
||||
* [Configuring Facebook](http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial/#Create_and_configure_a_Facebook_app)
|
||||
* [Configuring Github](https://wsvincent.com/django-allauth-tutorial/)
|
||||
* `django-allauth` supports [many, many other providers in the official docs](https://django-allauth.readthedocs.io/en/latest/providers.html)
|
||||
## 🤝 Contributing
|
||||
|
||||
## Acknowledgments
|
||||
Contributions, issues and feature requests are welcome! See [CONTRIBUTING.md](https://github.com/wsvincent/djangox/blob/master/CONTRIBUTING.md).
|
||||
|
||||
This project is heavily inspired by [cookiecutter-django](https://github.com/pydanny/cookiecutter-django). It's my own preferred template for starting new projects built out of a personal desire to actually understand all the config magic in `cookiecutter-django`.
|
||||
## ⭐️ Support
|
||||
|
||||
Give a ⭐️ if this project helped you!
|
||||
|
||||
## License
|
||||
|
||||
[The MIT License](LICENSE)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue