Major changes: - Docker Compose: full Supabase stack (11 services) equivalent to supabase CLI - Fischerei module: 16 DB tables, waters/species/stocking/catch books/competitions - Sitzungsprotokolle module: meeting protocols, agenda items, task tracking - Verbandsverwaltung module: federation management, member clubs, contacts, fees - Per-account module activation via Modules page toggle - Site Builder: live CMS data in Puck blocks (courses, events, membership registration) - Public registration APIs: course signup, event registration, membership application - Document generation: PDF member cards, Excel reports, HTML labels - Landing page: real Com.BISS content (no filler text) - UX audit fixes: AccountNotFound component, shared status badges, confirm dialog, pagination, duplicate heading removal, emoji→badge replacement, a11y fixes - QA: healthcheck fix, API auth fix, enum mismatch fix, password required attribute
78 lines
2.7 KiB
TypeScript
78 lines
2.7 KiB
TypeScript
import * as z from 'zod';
|
|
|
|
const PathsSchema = z.object({
|
|
auth: z.object({
|
|
signIn: z.string().min(1),
|
|
signUp: z.string().min(1),
|
|
verifyMfa: z.string().min(1),
|
|
callback: z.string().min(1),
|
|
passwordReset: z.string().min(1),
|
|
passwordUpdate: z.string().min(1),
|
|
}),
|
|
app: z.object({
|
|
home: z.string().min(1),
|
|
personalAccountSettings: z.string().min(1),
|
|
personalAccountBilling: z.string().min(1),
|
|
personalAccountBillingReturn: z.string().min(1),
|
|
accountHome: z.string().min(1),
|
|
accountSettings: z.string().min(1),
|
|
accountBilling: z.string().min(1),
|
|
accountMembers: z.string().min(1),
|
|
accountBillingReturn: z.string().min(1),
|
|
accountProfileSettings: z.string().min(1),
|
|
createTeam: z.string().min(1),
|
|
joinTeam: z.string().min(1),
|
|
// CMS paths
|
|
accountModules: z.string().min(1),
|
|
accountCmsMembers: z.string().min(1),
|
|
accountCourses: z.string().min(1),
|
|
accountBookings: z.string().min(1),
|
|
accountFinance: z.string().min(1),
|
|
accountDocuments: z.string().min(1),
|
|
accountNewsletter: z.string().min(1),
|
|
accountSiteBuilder: z.string().min(1),
|
|
accountFischerei: z.string().min(1),
|
|
accountMeetings: z.string().min(1),
|
|
accountVerband: z.string().min(1),
|
|
}),
|
|
});
|
|
|
|
const pathsConfig = PathsSchema.parse({
|
|
auth: {
|
|
signIn: '/auth/sign-in',
|
|
signUp: '/auth/sign-up',
|
|
verifyMfa: '/auth/verify',
|
|
callback: '/auth/callback',
|
|
passwordReset: '/auth/password-reset',
|
|
passwordUpdate: '/update-password',
|
|
},
|
|
app: {
|
|
home: '/home',
|
|
personalAccountSettings: '/home/settings',
|
|
personalAccountBilling: '/home/billing',
|
|
personalAccountBillingReturn: '/home/billing/return',
|
|
accountHome: '/home/[account]',
|
|
accountSettings: `/home/[account]/settings`,
|
|
accountBilling: `/home/[account]/billing`,
|
|
accountMembers: `/home/[account]/members`,
|
|
accountBillingReturn: `/home/[account]/billing/return`,
|
|
accountProfileSettings: `/home/[account]/settings/profile`,
|
|
createTeam: '/home/create-team',
|
|
joinTeam: '/join',
|
|
// CMS paths
|
|
accountModules: `/home/[account]/modules`,
|
|
accountCmsMembers: `/home/[account]/members-cms`,
|
|
accountCourses: `/home/[account]/courses`,
|
|
accountBookings: `/home/[account]/bookings`,
|
|
accountFinance: `/home/[account]/finance`,
|
|
accountDocuments: `/home/[account]/documents`,
|
|
accountNewsletter: `/home/[account]/newsletter`,
|
|
accountSiteBuilder: `/home/[account]/site-builder`,
|
|
accountFischerei: `/home/[account]/fischerei`,
|
|
accountMeetings: '/home/[account]/meetings',
|
|
accountVerband: '/home/[account]/verband',
|
|
},
|
|
} satisfies z.output<typeof PathsSchema>);
|
|
|
|
export default pathsConfig;
|