init
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# 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).
|
||||
Reference in New Issue
Block a user