PHP Developer
& DevOps Engineer
What looks like a simple page here - a commit feed, a few buttons, and clean design — is actually a demonstration of modern PHP and DevOps practices in action. Content is dynamic, features are relationally structured, and everything is cached and orchestrated quietly behind the scenes.
Below, you’ll find the "Under the Hood" section, where the site shows off its architecture, queue-driven contact form, GitLab integration, CMS blocks, and other engineered features. If you’re curious about the code, the GitLab repo is just a click away. Minimal interface, maximum engineering.
Latest GitLab Activity
Tidy up contact manager loading
Jamie Teuma - 3 days ago
CSP fixes for tinymce
Jamie Teuma - 3 days ago
Change admin login default route and style tweaks
Jamie Teuma - 4 days ago
Design tweaks
Jamie Teuma - 4 days ago
add light / dark mode
Jamie Teuma - 4 days ago
Tweaks to Contact Manager
Jamie Teuma - 4 days ago
Gitlab last checked: 4 minutes ago
Under the hood
Content is powered by CMS blocks. Editable through the admin panel, each block is cached individually and invalidated automatically when updated. TinyMCE handles rich text editing, and if a block is missing, the system fails gracefully — preventing runtime errors from leaking into production. No ceremonial cache purges required, and no broken pages if content is temporarily unavailable.
Site Features are stored relationally — grouped, maintained through a React-powered admin form, and cached for performance. Because even a simple list deserves proper architecture.
Commits from GitLab are fetched, filtered to exclude noise, cached separately, and displayed cleanly. Think of it as a tidy assistant checking the repository for meaningful work. It knows the difference between a proper commit and administrative housekeeping — a skill we could all use.
The contact form is built using ReactJS for a dynamic, interactive experience. Messages are sent to a queue system, processed asynchronously, and once handled, stored in a custom database table. From there, they can be viewed or deleted directly in the admin panel. Every inquiry is accounted for, handled reliably, and never disappears into the void — even if the site’s administrator is busy bench pressing or tweaking code.
The site can also be placed into a controlled holding state directly from the admin panel. When enabled, public routes are gracefully redirected to a branded holding page — useful for updates, staging transitions, or controlled downtime scenarios. No server tweaks required.
Security is taken seriously. Google reCAPTCHA protects the contact form from spam, while a strict Content Security Policy (CSP) enforces safe resource loading across the site. All input is validated according to configuration-driven rules, and sensitive operations are carefully handled to prevent unexpected behaviour. The site may look simple, but it’s secure by default.
Code deployment is fully automated and zero-downtime: push a commit, and the system compiles the theme, clears the necessary caches, and updates the live site seamlessly. All the behind-the-scenes work happens quietly, so changes appear instantly without interrupting the user experience.
Everything here is cached, event-driven where appropriate, and designed to keep the site snappy. Minimal on the surface, structured underneath.
Site Features
Contact Page
- Admin panel allows view / delete
- Google reCAPTCHA
- ReactJS interactive form
- Requests dispatched to queue system for async processing
- Stored in DB after processing
CMS
- Admin panel managed content blocks
- Automatic cache invalidation on update
- Custom exception handling for missing blocks
- TinyMCE WYSIWYG editor for rich text
Gitlab Integration
- Configurable in admin panel (URL, branch, number of commits)
- Event-driven cache invalidation
- Fetches commits, filters merge requests
- Last-checked timestamp
Site Features Section
- Cached for performance
- Demonstrates hybrid Laravel + React form editing in admin
- Fully dynamic content, managed via admin panel
- Groups and items easily configurable
- One-to-many relational data model
Operations & Configuration
- Admin panel controlled holding page
- Admin panel managed global configuration
- Automatic deployment-ready setup
- CLI tools: create admin users, clear cache/config
- Content Security Policy enforced
- Input validation based on config rules
Performance
- Config cache with controlled invalidation
- GitLab responses cached for 1 hour
- Minimal external dependencies at runtime
- Optimised database queries for admin operations
- Queue-driven request handling to avoid blocking
- Tag-based caching for CMS content
