Frontend was crashing with "Unexpected token 'I'" when the backend returned plain text errors (e.g. "Internal Server Error" from proxy). Now safely falls back to response.text() when JSON parsing fails. Also prevents backend from swallowing HTTPException in catch-all. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> |
||
|---|---|---|
| backend | ||
| backlog | ||
| config | ||
| designs | ||
| frontend | ||
| landing | ||
| rswag@90b48e9eb9 | ||
| spaces | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| Dockerfile | ||
| README.md | ||
| docker-compose.dev.yml | ||
| docker-compose.prod.yml | ||
| docker-compose.yml | ||
| index.html | ||
| nginx.conf | ||
README.md
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
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)
# 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.
ssh netcup "cd /opt/apps/rswag && git pull && docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build"