Skip to main content

Add your description here

Project description

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.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sandwitches-2.10.3.tar.gz (68.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sandwitches-2.10.3-py3-none-any.whl (113.6 kB view details)

Uploaded Python 3

File details

Details for the file sandwitches-2.10.3.tar.gz.

File metadata

  • Download URL: sandwitches-2.10.3.tar.gz
  • Upload date:
  • Size: 68.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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}

File hashes

Hashes for sandwitches-2.10.3.tar.gz
Algorithm Hash digest
SHA256 28fe809edf9dc1c0d310eae24a005376f267f8da1f8aca24e77df094e5f08d7d
MD5 38dc491d16ceaad613b0749b65ef2a58
BLAKE2b-256 2cfb17f1741780b804a5a0cf51aeb40390ec21aba95f32ecd6342e18ab35279f

See more details on using hashes here.

File details

Details for the file sandwitches-2.10.3-py3-none-any.whl.

File metadata

  • Download URL: sandwitches-2.10.3-py3-none-any.whl
  • Upload date:
  • Size: 113.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","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}

File hashes

Hashes for sandwitches-2.10.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2d258d236c590ad02ffac3c1122235b23f5a3bde00e4c1b1a0d4e2868dd8342e
MD5 acc46db6c775e58f30f1d8f1678b5601
BLAKE2b-256 d4e59ac63f9bf0afe938bdb36a928a53c3c24eca71c61e78ff6b5a188afa2491

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page