How finnbusse/grabbe-concept-website works
Grabbe-Gymnasium Detmold is a public school website with a Supabase-backed content-management system. Visitors browse school information, news, events and downloads; editors manage site content and settings in the CMS; users can submit contact and enrollment forms. The map includes the documented authentication and invitation flow and the internal page-content layer. Several CMS and API implementations were not sampled, so their connections are shown only where the README or excerpts support them.
Main entry points: site-layout.tsx Site shell · [id]/page.tsx CMS workspace · app/page.tsx School pages · [slug]/page.tsx News articles
Components 22
Public website
- School pages
app/page.tsx - News articles
app/aktuelles/[slug]/page.tsx - Event calendar
app/termine/page.tsx - Document downloads
app/downloads/page.tsx - Site shell
components/site-layout.tsx
Content and CMS
- Page content
lib/page-content.ts - Site settings
lib/settings.ts - CMS workspace
app/cms/pages/[id]/page.tsx - Block editor
components/cms/block-editor.tsx - Document manager
components/cms/documents-manager.tsx - Content APIs
app/api/page-content/route.ts
Identity and access
- CMS login
app/auth/login/page.tsx - Invitation API
app/api/invitations/route.ts - Supabase Auth
- Email sender code
lib/email.ts
Submissions
- Contact form
components/contact-form.tsx - Contact endpoint
app/api/contact/route.ts - Enrollment form
components/anmeldung-form.tsx - Enrollment endpoint
app/api/anmeldung/route.ts
Other components
- Site visitor
- Supabase database
- Email service
Connections 26
- Site visitor → School pages: browses
README.md - Site visitor → News articles: browses
README.md - Site visitor → Event calendar: browses
README.md - Site visitor → Document downloads: browses
README.md - School pages → Site shell: renders within
app/page.tsx - News articles → Site shell: renders within
app/aktuelles/[slug]/page.tsx - Event calendar → Site shell: renders within
app/termine/page.tsx - Site shell → Site settings: loads settings
components/site-layout.tsx - School pages → Page content: loads sections
app/page.tsx - Event calendar → Supabase database: reads events
README.md - News articles → Supabase database: reads articles
app/aktuelles/[slug]/page.tsx - Page content → Supabase database: reads content
lib/page-content.ts - CMS workspace → Block editor: uses editor
- CMS workspace → Content APIs: manages content
- CMS workspace → Supabase database: manages pages
README.md - Document manager → Supabase database: manages documents
- Site visitor → Contact form: submits inquiry
README.md - Contact form → Contact endpoint: posts submission
- Contact endpoint → Supabase database: stores submission
README.md - Site visitor → Enrollment form: submits application
README.md - Enrollment form → Enrollment endpoint: posts application
- Enrollment endpoint → Supabase database: stores application
README.md - CMS login → Supabase Auth: authenticates
app/auth/login/page.tsx - Invitation API → Supabase Auth: checks session
app/api/invitations/route.ts - Invitation API → Email sender code: sends invitation
app/api/invitations/route.ts - Email sender code → Email service: delivers email