cardamon
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in miliseconds.
A mobile-friendly web application that captures, parses, and stores recipes from multiple sources including URLs, PDFs, and images.
- Multi-source Recipe Input: Accept recipes from:
- Web URLs (recipe websites)
- PDF files
- Images (photos of recipes)
- Intelligent Parsing: Automatically extracts:
- Dish title
- Ingredients with quantities
- Cooking steps/instructions
- Mobile-Friendly: Responsive design optimized for mobile devices
- Recipe Storage: Persistent storage of parsed recipes
- Recipe Management: View, edit, and organize saved recipes
- Frontend: React with TypeScript, TailwindCSS
- Backend: Hono API framework
- Database: SQLite for recipe storage
- AI: OpenAI GPT-4 for intelligent recipe parsing
- File Processing: PDF parsing and image OCR capabilities
├── 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
POST /api/parse/url
- Parse recipe from URLPOST /api/parse/pdf
- Parse recipe from PDFPOST /api/parse/image
- Parse recipe from imageGET /api/recipes
- Get all recipesPOST /api/recipes
- Save a recipeGET /api/recipes/:id
- Get specific recipePUT /api/recipes/:id
- Update recipeDELETE /api/recipes/:id
- Delete recipe
- Open the app in your browser
- Choose input method (URL, PDF, or image)
- Submit your recipe source
- Review and edit the parsed recipe
- Save to your recipe collection