56 lines
1.6 KiB
Markdown
56 lines
1.6 KiB
Markdown
# 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).
|