Project
Custom CMS
A self-hosted PHP CMS that powers this site: public pages, member area, and a full admin for day-to-day operations. Built modular so calendars, messaging, analytics, security, and apps can grow without rewriting the core.
Administration dashboard
The admin home is the control center for the whole install. From one place you reach users, permissions, content, media, security, analytics, and system settings - without jumping between disconnected tools.
The architecture is modular: new features and applications can plug into the same shell, menus, and auth model without patching the CMS core. That is how this portfolio stays one codebase for marketing pages and operations.
What you see here is the live system behind this site. Danish, English, and German share the same UI patterns in admin and on the public front end.
- Central dashboard for users, content, media, security, analytics, and settings
- Modular apps and features without forking the core
- Same install for public site, members, and administration
Calendar & tasks
Scheduling and task tracking live inside the CMS instead of a separate SaaS calendar. Teams get one place for events and work items, with the same login and permissions as the rest of the admin.
Views, categories, and filters are meant for real weekly planning: color-coded events, task status, and calendars that can stay personal or be shared across a group.
- Multiple calendar views for day-to-day planning
- Event categories and color coding
- Task tracking with filtering
- Personal and shared calendars
Real-time messaging
Internal chat is built into the CMS so users and teams can coordinate without leaving the admin or bouncing to Slack, Teams, or email threads.
Delivery is near real time: messages show up with a maximum delay of about five seconds, which is enough for fast collaboration while staying inside the same auth and permission model.
- Instant messaging between users and teams
- Maximum delivery delay of five seconds
- No dependency on external messaging platforms
Security dashboard
Security is not a bolt-on plugin list. A dedicated dashboard surfaces failed logins, IP blocks, security events, file integrity checks, and attack signals so administrators can see what is happening now.
The goal is short time-to-response: spot suspicious activity early, understand the pattern, and act from the same place you already manage users and settings.
- Failed login attempts and related security events
- IP blocks and attack detection views
- File integrity monitoring
- Faster response to potential threats
Built-in code editor
Developers can edit themes, templates, translations, stylesheets, and content blocks from inside the CMS. That keeps small site changes on the same server and workflow as the rest of the project.
The editor is still a work in progress, but the direction is clear: change appearance and structure without opening an external IDE or raw server access for every tweak.
- Themes, templates, translations, and stylesheets
- Content blocks editable from the CMS
- Still a work in progress
Roles & permissions
Access is controlled through a permission matrix: each CMS feature can be granted or denied per role, so administrators are not stuck with a few coarse “admin or not” switches.
Roles attach to both users and groups. That keeps access management scalable when a team grows, while still letting you grant a one-off capability to a single person when needed.
- Intuitive permission matrix for every CMS feature
- Roles for users and groups
- Scalable access management without custom if-statements per page
Built-in analytics
Traffic, behavior, SEO, performance, accessibility, security, and privacy insights live inside the CMS. You get Core Web Vitals and related field data without wiring up a third-party analytics stack.
Tabs cover the full picture - from visitors and content to server health and consent-aware privacy views - so operators can diagnose the site from the same admin they already use.
- Traffic, user behavior, content, SEO, and audience views
- Performance and Core Web Vitals (LCP, CLS, INP, TTFB, load)
- Security, accessibility, and privacy tabs in one place
- No dependency on third-party analytics services
Performance on this site
Field metrics (p75) from this CMS install, based on 13 visitors who consented to analytics.
- Largest Contentful Paint: 144 ms · good ≤ 2500 ms
- Cumulative Layout Shift: 0.000 · good ≤ 0.100
- Interaction to Next Paint: 16 ms · good ≤ 200 ms
- Time to First Byte: 42 ms · good ≤ 800 ms
- Page load time: 141 ms · good ≤ 3000 ms
Measured in real browsers via this site’s built-in web vitals collection. Values update as more consented traffic is recorded.