shliste (from "short" + German Liste) is a modern, powerful shopping list and recipe management app built with Nuxt 4. Designed to simplify your grocery runs and meal planning, shliste helps you organize what you need, where to get it, and how to cook it β all in one place.
π Live App: https://shliste.app
- 
β Create & Manage Lists
Add multiple shopping lists and organize them however you want β groceries, parties, camping, and more. - 
π·οΈ Add Items with Context
Save items with descriptions, quantities, and even where to find them (aisles, stores, etc). - 
π§ Smart Item Suggestions
Reuse your commonly bought items β no need to type them again and again. - 
π₯ Recipe Manager
Create recipes with steps and ingredients, then add all ingredients to a shopping list with one click. - 
π Google Drive Sync
Connect your account to sync lists and recipes to the cloud β works seamlessly in the background. - 
πΎ Offline First
Works offline until you connect your Google Drive β perfect for quick access anywhere. - 
ποΈ Interactive & Easy to Use
Check off, uncheck, or remove items from your lists with a single tap. 
git clone https://github.com/shroomlife/shliste.git
cd shliste
bun install
bun run devbun run build# Build Docker image
bun run docker:build
# Push to Docker Hub
bun run docker:push
# Both in one command
bun run pb| Command | Description | 
|---|---|
dev | 
Start development server | 
build | 
Build the app for production | 
generate | 
Generate static files | 
preview | 
Preview the production build | 
lint | 
Run ESLint | 
lint:fix | 
Auto-fix lint issues | 
docker:build | 
Build Docker Image | 
docker:push | 
Push Docker Image | 
pb | 
Build and Push Docker Image | 
- Nuxt 4
 - Vue 3
 - Pinia β State management
 - TailwindCSS β UI styling
 - SweetAlert2 β Alerts
 - Yup β Validation
 - OpenAI β Smart suggestions (optional)
 - Google Drive API β Cloud sync
 - Bun β Fast all-in-one JavaScript runtime
 
MIT License Β© 2025 shroomlife
Designed for those who want smart, fast, and practical grocery & recipe planning β because lifeβs too short for bad shopping lists.