The Problem
Managing the KSA Petegem website became a bottleneck. Every time the team wanted to update an event, publish a news post, or modify member profiles, they had to contact me to make code changes. This dependency wasn’t sustainable for a dynamic organization that needed frequent content updates.
The Solution
I built a comprehensive Content Management System tailored specifically for KSA Petegem’s needs. The dashboard at admin.ksapetegem.be provides an intuitive interface where authorized team members can manage all aspects of ksapetegem.be without touching any code.
Tech Stack
React Router 7 with TypeScript
Built with the latest React Router v7, the application leverages:
- Type-safe routing with route-based code splitting
- Server-Side Rendering (SSR) for improved performance and SEO
- Client loaders for efficient data fetching
- Modern React patterns with hooks and context
Supabase Backend
Supabase provides a complete backend-as-a-service solution:
- PostgreSQL Database: Storing posts, events, member profiles, and settings
- Authentication: Row-level security with email/password authentication
- Storage Buckets: Managing images (cover photos, profile pictures) and PDF documents
- Real-time capabilities: Built-in real-time subscriptions (ready for future features)
Progressive Web App (PWA)
The dashboard is a fully-featured PWA with:
- Installable: Can be installed on any device as a standalone app
- Offline-ready: Manifest configuration for native-like experience
- Mobile-optimized: Responsive design using Tailwind CSS and shadcn/ui components
- Fast & reliable: Optimized loading and caching strategies
Deployment
- Hosted on Netlify with automatic deployments from the main branch
- Vite build system for lightning-fast development and optimized production builds
Key Features
Content Management
- Posts (Berichten): Create, edit, publish/unpublish news articles with rich text editing, cover images, and slug management
- Events (Activiteiten): Full calendar management with date/time, location, descriptions, and target group filtering
- Member Profiles (Leiding): Manage active and inactive team members with photos, bios, roles, and group assignments
Advanced Capabilities
- Permission System: Three-tier permission levels (Social Media Team, Webmaster, Admin) with granular access control
- Document Management: Upload and manage PDF documents (registration forms, privacy statements)
- Settings Management: Centralized configuration for website features and content visibility
- Group Management: Define and organize different youth groups with custom colors and monthly letters
Data Export
- Excel Export: Generate spreadsheet reports of member data
- PDF Generation: Create formatted PDF lists using jsPDF with custom tables
- Bulk Operations: Mass update member information efficiently
Developer Experience
- Full TypeScript: Type safety across the entire application
- Modern UI: Built with shadcn/ui components and Radix UI primitives
- Form Validation: Client-side validation with unsaved changes protection
- Toast Notifications: User feedback with Sonner for all actions
- Error Boundaries: Graceful error handling throughout the app
Technical Highlights
The application showcases several modern web development patterns:
- Server-side rendering with React Router’s SSR capabilities
- Optimistic UI updates with data revalidation
- File upload handling with Supabase Storage
- Permission-based routing protecting sensitive routes
- Responsive tables using TanStack Table for complex data views
- Theme system with dark/light mode support
Impact
This CMS completely transformed KSA Petegem’s workflow. Team members can now:
- Update the website in real-time without waiting for developer availability
- Manage events and announcements from their phones while on-location
- Keep member information current throughout the year
- Publish content immediately during time-sensitive situations
The project demonstrates how modern web technologies can solve real organizational challenges while maintaining a delightful user experience.
Built in my spare time over several months, this project represents a complete full-stack application from authentication to deployment, solving actual problems for my community.