Skip to main content

Vanilla - tech stack and functionality

Published: 2023-10-30
Updated: 2023-10-30

Tech Stack

  • Heavy Lifting
    • Svelte (reactive frontend)
    • Sveltekit (routing, API)
    • Prisma (ORM)
    • Lucia Auth (User management)
  • Deployment
    • Docker
    • NGINX Proxy manager (Reverse proxy)
  • NPM/JS
    • Pico CSS (UI)
    • Archiver/Unzipper (working with zip files)
    • Axios (headless browsing)
    • DOMPurify/Sanitise HTML
    • Marked (markdown rendering)
    • Fuse (fuzzy searching)
    • Langchain (LLM API wrapper)
  • Testing
    • Vitest
    • Testing Library
    • Jest DOM

Functionality

  • User
    • Login/Logout
    • Update password in settings
    • Accounts
    • Settings
    • Admin area
      • User management
      • Site management
  • Sharing
    • Public/Private profiles
    • Public/Private recipes
  • PWA
    • Android API Share recipe URL from your app
    • Android API Share URL or text into app
    • Public private recipe mark on share
    • Cute icon
  • Recipe Import/Export
    • Scrape from other websites by pasting the URL into a form
      • Schema.org recipe metadata parsing, tests working for around 240 websites
      • LLM assist fallback HTML parsing
      • LLM text block parsing
      • LLM assist image analysis
    • Bookmarklet to do the scraping
    • Import from Paprika recipe manager files (gzip containing zipped JSON files)
    • Import via Paprika API
      • Import your categories
      • Maintaining the hierarchy
    • Export your recipes to Paprika format
  • Recipe pages
    • Create, edit, delete recipes
    • Add multiple photos
      • Annotate the photos
    • Use of markdown for ingredients, notes, description, directions sections
      • This is sanitised server and browser side
    • Ingredient conversion from and to US Cups/Imperial
      • Database with densities (grams per cup) for 4000+ ingredients
    • Parse directions for temperatures to convert
    • Scaling recipes
    • Category add/update
    • Ratings edit/view
  • Recipe list
    • Search
      • Name
      • Source
      • Ingredients
    • Sort
      • Date created
      • Category
      • Name
    • Filter using categories