No description
  • TypeScript 87.2%
  • CSS 5%
  • Python 4.4%
  • JavaScript 3.2%
  • Dockerfile 0.1%
Find a file
beasty 6f147d2bbf
All checks were successful
Build and Push Container Images / build-frontend (push) Successful in 5m33s
Build and Push Container Images / tag-convex-changes (push) Successful in 4s
Build and Push Container Images / changes (push) Has been skipped
Build and Push Container Images / build-renderer (push) Successful in 3m34s
Build and Push Container Images / build-image-processing (push) Successful in 2m18s
Build and Push Container Images / build-media (push) Successful in 36s
Build and Push Container Images / build-discord-bot (push) Successful in 50s
Build and Push Container Images / deploy-convex (push) Successful in 1m30s
fix(quick-share): replace polling with event dispatch
2026-08-03 13:13:56 +02:00
.forgejo/workflows feat(quick-share): add temporary direct media sharing 2026-07-23 14:51:30 +02:00
backend fix(quick-share): replace polling with event dispatch 2026-08-03 13:13:56 +02:00
convex/_generated/ai Evolution Lines generator (#91) 2026-06-11 16:08:39 +02:00
frontend fix(quick-share): replace polling with event dispatch 2026-08-03 13:13:56 +02:00
scripts fix(dev): inject Infisical in every service 2026-07-23 10:49:52 +02:00
.gitignore chore: housekeeping sweep — remove stale build artifacts and dead files (#8) 2026-07-02 08:35:42 +00:00
.infisical.json fix(dev): inject Infisical in every service 2026-07-23 10:49:52 +02:00
AGENTS.md docs(agents): require explicit deployment approval 2026-07-23 15:38:24 +02:00
CLAUDE.md feat(stream): overlay expansion — evolution & batch shows, QR codes, control overhaul (#7) 2026-06-12 15:06:16 +00:00
CONTRIBUTING.md feature/bun to pnpm (#65) 2026-04-03 03:36:32 +02:00
dash-variant-bar.png fix: resolve merge conflicts with main 2026-02-09 21:55:11 +01:00
lefthook.yml feat(quick-share): add temporary direct media sharing 2026-07-23 14:51:30 +02:00
LICENSE.md Prepare repository for public release 2026-01-02 09:10:58 +01:00
orca.yaml fix(dev): inject Infisical in every service 2026-07-23 10:49:52 +02:00
package.json feat(quick-share): add temporary direct media sharing 2026-07-23 14:51:30 +02:00
pnpm-lock.yaml chore(deps): update non-major dependencies (#22) 2026-07-22 19:21:49 +00:00
README.md fix(quick-share): replace polling with event dispatch 2026-08-03 13:13:56 +02:00
renovate.json chore: configure renovate (#1) 2026-07-02 08:37:51 +00:00
worktrees.json feature/bun to pnpm (#65) 2026-04-03 03:36:32 +02:00

BeastyPage

A pixel cat gacha platform featuring generators, wheels, and collection tools built with ClanGen sprites.

Features

  • Cat Generator - Generate random pixel cats with customizable traits, accessories, and tortie coats
  • Gacha Wheel - Weighted wheel spins with animated reveals
  • Catdex - Browse and search all generated cats in a Pokedex-style archive
  • Adoption Generator - Roll whole litters, trim each round, finish with your favorites
  • Visual Builder - Trait-by-trait sprite previews with instant updates
  • Stream Tools - Live session controls for audience voting and shareable builds

Tech Stack

  • Frontend: Next.js 16, React 19, TailwindCSS
  • Backend: Convex (serverless database), FastAPI renderer service
  • Package Manager: pnpm
  • Deployment: Kubernetes via FluxCD, Docker containers

Quick Start

Prerequisites

  • Node.js (v22+)
  • pnpm (v10+)
  • Convex account (for database)
  • Python 3.11+ with uv (for renderer service)

Frontend

cd frontend
pnpm install
pnpm run dev

Open http://localhost:3000 in your browser.

Renderer Service (Optional)

The renderer service generates cat card images. If not running, the frontend will work but card generation will be unavailable.

cd backend/renderer_service
uv pip install --editable .
uv run uvicorn renderer_service.app.main:app --reload --port 8001

Environment Variables

Build-time (Frontend)

Variable Description
CONVEX_DEPLOYMENT Convex deployment identifier
NEXT_PUBLIC_CONVEX_URL Convex cloud URL
NEXT_PUBLIC_POSTHOG_KEY PostHog analytics key (optional)
NEXT_PUBLIC_POSTHOG_HOST PostHog host URL (optional)

Convex deployment

Variable Description
QUICK_SHARE_WORKER_URL Public base URL Convex uses to dispatch Quick Share jobs (for example, https://beastyrabbit.com)

Runtime

Variable Description Default
PORT Server port 3000
RENDERER_INTERNAL_URL Renderer service URL -

Project Structure

beastypage/
├── frontend/               # Next.js application
│   ├── convex/             # Convex functions and schema
│   ├── app/                # Next.js app router pages
│   └── Dockerfile          # Multi-stage build (pnpm → Node)
├── backend/
│   ├── renderer_service/   # FastAPI cat renderer
│   │   └── Dockerfile      # Python/uv build
│   └── README.md
├── lifegen-fullgen/        # LifeGen sprite generation library
└── .github/workflows/      # CI/CD pipelines

Container Images

Images are automatically built and pushed to GHCR on pushes to main:

  • ghcr.io/beastyrabbit/beastypage-frontend:latest
  • ghcr.io/beastyrabbit/beastypage-renderer:latest

Running with Your Own Database

The frontend image uses a placeholder for the Convex URL at build time. Provide your own Convex instance at runtime:

docker run -p 3000:3000 \
  -e NEXT_PUBLIC_CONVEX_URL=https://your-deployment.convex.cloud \
  ghcr.io/beastyrabbit/beastypage-frontend:latest

Kubernetes Deployment

For Kubernetes/Talos deployments, configure the Convex URL via ConfigMap or Secret:

apiVersion: apps/v1
kind: Deployment
spec:
  template:
    spec:
      containers:
        - name: frontend
          image: ghcr.io/beastyrabbit/beastypage-frontend:latest
          env:
            - name: NEXT_PUBLIC_CONVEX_URL
              valueFrom:
                secretKeyRef:
                  name: beastypage-secrets
                  key: convex-url

Credits

ClanGen Sprites

Cat sprites originate from ClanGen, licensed under CC BY-NC 4.0.

  • Original creator: just-some-cat.tumblr.com
  • Fan-edit creator: SableSteel and others

LifeGen

Built with components from LifeGen, a ClanGen mod.

Pixel Cat Maker

Additional tooling from Pixel Cat Maker.

License

See LICENSE.md for full details.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines.