Picture this: It's your birthday and you unwrap a beautifully wrapped present to find a gift card inside. You feel a surge of appreciation and excitement, eagerly anticipating the perfect moment to redeem it. You carefully place the gift card in your cupboard, intending to use it soon. Days turn into months, and months into years, and in the hustle and bustle of life, the gift card slips from your memory. One day, while tidying up your cupboard, you stumble upon it again — only to realize it's already expired. What a waste!

What if I tell you that there is a simple solution to this problem?

Enter VoucherVault, a Django-based web application designed to help you manage your coupons, vouchers, and gift cards seamlessly. With VoucherVault, you'll never misplace or forget a gift card again. It allows you to store your coupons, vouchers and gift cards digitally, ensuring they're always handy when you need them. Additionally, with the ability to send out notifications to you in case an item in you vault is soon expiring. Nice!

And the best part: it is open-source and free to selfhost.

Installation

With Docker already installed on your server, spawning up VoucherVault only takes a few minutes. May reach out to the official GitHub repo to check out the installation instructions or obtain more information about the project.

😍
For all Unraid users, there exists an official template in the Unraid Community Store.
GitHub - l4rm4nd/VoucherVault: Django web application to store and manage vouchers, coupons and gift cards digitally.
Django web application to store and manage vouchers, coupons and gift cards digitally. - l4rm4nd/VoucherVault

Anyways, you can just use the provided docker-compose.yml from the GitHub repo, which includes everything you need.

services:

  app:
    image: l4rm4nd/vouchervault:1.13.x
    container_name: vouchervault
    restart: unless-stopped
    environment:
      # your FQDN or IP; multiple ones supported via comma delimiter
      - DOMAIN=vouchervault.example.com
      # set to True if you use a reverse proxy with tls; enables secure cookie flag and hsts
      - SECURE_COOKIES=False
      # send notifications xx days prior expiry
      - EXPIRY_THRESHOLD_DAYS=90
      # define the timezone
      - TZ=Europe/Berlin
    expose:
      - 8000
    ports:
      - 8000:8000
    volumes:
      - ./volume-data/database:/opt/app/database

  redis:
    image: redis:7-alpine
    container_name: vouchervault-redis
    restart: unless-stopped
    expose:
      - 6379

docker-compose.yml

The VoucherVault stack can be easily spawned up using Docker Compose:

# create dir for persisted data
mkdir -p ./volume-data/database

# adjust permissions
sudo chown -R 33:33 volume-data/*

# spawn the stack
docker compose up -d
💡
Combine with a reverse proxy to establish an encrypted communication channel and secure VoucherVault instance. If so, ensure to define the environment variable `DOMAIN` with your FQDN.

Usage

Let's focus on the usage of VoucherVault.

Obtain Login Credentials

Once the Docker container is successfully started, you can find auto-generated login credentials for the admin user in the container logs.

You can obtain them easily using the following command:

docker compose logs -f

Afterwards, just browse the VoucherVault instance that is available on http://127.0.0.1:8000 per default or via your custom HTTP(S) domain name.

After that, the web application should be intuitive to get you started. Create your first coupon, voucher, loyalty or gift card item and do not forget to configure your Apprise URLs for expiry notifications in the profile section.

VoucherVault supports camera input scanning. So just use this feature to capture your redeem code. VoucherVault will automatically detect the correct type - whether it is a QR code or a standardized barcode like EAN-13/EAN-8/CODE-128/CODE-39/UPC-A/UPC-E/ISBN-13/ISBN-10 etc.

Configure Apprise URLs

In order to receive expiry notifications, you have to configure Apprise URLs.

Just login with your user account and check out your user profile at the top right. There you will find a reference to configure the notification settings.

Once one or multiple Apprise URLs were configured, hit the test button and ensure that you are receiving notifications successfuly. After that, hit update and you are ready to go.

💡
VoucherVault will check your item's expiration status every week on Monday 9 AM. You can adjust this schedule freely. Check out the GitHub wiki.
GitHub - caronc/apprise: Apprise - Push Notifications that work with just about every platform!
Apprise - Push Notifications that work with just about every platform! - caronc/apprise

Configure OIDC Single-Sign-On

VoucherVault supports OIDC since release version 1.1.0.

The OIDC configuration is defined via environment variables. You can find those explained in detail here.

Combine VoucherVault with an Identity Provider like Authentik, Authelia or Keycloak and enjoy the hassle-free onboarding of your application users.

Screenshots

Interested how the frontend and Django web application looks like?