Skip to content

Django web application to store and manage vouchers, coupons and gift cards digitally.

Notifications You must be signed in to change notification settings

l4rm4nd/VoucherVault

Repository files navigation

VoucherVault

Django web application to store and manage vouchers, coupons and gift cards digitally





Buy Me A Coffee

💬 Description

VoucherVault is a Django web application that allows you to manage coupons, vouchers and gift cards digitally. It provides a web portal that is mobile friendly and easy to use. Additionally, it supports expiry notifications via Apprise URLs that will frequently remind you to redeem your stuff.

🐳 Usage

docker compose -f docker/docker-compose.yml up

Once the container is up and running, you can access the web portal at http://127.0.0.1:8000.

The default username is admin. The default password is auto-generated.

You can obtain the auto-generated password via the Docker container logs:

docker compose -f docker/docker-compose.yml logs -f

Warning

The container runs as low-privileged www-data user. So you likely have to adjust the permissions for the persistent database bind mount volume. A command like sudo chmod -R 777 <path-to-volume-bind-mount> should work. Alternatively, leave the RWE permissions in place and solely change the ownership via sudo chown -R www-data: <path-to-volume-bind-mount>.

🔔 Notifications

Notifications are handled by Apprise.

You can define custom Apprise URLs in the user dashboard. The input form takes a comma-separated list of Apprise URLs.

The interval, how often items are checked against a potential expiry, is pre-defined (every 10 days) in the Django admin area. Here, we are utilizing Django-Celery-Beat + a Redis instance for periodic task execution. If you want to adjust the crontab interval, please head over to the admin area at /admin/django_celery_beat/periodictask/1/change/ (Periodic Tasks > Periodic Expiry Check > Crontab Schedule) and adjust to your liking.

An item will trigger an expiry notification if the expiry date is within the number of days defined by the environment variable EXPIRY_THRESHOLD_DAYS. By default, this threshold is set to 30 days.

📷 Screenshots