AI Indie Game Publisher is an assistant for indie teams to make smarter publishing decisions. It offers data‑driven pricing suggestions, release date guidance, and platform rubric Q&A for Steam, Epic Games Store, GOG, itch.io, and consoles.
- Smart Pricing: recommend price and range from category baselines, production quality, and content hours with quick visual comparisons.
- Release Date Advisor: flag major releases, platform sales, and events with impact levels to avoid conflicts and find better windows.
- Platform Rubric Q&A: instant, structured answers to common platform requirements (fees, revenue split, submission flow, SDK, assets).
- Game Registration & Details: track engine, category, target platforms, planned release date, and repo links.
Note: Pricing, calendar, and Q&A currently use frontend prototype logic with mock/reference data; backend integration and live data sources are on the roadmap.
- Backend: Go, Echo (HTTP), GORM (ORM), PostgreSQL, JWT auth
- Frontend: React, React Router, Recharts, Lucide Icons, Tailwind utility classes (design), Vite
- Core: Python, FastAPI, ChromaDB, OpenAI Embeddings, Pydantic, Google Cloud Storage (see
core/README.mdfor details)
- Steam Integrations: use Steam APIs and scraped datasets for wishlist games, review summaries, and calendar events, powering launch guidance and monitoring (see
backend/pkg/steam,backend/pkg/wishlist,backend/pkg/calendarand related scripts). - RAG Knowledge Base: a separate Python Core service exposes
/rag/*endpoints backed by ChromaDB and OpenAI (embeddings + ChatOpenAI) to answer platform and publishing questions over scraped docs (seecore/data,core/rag,core/service). - Pricing Model on Modal: a fine‑tuned Qwen pricing model is deployed on Modal and called from the Go backend via the
Modal.URLconfig to predict Steam‑style prices from rich game metadata (seecore/utils/modal/app.pyandbackend/pkg/modal).
indie-launch/
backend/
bin/server/main.go # service entry
pkg/app/ # service wiring and routes
pkg/auth/ # register/login, JWT, sessions
pkg/config/ # config/credentials loader (WIP)
frontend/
App.jsx # app shell and navigation
HomePage.jsx # overview and feature entry points
GameRegistration.jsx # game entry form
GameDetails.jsx # per‑game view
ChatbotPage.jsx # platform rubric Q&A (prototype)
CalendarPage.jsx # release calendar (mock data)
PricingPage.jsx # pricing recommendations (prototype)
App.css, index.html, components/ui/button.jsx
src/main.jsx # Vite entry
package.json, vite.config.js, Dockerfile
core/ # RAG system for AI capabilities
data/
loader.py # web scraping & GCS bucket sync
bucket.py # Google Cloud Storage operations
models.py # WebPage and data type definitions
webset.py # curated web sources
main.py # CLI for data operations
rag/
chromadb.py # VectorStore wrapper & operations
models.py # Document and metadata models
service/
app.py # FastAPI application
routes.py # REST API endpoints
models.py # request/response models
config.py # centralized settings
README.md # full core documentation
docs/
images/
workflow.png
Access here: http://game.lucas-ty.com (for demo only)
/Home/registerGame Registration/game/:idGame Details/chatbotPlatform Rubric Q&A/calendarRelease Calendar/pricingSmart Pricing
POST /api/v1/auth/registerRegister (email + password)POST /api/v1/auth/loginLogin (returns JWT)POST /api/v1/auth/logoutLogout (invalidate session)GET /api/v1/auth/meCurrent user (Authorization: Bearer )
Backend scaffolding is present but still under active development (config loading, middleware wiring, migrations, etc.). Expect breaking changes while we iterate.
Backend (scaffold):
- Requirements: Go 1.19+, PostgreSQL
- Typical flow:
cd backend && go mod tidy && go run bin/server/main.go - Tests:
cd backend && go test ./...(covers server wiring, migrate CLI, auth/games/rag handlers, config loaders, GitHub OAuth helpers) - Notes: Config/credentials loading and server setup are WIP; DB DSN and environment wiring will be finalized in upcoming commits. See
backend/README.mdfor the latest backend notes.
Core (Python RAG):
- Requirements: Python 3.11+,
pip - Install deps:
cd core && python -m pip install --upgrade pip && python -m pip install ".[dev]" - Lint:
python -m ruff check . - Format:
python -m black . - Tests:
cd core && python -m pytest(tests stub the vector store/RAG chat so no OpenAI tokens are consumed)
Frontend (Vite):
Demo link: http://game.lucas-ty.com
- Local dev (no .env file):
cd frontend && npm installexport VITE_GITHUB_TOKEN=github_pat_xxxexport VITE_MODEL_ENDPOINT=https://models.github.ai/inferenceexport VITE_MODEL_ID=openai/gpt-4.1-mininpm run devthen open http://localhost:5173
- Docker via Compose (recommended for dev):
export VITE_GITHUB_TOKEN=github_pat_xxxdocker compose -f docker/dev.docker-compose.yml up -d --build frontend- open http://localhost:5173
- Pricing: start from category average, adjust by quality and content hours, and consider wishlist/Demo conversion and launch discounts.
- Release timing: avoid heavy sale windows and AAA launches; align with your audience rhythm and marketing beats (demo/preview/reviews).
- Platform rubric: convert requirements (fees/split/submission/assets/SDK/ratings) into a checklist to reduce back‑and‑forth.
- Compose file:
docker/dev.docker-compose.yml - Build images:
docker compose -f docker/dev.docker-compose.yml build - Start all:
docker compose -f docker/dev.docker-compose.yml up -d - Logs:
docker compose -f docker/dev.docker-compose.yml logs -f <service> - Health:
docker compose -f docker/dev.docker-compose.yml ps - Stop:
docker compose -f docker/dev.docker-compose.yml down
Every push or PR touching frontend/**, backend/**, or the workflow itself runs .github/workflows/deploy.yml, which enforces three CI jobs plus one CD job:
-
Lint (CI)
npm ciinsidefrontend/followed bynpm run lint(ESLint flat config).go vet ./...after installing Go viaactions/setup-go.ruff check .insidecore/(Python lint) after installing dev dependencies.
-
Format (CI) (needs lint)
npm ciagain (cache warm) thennpm run format(Prettier 3--write).gofmt -w .auto-formats backend Go files.black .keeps the Python RAG service formatted.- A final
git diffguard fails if any formatter leaves new changes.
-
Test (CI) (needs format)
- Fresh checkout, Go toolchain, then
go test ./...to run backend unit/API tests (e.g., games handlers). - Python 3.11 environment plus
python -m pytestinsidecore/(tests stub the vector store/RAG chat, so no OpenAI tokens are consumed). - Node 20 +
npm ciinfrontend/; if atestscript exists,npm testruns frontend tests.
- Fresh checkout, Go toolchain, then
-
Deploy to GKE (CD) (needs tests,
mainbranch only)- Uses Pulumi projects under
infra/pulumi/deploy_indie_imagesandinfra/pulumi/deploy_indie_k8sto build/push Docker images and apply Kubernetes resources. - Authenticates to GCP via
GCP_DEPLOYMENT_SA_KEY, configures Artifact Registry Docker auth, and logs Pulumi into a GCS state backend. - Reads secrets such as
PULUMI_CONFIG_PASSPHRASE,VITE_GITHUB_TOKEN,ENV_DOCKER, andOPENAI_API_KEYto set Pulumi stack config (e.g., frontend GitHub token, OpenAI API key, service account emails).
- Uses Pulumi projects under
All jobs run on ubuntu-latest, reuse cached Node/Go deps, and can be triggered manually via workflow_dispatch.
Services and ports:
- Frontend: host 5173 → container 80 (http://localhost:5173)
- Core: host 8001 → container 8001 (GET /rag/health)
- ChromaDB: host 8002 → container 8000 (GET /api/v1/heartbeat)
- Backend: host 8080 → container 8080 (GET /api/v1/rag/health)
Notes:
- Backend container runs DB migrations automatically before starting the server and uses config at
/app/backend/config/local/service-config.yamlby default. - To override backend config/credentials, set
CONFIG_PATH/CREDENTIALS_PATHenvs or mount your files read‑only and point the envs to the mounted paths.
- Frontend: connect real backend APIs, add build scripts and deploy config, i18n and accessibility.
- Backend: services for pricing/date recommendations, knowledge base for platform Q&A, audit logs, multi‑tenant projects/roles/rate limiting.
- Data: bring in competitive pricing, holidays/sales calendars, and events from reliable sources.
MIT — see LICENSE for details.
