https://github.com/wsvincent/lithium
Django starter project with 🔋
https://github.com/wsvincent/lithium
allauth django docker python starter-template whitenoise
Last synced: 30 days ago
JSON representation
Django starter project with 🔋
- Host: GitHub
- URL: https://github.com/wsvincent/lithium
- Owner: wsvincent
- License: other
- Created: 2018-02-15T17:29:07.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2024-12-06T18:35:23.000Z (5 months ago)
- Last Synced: 2024-12-26T23:04:12.764Z (4 months ago)
- Topics: allauth, django, docker, python, starter-template, whitenoise
- Language: Python
- Homepage:
- Size: 24.3 MB
- Stars: 2,215
- Watchers: 63
- Forks: 410
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- stars - wsvincent/lithium - Django starter project with 🔋 (Python)
README
# 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.> This project was formerly known as _DjangoX_ but was renamed to _Lithium_ in November 2024.
https://github.com/user-attachments/assets/8698e9dd-1794-4f96-9c3f-85add17e330b
## 👋 Free Newsletter
[Sign up for updates](https://buttondown.com/lithiumsaas) to the free and upcoming premium SaaS version!## 🚀 Features
- Django 5.1 & Python 3.13
- Installation via [uv](https://github.com/astral-sh/uv), [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## Table of Contents
* **[Installation](#installation)**
* [uv](#uv)
* [Pip](#pip)
* [Docker](#docker)
* [Next Steps](#next-steps)
* [Contributing](#contributing)
* [Support](#support)
* [License](#license)## 📖 Installation
Lithium can be installed via Pip or Docker. To start, clone the repo to your local computer and change into the proper directory.```
$ git clone https://github.com/wsvincent/lithium.git
$ cd lithium
```### uv
You can use [uv](https://docs.astral.sh/uv/) to create a dedicated virtual environment.```
$ uv sync
```Then 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.
```
$ uv run manage.py migrate
$ uv run manage.py createsuperuser
$ uv run manage.py runserver
# Load the site at http://127.0.0.1:8000 or http://127.0.0.1:8000/admin for the admin
```### Pip
To use Pip, create a new virtual environment and then install all packages hosted in `requirements.txt`. Run `migrate` to configure the initial database. and `createsuperuser` to create a new superuser account for accessing the admin. Execute the `runserver` commandt o start up the local server.```
(.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
```### Docker
To use Docker with PostgreSQL as the database update the `DATABASES` section of `django_project/settings.py` to reflect the following:
```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
}
}
```The `INTERNAL_IPS` configuration in `django_project/settings.py` must be also be updated:
```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]
```And then proceed to build the Docker image, run the container, and execute the standard commands within Docker.
```
$ 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
```## Next Steps
- 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.I cover all of these steps in tutorials and premium courses over at [LearnDjango.com](https://learndjango.com).
## 🤝 Contributing
Contributions, issues and feature requests are welcome! See [CONTRIBUTING.md](https://github.com/wsvincent/lithium/blob/master/CONTRIBUTING.md).
## ⭐️ Support
Give a ⭐️ if this project helped you!
## License
[The MIT License](LICENSE)