Just a test project in order to learn Django by tackling a real-world problem!
Find a file
2025-04-08 14:12:54 -07:00
.vscode finished conversion to tailwind 2025-03-11 23:47:20 -07:00
accounts Bugfixes for emails and bugfixes for trade acceptance quantities being checked on create, closes #1 2025-04-08 00:59:40 -07:00
cards When a user is thanking, check state to see if other user thanked first, if so switch new_state to THANKED_BY_BOTH. fixes #13 2025-04-08 14:12:54 -07:00
common Fix pagination controls, move mixin to common app, fix pagination invocation on all views, and other random bug fixes 2025-04-01 23:01:05 -07:00
django_project Move profile and settings into the new unified dashboard, showing user info in one place 2025-03-31 22:20:59 -07:00
home Fixes to trade expansion and trade acceptance appearance 2025-04-03 17:09:51 -07:00
seed Refactor email templates 2025-04-07 19:01:51 -07:00
static Add javascript marquee effect for overflowing text on card badge names 2025-04-06 23:49:22 -07:00
staticfiles Fix pagination controls, move mixin to common app, fix pagination invocation on all views, and other random bug fixes 2025-04-01 23:01:05 -07:00
tests/utils Fix friend_code max length issues in tests, and fix in_game_name length issues, also update tests to fit more scenarios 2025-03-27 17:26:07 -07:00
theme When a user is thanking, check state to see if other user thanked first, if so switch new_state to THANKED_BY_BOTH. fixes #13 2025-04-08 14:12:54 -07:00
trades When a user is thanking, check state to see if other user thanked first, if so switch new_state to THANKED_BY_BOTH. fixes #13 2025-04-08 14:12:54 -07:00
.cursorrules progress on conversion to tailwind 2025-03-11 23:47:20 -07:00
.dockerignore Add tailwind and daisyUI 2025-03-11 23:47:19 -07:00
.gitignore fix card_multiselect filtering and quantity controls 2025-03-13 15:48:26 -07:00
.python-version progress on conversion to tailwind 2025-03-11 23:47:20 -07:00
.python_history progress on conversion to tailwind 2025-03-11 23:47:20 -07:00
CONTRIBUTING.md clone from upstream lithium project 2025-02-26 00:17:06 -08:00
deploy.sh Bugfixes for emails and bugfixes for trade acceptance quantities being checked on create, closes #1 2025-04-08 00:59:40 -07:00
docker-compose.yml Fix gravatar hovercards, and add trade_offer image generation with playwright, for use with opengraph tags on trade_offer_detal.html 2025-03-20 23:59:22 -07:00
Dockerfile Bugfixes for emails and bugfixes for trade acceptance quantities being checked on create, closes #1 2025-04-08 00:59:40 -07:00
entrypoint.sh finished conversion to tailwind 2025-03-11 23:47:20 -07:00
LICENSE clone from upstream lithium project 2025-02-26 00:17:06 -08:00
logo.png clone from upstream lithium project 2025-02-26 00:17:06 -08:00
manage.py progress on conversion to tailwind 2025-03-11 23:47:20 -07:00
package-lock.json progress on conversion to tailwind 2025-03-11 23:47:20 -07:00
package.json progress on conversion to tailwind 2025-03-11 23:47:20 -07:00
pyproject.toml finished conversion to tailwind 2025-03-11 23:47:20 -07:00
README.md clone from upstream lithium project 2025-02-26 00:17:06 -08:00
requirements.txt Add tradeOffer image field, tweak image generation to only fire once per tradeOffer, even with simultaneous requests 2025-03-29 15:13:57 -07:00
reset-db_make-migrations_seed-data.sh Bugfixes for emails and bugfixes for trade acceptance quantities being checked on create, closes #1 2025-04-08 00:59:40 -07:00
uv.lock finished conversion to tailwind 2025-03-11 23:47:20 -07:00

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/wsvincent/djangox/assets/766418/a73ea730-a7b4-4e53-bf51-aa68f6816d6a

👋 Free Newsletter

Sign up for updates to the free and upcoming premium SaaS version!

🚀 Features

Table of Contents

📖 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

Pip

You can use pip to create a fresh virtual environment on either Windows or macOS.

# On Windows
$ python -m venv .venv
$ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
$ .venv\Scripts\Activate.ps1
(.venv) $

# On macOS
$ python -m venv .venv
$ source .venv/bin/activate
(.venv) $

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.

(.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:

# 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:

# 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

I cover all of these steps in tutorials and premium courses over at LearnDjango.com.

🤝 Contributing

Contributions, issues and feature requests are welcome! See CONTRIBUTING.md.

Support

Give a if this project helped you!

License

The MIT License