Skip to main content

Sandwitches Banner

🥪 Sandwitches

Sandwiches so good, they haunt you!

CI Status License Python Version Ruff


✨ Overview

Sandwitches is a modern, recipe management platform built with Django. It is made as a hobby project for my girlfriend, who likes to make what I call "fancy" sandwiches (sandwiches that go beyond the Dutch normals), lucky to be me :). Sandwiches so good you will think they are haunted !. See wanted to have a way to advertise and share those sandwiches with the family and so I started coding making it happen, in the hopes of getting more fancy sandwiches.

To view the live website go to sandwitches.vandijke.xyz

🎯 Features

Sandwitches comes packed with comprehensive features for recipe management, community engagement, and ordering:

  • 🍞 Recipe Management - Upload and create sandwich recipes with images, ingredients, and instructions
  • 👥 Community Page - Discover and browse sandwiches shared by community members
  • 🛒 Ordering System - Browse recipes and place orders with cart functionality and order tracking
  • ⭐ Ratings & Reviews - Rate recipes on a 0-10 scale with detailed comments
  • 🔌 REST API - Full API access for recipes, tags, ratings, orders, and user management
  • 📊 Admin Dashboard - Comprehensive admin interface for recipe approval and site management
  • 🌍 Multi-language Support - Internationalization for multiple languages
  • 📱 Responsive Design - Mobile-friendly interface with BeerCSS framework
  • 🔔 Notifications - Email and Gotify push notification integration
  • 📈 Order Tracking - Real-time order status tracking with unique tracking tokens
  • 📊 Analytics - Umami analytics integration for tracking user behavior
  • 🖨️ TRML – Official TRML plugin support.

TRML

If you happen to have a TRML laying arround be sure to check out this recipe which is an official plugin for your TRML.

📥 Getting Started

services:
  sandwitches:
    image: martynvandijke/sandwitches:latest
    container_name: sandwitches
    environment:
     - ALLOWED_HOSTS=localhost,127.0.0.1,[::1]
     - CSRF_TRUSTED_ORIGINS=http://localhost:8000,http://127.0.0.1:8000
     - SECRET_KEY=superdupersecretkey
     - DATABASE_FILE=/config/db.sqlite3
     - MEDIA_ROOT=/config/media
    ports:
      - 6270:6270
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:6270/api/ping"]
      interval: 5s
      timeout: 10s
      retries: 3
    volumes:
      - /path/to/sandwitches:/config
    restart: always

Environment variables

Below is a list of all supported environment variables.

Variable Required Description
ALLOWED_HOSTS Yes A list of strings representing the host/domain names that this Django site can serve.
CSRF_TRUSTED_ORIGINS Yes A list of trusted origins for safe cross-site requests (e.g., https://example.com).
SECRET_KEY Yes A unique, secret value used for cryptographic signing and session security.
DATABASE_FILE Yes The file path to the SQLite database or the name of the database being used.
MEDIA_ROOT Yes The absolute filesystem path to the directory that will hold user-uploaded files.
SMTP_USE_TLS No Boolean (True/False) to enable/disable TLS encryption for outgoing emails.
SMTP_HOST No The hostname or IP address of the mail server used to send emails.
SMTP_PORT No The port number to use for the SMTP server (usually 587 for TLS or 465 for SSL).
SMTP_FROM_NAME No The display name that appears in the "From" field of outgoing emails.
SMTP_FROM_EMAIL No The actual email address used as the sender for system-generated messages.
SMTP_USER No The username required to authenticate with the SMTP server.
SMTP_PASSWORD No The password required to authenticate with the SMTP server.
GOTIFY_URL No The base URL of your Gotify server instance for push notifications.
GOTIFY_TOKEN No The application-specific token used to authenticate with Gotify.
UMAMI_HOST No UMAMI analytics tracking host.
UMAMI_WEBSITE_ID No UMAMI analytics website id.

Development setup

Prerequisites

  • Python 3.12+
  • uv (recommended) or pip

Installation

  1. Clone the repository:

    git clone https://github.com/martynvdijke/sandwitches.git
    cd sandwitches
    
  2. Sync dependencies:

    uv sync
    
  3. Run migrations and collect static files:

    uv run src/manage.py migrate
    uv run src/manage.py collectstatic --noinput
    
  4. Start the development server:

    uv run src/manage.py runserver
    

🧪 Testing & Quality

This project wraps all tests, linting and formatting in invoke tasks so you can run:

  • Run tests: uv run invoke tests
  • Linting: uv run invoke linting
  • Type checking: uv run invoke typecheck

Made with ❤️ for sandwich enthusiasts.

Release files for sandwitches 2.13.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sandwitches 2.13.3
File Size Uploaded
sandwitches-2.13.3.tar.gz 70.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sandwitches 2.13.3
File Interpreter ABI Platform
sandwitches-2.13.3-py3-none-any.whl Python 3 none any Details

Total release size: 189.9 kB

Release files / sandwitches-2.13.3.tar.gz

Download URL sandwitches-2.13.3.tar.gz
Size 70.9 kB
Tags Source
SHA-256 checksum
How to use checksums
ce827b6d552c5b8669f512860547adc8b27405b2d1b94c1af196defe8e0df448
BLAKE2b-256 checksum
How to use checksums
2c45163ed5c5c1d5f38fe2d43697d5140da31c1a069c27e9dd4d5f87b4adb9a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / sandwitches-2.13.3-py3-none-any.whl

Download URL sandwitches-2.13.3-py3-none-any.whl
Size 118.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dddc770c868f2741a75f780bbf4379c9efab3fde8842b66dcaf34085b5777a8c
BLAKE2b-256 checksum
How to use checksums
1aec8ad01f58182e8467f26568dd8ce4b430164d8e44329c95b88bdb71f42260
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

2.13.7

2 release files

2.13.6

2 release files

2.13.5

2 release files

2.13.4

2 release files

This release

2.13.3 This release

2 release files

2.13.2

2 release files

2.13.1

2 release files

2.13.0

2 release files

2.12.9

2 release files

2.12.8

2 release files

2.12.7

2 release files

2.12.6

2 release files

2.12.5

2 release files

2.12.4

2 release files

2.11.8

2 release files

2.11.7

2 release files

2.11.6

2 release files

2.11.5

2 release files

2.11.4

2 release files

2.11.3

2 release files

2.11.2

2 release files

2.11.1

2 release files

2.11.0

2 release files

2.10.3

2 release files

2.10.2

2 release files

2.10.1

2 release files

2.10.0

2 release files

2.9.9

2 release files

2.9.8

2 release files

2.9.7

2 release files

2.9.6

2 release files

2.9.5

2 release files

2.9.4

2 release files

2.9.3

2 release files

2.9.2

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.3

2 release files

2.8.2

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.6

2 release files

2.7.5

2 release files

2.7.4

2 release files

2.7.3

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.5

2 release files

2.6.4

2 release files

2.6.3

2 release files

2.6.2

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.6

2 release files

2.5.5

2 release files

2.5.4

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.2

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page