88 lines
2.2 KiB
Markdown
88 lines
2.2 KiB
Markdown
# rSwag
|
|
|
|
Merchandise store for the **rSpace ecosystem** at **rswag.online**
|
|
|
|
## Stack
|
|
|
|
- **Frontend**: Next.js 15 + shadcn/ui + Tailwind CSS + Geist font
|
|
- **Backend**: FastAPI + SQLAlchemy + Alembic
|
|
- **Database**: PostgreSQL
|
|
- **Payments**: Mollie (EU data residency)
|
|
- **Fulfillment**: Printful (apparel) + Prodigi (stickers/prints)
|
|
- **AI Design**: Gemini API for on-demand design generation
|
|
|
|
## Architecture
|
|
|
|
```
|
|
rswag.online
|
|
│
|
|
▼
|
|
Cloudflare Tunnel → Traefik
|
|
│ │
|
|
▼ ▼
|
|
Next.js (3000) FastAPI (8000)
|
|
│
|
|
┌───────────────┼───────────────┐
|
|
▼ ▼ ▼
|
|
PostgreSQL Mollie POD APIs
|
|
```
|
|
|
|
## Development
|
|
|
|
### Quick Start
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
# Edit .env with your API keys
|
|
|
|
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
|
|
|
|
# Backend: http://localhost:8000
|
|
# Frontend: http://localhost:3000
|
|
```
|
|
|
|
### Local Development (without Docker)
|
|
|
|
```bash
|
|
# Backend
|
|
cd backend
|
|
pip install -e .
|
|
uvicorn app.main:app --reload
|
|
|
|
# Frontend
|
|
cd frontend
|
|
pnpm install
|
|
pnpm dev
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
rswag/
|
|
├── backend/ # FastAPI Python backend
|
|
│ ├── app/
|
|
│ │ ├── api/ # Route handlers
|
|
│ │ ├── models/ # SQLAlchemy ORM
|
|
│ │ ├── schemas/ # Pydantic models
|
|
│ │ ├── services/ # Business logic
|
|
│ │ └── pod/ # POD provider clients
|
|
│ └── alembic/ # Database migrations
|
|
├── frontend/ # Next.js 15 frontend
|
|
│ ├── app/ # App Router pages
|
|
│ ├── components/ # React components
|
|
│ └── lib/ # Utilities
|
|
├── designs/ # Design assets (in-repo)
|
|
│ ├── stickers/
|
|
│ ├── shirts/
|
|
│ └── misc/
|
|
└── config/ # POD provider config
|
|
```
|
|
|
|
## Deployment
|
|
|
|
Deployed on Netcup RS 8000 via Docker Compose with Traefik reverse proxy.
|
|
|
|
```bash
|
|
ssh netcup "cd /opt/apps/rswag && git pull && docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build"
|
|
```
|