All API calls go through tRPC for end-to-end type safety.
events- Event management (CRUD, approval, filtering)courses- Course management (CRUD, registration, approval)posts- News/post management (CRUD, approval)registrations- Course registration managementensembles- Ensemble managementauswahlchoere- Select choir managementbezirke- District managementmedia- Media/file managementmaterials- Downloads managementusers- User managementorganization- Team, Vorstand, Posaunenrat, etc.locations- Location managementnewsletter- Newsletter subscriptionssearch- Global search
Public:
getAll- List items (with pagination, filtering)getById- Get single item
Protected (authenticated):
create- Create new itemupdate- Update existing itemdelete- Delete item
Reviewer (LPW/RPW):
approve- Approve pending contentreject- Reject with notes
Admin:
bulkUpdate- Update multiple itemsbulkDelete- Delete multiple items
- POST - Upload file (returns
Mediaobject) - Requires authentication
- Accepts: images, PDFs, documents
- GET - Serve uploaded files
- Public access for approved media
- Better Auth endpoints (login, logout, OAuth, etc.)
- GET - Check email configuration
- POST - Send test email
DRAFT → PENDING → APPROVED
↓
REJECTED
DRAFT- Work in progressPENDING- Submitted, awaiting approvalAPPROVED- Published and visibleREJECTED- Needs revisionARCHIVED- No longer active