# shopping-list Self-hosted, topic-based shopping lists with price-drop notifications. Track things you want to buy (clothes, gear, whatever), paste product URLs, get mailed when a deal appears. ## Stack - **Backend** — Rust, [Axum](https://github.com/tokio-rs/axum), SQLx + Postgres, argon2 password hashing, server-side sessions (tower-sessions), lettre SMTP. - **Frontend** — SvelteKit + TailwindCSS, grunge/breakcore theme. - **Infra** — docker-compose (Postgres + backend + frontend). ## Status Phased build. Current: **Phase 1 — auth foundation**. | Phase | Scope | |-------|-------| | 1 | Accounts, email verification, login/logout, password reset, per-user settings | | 2 | Lists (topics) + items CRUD | | 3 | Tracked URLs: paste → periodic refetch → price parse + history | | 4 | Notifications: SMTP price-drop alerts | | 5 | Design polish | ## Quick start (dev) ```sh cp .env.example .env # edit .env — set SESSION_SECRET (openssl rand -hex 32) and SMTP creds # Postgres only, run backend/frontend natively while developing: docker compose up -d db # backend cd backend && cargo run # frontend (separate shell) cd frontend && pnpm install && pnpm dev ``` Full stack in containers: ```sh docker compose up --build ``` App: http://localhost:5173 · API: http://localhost:8080 ## Notes - Deal tracking uses **user-pasted product URLs** refetched on a schedule — no hardcoded retailer scrapers. Region default: DE/EU, EUR. - SMTP is required for email verification + notifications. Use a real provider or a dev catcher like [Mailpit](https://github.com/axllent/mailpit).