Files
flatrender/backend/contracts/events/studio.yaml
T
soroush.asadi 90ac0b81d1 feat: V2 microservices stack — backend services, gateway, JWT auth
Add full V2 architecture: identity, content, studio (.NET 10) and file,
render, notification, gateway (Go) services with vendored deps, plus DB
migrations, event/API contracts, and an init-db script.

Wire the Next.js frontend to the gateway: server-side JWT auth routes
(login/register/refresh/logout/me), gateway fetch helper, and session/
cookie/jwt helpers under src/lib.

Containerize the stack via docker-compose.v2.yml and per-service
Dockerfiles. Base images resolve through a Nexus mirror (Docker Hub) and
MCR directly; npm/NuGet pull from Nexus groups. Self-host fonts via
next/font/local to avoid Google Fonts (geo-blocked).

Add CI workflow and ignore .env.v2, *.stackdump, and .NET bin/obj.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 23:29:31 +03:30

33 lines
1.2 KiB
YAML

# =====================================================================
# Studio Events — published by Studio Service
# =====================================================================
events:
studio.project.saved.v1:
routing_key: studio.project.saved.v1
description: User saved their project (used to trigger autosave events, analytics).
payload:
type: object
required: [saved_project_id, user_id]
properties:
saved_project_id: { type: string, format: uuid }
tenant_id: { type: string, format: uuid }
user_id: { type: string, format: uuid }
original_project_id: { type: string, format: uuid }
name: { type: string }
choose_mode: { type: string }
scene_count: { type: integer }
is_first_save: { type: boolean }
studio.project.deleted.v1:
routing_key: studio.project.deleted.v1
description: User deleted a saved project (moved to trash or hard-deleted).
payload:
type: object
required: [saved_project_id, user_id, hard_delete]
properties:
saved_project_id: { type: string, format: uuid }
tenant_id: { type: string, format: uuid }
user_id: { type: string, format: uuid }
hard_delete: { type: boolean }