• Townie
    AI
  • Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
connnolly

connnolly

cardamom

Unlisted
Like
2
cardamom
Home
Code
7
.cursor
1
backend
3
frontend
3
shared
1
.vtignore
README.md
deno.json
Branches
2
Pull requests
Remixes
History
Environment variables
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
6/22/2025
Viewing readonly version of main branch: v61
View latest version
README.md

Recipe Parser App

A mobile-friendly web application that captures, parses, and stores recipes from multiple sources including URLs, PDFs, images, and plain text.

Features

  • Multi-source Recipe Input: Accept recipes from:
    • Web URLs (recipe websites)
    • PDF files
    • Images (photos of recipes)
    • Plain text input
  • Intelligent Parsing: Automatically extracts:
    • Dish title and description
    • Ingredients with precise quantities and units
    • Step-by-step cooking instructions
    • Cooking metadata (prep time, cook time, servings, difficulty)
    • Recipe tags and source information
  • Mobile-Friendly: Responsive design optimized for mobile devices
  • Recipe Storage: Persistent SQLite storage with full CRUD operations
  • Recipe Management: View, edit, delete, and organize saved recipes
  • Advanced Features:
    • Recipe filtering and search
    • Fraction-to-decimal conversion for precise measurements
    • Comprehensive error handling and validation
    • Real-time parsing feedback

Tech Stack

  • Frontend: React 18.2.0 with TypeScript, TailwindCSS
  • Backend: Hono API framework with TypeScript
  • Database: SQLite with normalized schema (recipes + ingredients tables)
  • AI: OpenAI GPT-4o-mini for intelligent recipe parsing
  • File Processing:
    • PDF parsing via unpdf library
    • Image OCR via OpenAI Vision API
    • URL content extraction

Project Structure

├── backend/
│   ├── database/
│   │   ├── migrations.ts    # Database schema
│   │   └── queries.ts       # Database operations
│   ├── routes/
│   │   ├── recipes.ts       # Recipe CRUD operations
│   │   └── parse.ts         # Recipe parsing endpoints
│   └── index.ts             # Main API entry point
├── frontend/
│   ├── components/
│   │   ├── App.tsx          # Main app component
│   │   ├── RecipeForm.tsx   # Recipe input form
│   │   ├── RecipeList.tsx   # Recipe listing
│   │   └── RecipeView.tsx   # Individual recipe display
│   ├── index.html           # Main HTML template
│   └── index.tsx            # Frontend entry point
└── shared/
    └── types.ts             # Shared TypeScript types

API Endpoints

  • POST /api/parse/url - Parse recipe from URL
  • POST /api/parse/pdf - Parse recipe from PDF
  • POST /api/parse/image - Parse recipe from image
  • GET /api/recipes - Get all recipes
  • POST /api/recipes - Save a recipe
  • GET /api/recipes/:id - Get specific recipe
  • PUT /api/recipes/:id - Update recipe
  • DELETE /api/recipes/:id - Delete recipe

Usage

  1. Open the app in your browser
  2. Choose input method (URL, PDF, or image)
  3. Submit your recipe source
  4. Review and edit the parsed recipe
  5. Save to your recipe collection
FeaturesVersion controlCode intelligenceCLI
Use cases
TeamsAI agentsSlackGTM
ExploreDocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Terms of usePrivacy policyAbuse contact
© 2025 Val Town, Inc.