One place for family activities.
No more tab-hopping chaos.
A custom-built PHP + MySQL platform turning scattered Facebook posts, dead links, and guesswork into one verified, free directory for Wakefield families.
The Search Spiral
The Young Lives Consortium team already knew the activities existed. The problem was that parents could not find them quickly, or trust what they found. Families were jumping between Facebook posts, old pages, and dead links just to answer one simple question: What is on this week near us?
The real problem wasn't a lack of choice. It was fragmented discovery. A football session lived on a Facebook post from months ago. A toddler group sat on a page nobody had updated. And parents had no single place to filter by age, day, area, and category in one go.
What was holding them back
- ✗Activity details spread across disconnected channels
- ✗No single place to filter by age, day, and area
- ✗Outdated listings mixed in with current ones
- ✗Trust gap — nobody knew whether a listing was checked
- ✗Providers and families both stuck in manual admin loops
The Promise We Refused to Compromise
"If it is listed, someone has checked it."
Verified
Every listing runs through an approval queue before it reaches the public directory. Families see only reviewed, confirmed activities — not a firehose of unmoderated submissions.
Local
Built for Wakefield, not national traffic. Everything anchors to real local behaviour: filter by age group, area, day, and category, then decide. No account required.
Free
Free for families. Free for providers. Not a launch offer, not a temporary push — the permanent operating model. A Penguin for Purpose project built for community impact, not recurring revenue.
The Trust Engine
From draft to approved. A proper workflow behind the promise.
The Queue
Providers can draft activities, then submit them into an approval queue. Admin users review, approve, or reject with feedback. Every action updates status cleanly — draft, pending, approved, rejected. No grey areas.
The Gatekeeper
A listing does not go live because someone clicked publish. It goes live because someone reviewed it. The public directory query only ever returns approved and active records. The front-end promise is enforced at the database level.
The Filter Brain
Filter paths cover age group, category, postcode, provider, and day. Fallback postcode sector logic means broad area searches still return useful results — you do not need an exact postcode to find what is near you.
The Safety Layer
Security middleware applies CSP, X-Frame-Options, nosniff, and strict referrer policy headers. CSRF token support, prepared statements across query paths, password hashing for auth flows, and upload directory hardening checks built into the admin test script.
The District Map Effect
Why families actually use it: search built around real questions, not system categories.
People do not ask "What taxonomy bucket is this?" They ask: What can my child do this week? Is it near us? Is it right for their age? Can I trust this listing?
That is why the platform filters by age, day, postcode, provider, and category in one place — no multi-page wizards, no account walls. The experience stays lightweight and mobile-friendly because that is how busy parents search.
The Engine Room
How we built a two-lane trust system that lets providers self-manage without compromising quality.
The hard part was not rendering listings. It was preserving trust while still letting providers self-manage updates. Anyone can build a directory page — the challenge was building one where every listing carries a verified approval trail without requiring an admin to do all the work manually.
We built a two-lane system. The contribution lane gives providers the speed to create and edit entries without waiting on email chains. The moderation lane routes every submission through an approval queue where admin decisions write back to both queue and activity status in database transactions. The public directory query only ever returns approved and active records — enforced at the query level, not just the UI.
The Approval Workflow
Providers push drafts into the queue. Admin users approve or reject with feedback. Queue queries run through the admin panel. Activity status transitions are transactional — draft → pending → approved or rejected — with PSR-4 autoloaded application classes managing the state. The public directory filters with a WHERE clause that only ever returns status=approved AND is_active=1.
Architectural Restraint
No page builder. No plugin chain. No CMS abstraction between the approval workflow and the rendered output. PHP 8+ with PDO prepared statements, PHPMailer for provider notifications, dompdf for document workflows, Tailwind CLI and esbuild for asset pipelines. CSRF tokens generated and validated in middleware. CSP headers, password hashing, and upload directory hardening checks built into the admin security test script.
Developer Insight // Winston
"The 'Verified' badge on the front end means nothing unless the database enforces it. If a provider can set their own status to approved, the badge is decoration. This platform makes approved a query-level gate, not a UI toggle — and that is the right call every time."
What they said
"If you want to stand out and not just look like a generic website then Rob at blue penguin is your guy. I only had a 50 minute conversation with Rob about a website that's easy for families to use to help find local activities and help show case what the offer of the voluntary sector was listening to me ramble Rob really got it and made my dream reality he asked questions and gave many solution if there was a worry and even helped with naming the website he was quick professional and really hit the nail on the head first time round with the design and for someone who isn't tech savvy like me nothing is ever too much for Rob the support is outstanding and the best part he's a real local person who takes pride in all his work thank you Rob for play grow belong it's amazing"— Young Lives Consortium Lead
The Numbers
Approved Listings
Verified activities from local providers, every one moderated before publication.
Facilities Represented
Organisations with self-serve portal access to manage their own listings.
Areas of Wakefield
Every corner of the district covered, with postcode-based area filtering.
Families Helped
Real families now searching one trusted place instead of five browser tabs.
Draft, Pending, Approved, Rejected
Age, Postcode, Provider, Category, Day
Custom PHP + MySQL, no CMS dependency
The Tech Specs
For the nerds
project: Play, Grow, Belong
build_type: Community activity directory + moderation workflow
business_context: Wakefield families searching for verified activities
stack:
language: PHP 8+
database: MySQL (PDO prepared statements)
styling: Tailwind CSS 4 (CLI build)
bundler: esbuild
email: PHPMailer
core_features:
approval_queue: draft → pending → approved/rejected
directory_filters: age, postcode, provider, category, day
fallback_search: postcode sector matching
structured_data: activity-level SEO schema
dashboards: admin and facility portals
security_posture:
query_protection: prepared statements on all paths
csrf: generation + validation middleware
headers: CSP, X-Frame-Options, nosniff, referrer
auth: password_hash / password_verify
upload_hardening: admin security test script
confirmed_metrics:
approved_activities: 31
distinct_facilities: 8
distinct_locations: 18
districts_covered: 11
Developer Insight // Winston
"A community directory without an approval workflow is just a spam bucket with extra steps. The moderation queue here is the core feature — not an afterthought. That is the difference between a platform people trust and one they abandon."
Ready to give your community one trusted place to look?
If you want a custom-built platform that keeps trust high and admin sane, this is the work we do.
More case studies
See what else we've built — hand-coded, no templates.