Compare commits
3 Commits
feature/lo
...
12bda4c08f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12bda4c08f | ||
|
|
5eb0d04377 | ||
| 5805be698b |
64
.env.example
64
.env.example
@@ -1,54 +1,20 @@
|
|||||||
# Pantry - Environment Variables Template
|
# Supabase Local Development Environment
|
||||||
# Copy to .env.development for local development
|
# Copy this file to .env and adjust as needed
|
||||||
# Copy to .env.production for production deployment
|
|
||||||
|
|
||||||
# ==============================================
|
# PostgreSQL
|
||||||
# Supabase Configuration
|
POSTGRES_PASSWORD=postgres
|
||||||
# ==============================================
|
|
||||||
|
|
||||||
# Supabase API URL (from Coolify service)
|
# JWT Secret (generate with: openssl rand -base64 32)
|
||||||
SUPABASE_URL=https://your-supabase-instance.example.com
|
# Default is fine for local dev, change for production
|
||||||
|
JWT_SECRET=super-secret-jwt-token-with-at-least-32-characters-long
|
||||||
|
|
||||||
# Supabase Anon Key (public, safe to expose to frontend)
|
# API Keys
|
||||||
SUPABASE_ANON_KEY=your-anon-key-here
|
# These are Supabase's default demo keys - OK for local development
|
||||||
|
# For production, generate new keys: https://supabase.com/docs/guides/self-hosting#api-keys
|
||||||
|
ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
|
||||||
|
|
||||||
# Supabase Service Role Key (SECRET - server-side only, never expose to frontend)
|
SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6InNlcnZpY2Vfcm9sZSIsImV4cCI6MTk4MzgxMjk5Nn0.EGIM96RAZx35lJzdJsyH-qQwv8Hdp7fsn3W0YpN81IU
|
||||||
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here
|
|
||||||
|
|
||||||
# JWT Secret (for Supabase Auth)
|
# Nuxt App Configuration (also copy to app/.env)
|
||||||
SUPABASE_JWT_SECRET=your-jwt-secret-here
|
NUXT_PUBLIC_SUPABASE_URL=http://localhost:54321
|
||||||
|
NUXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS1kZW1vIiwicm9sZSI6ImFub24iLCJleHAiOjE5ODM4MTI5OTZ9.CRXP1A7WOeoJeXxjNni43kdQwgnWNReilDMblYTn_I0
|
||||||
# Database Password (for direct PostgreSQL access if needed)
|
|
||||||
POSTGRES_PASSWORD=your-postgres-password-here
|
|
||||||
|
|
||||||
# ==============================================
|
|
||||||
# Application Configuration
|
|
||||||
# ==============================================
|
|
||||||
|
|
||||||
# Public app URL (where the Nuxt app is hosted)
|
|
||||||
PUBLIC_APP_URL=http://localhost:3000
|
|
||||||
|
|
||||||
# Node environment
|
|
||||||
NODE_ENV=development
|
|
||||||
|
|
||||||
# ==============================================
|
|
||||||
# External APIs
|
|
||||||
# ==============================================
|
|
||||||
|
|
||||||
# Open Food Facts API (no auth required)
|
|
||||||
OPENFOODFACTS_API_URL=https://world.openfoodfacts.org
|
|
||||||
|
|
||||||
# ==============================================
|
|
||||||
# Optional: Auth Providers (OIDC)
|
|
||||||
# ==============================================
|
|
||||||
|
|
||||||
# Google OAuth (optional - configure in Supabase if needed)
|
|
||||||
AUTH_GOOGLE_ENABLED=false
|
|
||||||
AUTH_GOOGLE_CLIENT_ID=
|
|
||||||
AUTH_GOOGLE_SECRET=
|
|
||||||
|
|
||||||
# Authentik (optional)
|
|
||||||
AUTH_AUTHENTIK_ENABLED=false
|
|
||||||
AUTH_AUTHENTIK_URL=
|
|
||||||
AUTH_AUTHENTIK_CLIENT_ID=
|
|
||||||
AUTH_AUTHENTIK_SECRET=
|
|
||||||
|
|||||||
54
.env.example.bak
Normal file
54
.env.example.bak
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# Pantry - Environment Variables Template
|
||||||
|
# Copy to .env.development for local development
|
||||||
|
# Copy to .env.production for production deployment
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# Supabase Configuration
|
||||||
|
# ==============================================
|
||||||
|
|
||||||
|
# Supabase API URL (from Coolify service)
|
||||||
|
SUPABASE_URL=https://your-supabase-instance.example.com
|
||||||
|
|
||||||
|
# Supabase Anon Key (public, safe to expose to frontend)
|
||||||
|
SUPABASE_ANON_KEY=your-anon-key-here
|
||||||
|
|
||||||
|
# Supabase Service Role Key (SECRET - server-side only, never expose to frontend)
|
||||||
|
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key-here
|
||||||
|
|
||||||
|
# JWT Secret (for Supabase Auth)
|
||||||
|
SUPABASE_JWT_SECRET=your-jwt-secret-here
|
||||||
|
|
||||||
|
# Database Password (for direct PostgreSQL access if needed)
|
||||||
|
POSTGRES_PASSWORD=your-postgres-password-here
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# Application Configuration
|
||||||
|
# ==============================================
|
||||||
|
|
||||||
|
# Public app URL (where the Nuxt app is hosted)
|
||||||
|
PUBLIC_APP_URL=http://localhost:3000
|
||||||
|
|
||||||
|
# Node environment
|
||||||
|
NODE_ENV=development
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# External APIs
|
||||||
|
# ==============================================
|
||||||
|
|
||||||
|
# Open Food Facts API (no auth required)
|
||||||
|
OPENFOODFACTS_API_URL=https://world.openfoodfacts.org
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# Optional: Auth Providers (OIDC)
|
||||||
|
# ==============================================
|
||||||
|
|
||||||
|
# Google OAuth (optional - configure in Supabase if needed)
|
||||||
|
AUTH_GOOGLE_ENABLED=false
|
||||||
|
AUTH_GOOGLE_CLIENT_ID=
|
||||||
|
AUTH_GOOGLE_SECRET=
|
||||||
|
|
||||||
|
# Authentik (optional)
|
||||||
|
AUTH_AUTHENTIK_ENABLED=false
|
||||||
|
AUTH_AUTHENTIK_URL=
|
||||||
|
AUTH_AUTHENTIK_CLIENT_ID=
|
||||||
|
AUTH_AUTHENTIK_SECRET=
|
||||||
52
README.md
52
README.md
@@ -22,18 +22,28 @@ A simple, modern kitchen inventory app that the whole family can actually use. B
|
|||||||
- 🔒 **Self-hosted** — Your data stays yours
|
- 🔒 **Self-hosted** — Your data stays yours
|
||||||
- 🌐 **Open Food Facts** — Auto-fill product data from barcodes
|
- 🌐 **Open Food Facts** — Auto-fill product data from barcodes
|
||||||
|
|
||||||
## 🚀 Quick Start
|
## 🚀 Quick Start (Local Development)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone
|
# Clone repository
|
||||||
git clone https://gitea.jeanlucmakiola.de/pantry-app/pantry.git
|
git clone https://gitea.jeanlucmakiola.de/pantry-app/pantry.git
|
||||||
|
cd pantry
|
||||||
|
|
||||||
# Start services (Docker Compose)
|
# One-command startup
|
||||||
docker-compose up -d
|
./dev.sh
|
||||||
|
|
||||||
# Access at http://localhost:3000
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**What this does:**
|
||||||
|
1. Starts Supabase (PostgreSQL + API + Auth + Studio)
|
||||||
|
2. Installs frontend dependencies
|
||||||
|
3. Launches Nuxt dev server
|
||||||
|
|
||||||
|
**Access:**
|
||||||
|
- App: `http://localhost:3000`
|
||||||
|
- Supabase Studio: `http://localhost:54323`
|
||||||
|
|
||||||
|
**See [DEV_SETUP.md](DEV_SETUP.md) for detailed setup guide.**
|
||||||
|
|
||||||
## 📚 Documentation
|
## 📚 Documentation
|
||||||
|
|
||||||
- [**Project Plan**](docs/PROJECT_PLAN.md) — Vision, roadmap, phases
|
- [**Project Plan**](docs/PROJECT_PLAN.md) — Vision, roadmap, phases
|
||||||
@@ -73,18 +83,32 @@ pantry/
|
|||||||
3. **Extendable** — Clean architecture for future features
|
3. **Extendable** — Clean architecture for future features
|
||||||
4. **Self-hosted first** — No SaaS plans, no lock-in
|
4. **Self-hosted first** — No SaaS plans, no lock-in
|
||||||
|
|
||||||
## 📋 MVP Status
|
## 📋 MVP Status (14/34 Complete - 41.2%)
|
||||||
|
|
||||||
**Target:** v0.1 (6-week sprint)
|
**Current Phase:** Week 2 ✅ Complete, Week 3 🔄 In Progress
|
||||||
|
|
||||||
|
✅ **Week 1 - Foundation (6/6)**
|
||||||
|
- Database schema + RLS policies
|
||||||
|
- Nuxt 4 app scaffold
|
||||||
|
- Supabase integration
|
||||||
|
- App layout
|
||||||
|
|
||||||
|
✅ **Week 2 - Core Inventory (8/8)**
|
||||||
|
- SQL helper functions
|
||||||
|
- Seed data (units + tags)
|
||||||
|
- Inventory CRUD UI
|
||||||
|
- Add/Edit/Delete components
|
||||||
|
|
||||||
|
🔄 **Week 3 - Barcode Scanning (1/5)**
|
||||||
|
- BarcodeScanner component
|
||||||
|
- html5-qrcode integration
|
||||||
|
- Product lookup (pending)
|
||||||
|
- Scan-to-add flow (pending)
|
||||||
|
|
||||||
|
⏸️ **Week 4-6** - Tag UI, PWA, Deployment (20 issues)
|
||||||
|
|
||||||
See [PROJECT_PLAN.md](docs/PROJECT_PLAN.md) for detailed roadmap.
|
See [PROJECT_PLAN.md](docs/PROJECT_PLAN.md) for detailed roadmap.
|
||||||
|
|
||||||
- [ ] Foundation (Nuxt + Supabase + Auth)
|
|
||||||
- [ ] Core inventory (CRUD, tags, units)
|
|
||||||
- [ ] Barcode scanning (PWA camera + Open Food Facts)
|
|
||||||
- [ ] Mobile polish (PWA, offline)
|
|
||||||
- [ ] Docker deployment
|
|
||||||
|
|
||||||
## 🤝 Contributing
|
## 🤝 Contributing
|
||||||
|
|
||||||
This is an early-stage project. Contributions welcome once v0.1 ships.
|
This is an early-stage project. Contributions welcome once v0.1 ships.
|
||||||
|
|||||||
42
dev.sh
Executable file
42
dev.sh
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "🚀 Pantry - Starting Local Development Environment"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check prerequisites
|
||||||
|
command -v docker >/dev/null 2>&1 || { echo "❌ Docker not found. Install: https://docs.docker.com/get-docker/"; exit 1; }
|
||||||
|
command -v docker-compose >/dev/null 2>&1 || { echo "❌ Docker Compose not found. Install: https://docs.docker.com/compose/install/"; exit 1; }
|
||||||
|
command -v bun >/dev/null 2>&1 || { echo "❌ Bun not found. Install: curl -fsSL https://bun.sh/install | bash"; exit 1; }
|
||||||
|
|
||||||
|
echo "✅ Prerequisites OK"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Step 1: Start Supabase
|
||||||
|
echo "📦 Starting Supabase services..."
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
echo "⏳ Waiting for services to initialize (15s)..."
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
echo "✅ Supabase started:"
|
||||||
|
echo " - API: http://localhost:54321"
|
||||||
|
echo " - Studio: http://localhost:54323"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Step 2: Install frontend dependencies
|
||||||
|
echo "📦 Installing frontend dependencies..."
|
||||||
|
cd app
|
||||||
|
bun install
|
||||||
|
|
||||||
|
echo "✅ Dependencies installed"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Step 3: Start dev server
|
||||||
|
echo "🚀 Starting Nuxt dev server..."
|
||||||
|
echo " App will be available at: http://localhost:3000"
|
||||||
|
echo ""
|
||||||
|
echo "Press Ctrl+C to stop"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
bun run dev
|
||||||
Reference in New Issue
Block a user