A Django + PostgreSQL web app for tracking personal tasks and grocery inventory. It keeps to-do lists and shopping lists separate but connected, with user authentication. Designed to be self-hostable for personal or home server use.
  • Python 87%
  • CSS 13%
Find a file
2026-04-14 14:21:07 +02:00
accounts Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00
generic Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00
grocery Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00
listy Renamed django project 2026-04-14 14:21:07 +02:00
static Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00
templates Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00
todo Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00
.gitignore Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00
.python-version Initial project setup 2026-01-26 08:44:54 +00:00
license.md Added distribution license: BSD-3-clause 2026-04-14 14:13:50 +02:00
manage.py Updated project name to listy 2026-04-14 14:01:06 +02:00
pyproject.toml Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00
README.md Added project infos to readme 2026-04-14 14:20:50 +02:00
uv.lock Major Version 1 Release (#8) 2026-02-12 15:13:08 +00:00

Listy

Python Version License Self-hosted

A modular Django-based web application that combines multiple small utilities such as grocery lists, todo management, and account handling—into a single cohesive project.

Installation

Clone the repository and install dependencies:

git clone https://git.siru.ink/siru/listy.git
uv sync

Create Django & PostgreSQL configuration variables in a /.env file:

SECRET_KEY=...
DEBUG=...
POSTGRESQL_DBNAME=...
POSTGRESQL_USER=...
POSTGRESQL_PASSWD=...
POSTGRESQL_PORT=...
MEDIA_ROOT=...

Apply migrations and start the development server:

uv run manage.py migrate
uv run gunicorn listy.wsgi --port <your-preferred-port>

Features

  • Modular Apps: Separate Django apps for clear responsibility boundaries
  • User Accounts: Login, logout, and basic account views
  • Todo Lists: Create, manage, and share tasks
  • Grocery Lists: Item tracking for shopping
  • Reusable Templates: Shared base layout and components

Technology Stack

  • Python: Easy-to-deploy, widely adopted language with strong ecosystem and long-term maintainability
  • PostgreSQL: Robust relational database used via Django ORM, configured through environment variables for secure and flexible deployment
  • Django Framework: High-level web framework providing ORM, authentication system, templating engine, and modular app architecture
  • Gunicorn: Production-ready WSGI HTTP server used to run the Django application in a scalable and efficient manner

FAQ

Is this production-ready?

This project is designed primarily as a lightweight, extensible base. For production use, you would need to modify the trusted hosts selection in the listy.settings module. Furthermore, this app is not implementing TLS or load-balancing, so it would be best run behind a mature reverse proxy such as nginx.

Can I add more apps?

Yes. The modular structure makes it easy to plug in additional Django-framework apps without affecting existing functionality.

Why use multiple apps instead of one?

Separation of concerns. Each app encapsulates its own logic, making the project easier to maintain and extend.

How do I customize styling?

Edit the global stylesheet at static/style.css or extend the base template.