Lassen is a full-stack AI-powered web app that recommends recipes based on food images. Users can upload a photo of ingredients, confirm detected items, and instantly receive personalized recipes using the Spoonacular API. The app includes secure authentication, password reset, and a clean dark/light UI inspired by Vercel.
- 🔎 AI Ingredient Detection – Powered by Clarifai's object recognition models and OpenAI for filtering
- 🍲 Recipe Recommendation – Spoonacular API integration for recipe suggestions
- 📸 Image Upload Support – Mobile & desktop file uploads
- ✅ Ingredient Confirmation UI – Users can confirm/edit detected items before generating recipes
- 🔐 Authentication – JWT-based login, signup, logout
- 🔁 Password Reset via Email – Resend integration with styled HTML templates
- 🌗 Dark/Light Mode – Toggleable via system or theme preference
- 🖼️ Responsive UI – Built with Tailwind CSS + Next.js App Router
- ⚙️ CI/CD Enabled – GitHub Actions AWS EC2 (backend) + Vercel (frontend)
- Framework: Next.js (v15+ with App Router, TypeScript)
- Styling: Tailwind CSS, Radix UI Dropdowns, Lucide Icons
- State: useState, useRouter, useSearchParams
- Dark Mode:
next-themes - Cookies: js-cookie for auth token
- Email Templates: react-email + resend
- Framework: FastAPI
- Language: Python 3.13
- Auth: JWT + bcrypt password hashing
- Database: SQLite (users.db)
- AI Detection: Clarifai API + OpenAI API
- Recipe Data: Spoonacular API
- Email Service: Resend (password reset)
- Storage:
uploads/folder for user images
- Frontend Hosting: Vercel (connected to GitHub)
- Domain: lassen.arryan.xyz
- Backend Hosting: AWS EC2 (connected to GitHub Actions, Dockerized)
- Domain: api.arryan.xyz
- SSL enabled via Let's Encrypt
- CI/CD:
- GitHub Actions for backend deployment
- Vercel auto-deploy on frontend GitHub push
bash backend.shEnvironment variables go in .env inside the backend folder:
CLARIFAI_API_KEY=
SPOONACULAR_API_KEY=
JWT_SECRET_KEY=
RESEND_API_KEY=
OPENAI_API_KEY=Disclaimer: npm must be installed which can be done by installing node at https://nodejs.org/en/download
bash frontend.shAdd .env.local inside the frontend folder:
NEXT_PUBLIC_API_BASE_URL=http://localhost:8000POST /detect-ingredients: Returns a list of ingredients from an uploaded imagePOST /recipes: Accepts ingredient list and returns Spoonacular recipesPOST /signup,POST /login,POST /logoutPOST /forgot-password,POST /reset-password
- User-saved recipes
- Recipe Information/Steps
MIT © Arryan Bhatnagar