Merch store for the rSpace ecosystem
Go to file
Jeff Emmett e5317dab27 feat: update Printful client to v2 mockup-tasks API format
The v2 API uses products array with catalog source, nested layers in
placements, and GET /mockup-tasks/{id} for polling. Also removes
hardcoded domain in favor of PUBLIC_URL setting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:57:04 -08:00
backend feat: update Printful client to v2 mockup-tasks API format 2026-02-24 16:57:04 -08:00
backlog feat: update Printful client to v2 mockup-tasks API format 2026-02-24 16:57:04 -08:00
config Initial commit: rSwag - merch store for the rSpace ecosystem 2026-02-18 03:24:22 -07:00
designs chore: activate DefectFi t-shirt design 2026-02-24 15:31:50 -08:00
frontend fix: enlarge shirt print area for more realistic sizing 2026-02-24 15:48:03 -08:00
spaces feat: add fungiswag.jeffemmett.com as custom domain for Fungi Flows 2026-02-18 12:45:21 -07:00
.env.example feat: update Printful client to v2 mockup-tasks API format 2026-02-24 16:57:04 -08:00
.gitignore Initial commit: rSwag - merch store for the rSpace ecosystem 2026-02-18 03:24:22 -07:00
CLAUDE.md feat: replace Stripe with Mollie payments + TBFF revenue split to bonding curve 2026-02-18 13:16:39 -07:00
README.md feat: replace Stripe with Mollie payments + TBFF revenue split to bonding curve 2026-02-18 13:16:39 -07:00
docker-compose.dev.yml feat: add Prodigi POD client + server-side product mockup previews 2026-02-18 13:29:47 -07:00
docker-compose.prod.yml feat: add multi-tenant spaces with Fungi Flows storefront 2026-02-18 12:20:19 -07:00
docker-compose.yml feat: wire rswag backend to pull secrets from Infisical at startup 2026-02-23 19:36:35 -08:00

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"