Mesogeiako — Vocational Training Centre & Custom CMS
1 week|Designer & Full-Stack Developer
Mesogeiako is a licensed lifelong-learning and vocational training centre in Thessaloniki, and its site had grown up on WordPress and the BeTheme page builder. The rebuild keeps every piece of that content and none of the platform. It is plain PHP 8.5 on MySQL — a front controller, a fifteen-line autoloader, no framework, no Composer and no build step — about five thousand lines of source and two thousand of templates. Greek is the default and English lives under /en/, and parity is structural rather than bolted on: every project, news item and page is an item row with one translation row per language, slugs sit on the translation so Greek pages keep Greek-derived URLs, and a third language would need no schema change. The migration is code, not a one-off export. Twenty-one ordered, repeatable steps rebuild the whole site from the WordPress source — parsing BeTheme's Muffin Builder content, stripping boilerplate, normalising headings, merging duplicate news, pulling embedded data-URI images out into files — and carry 33 projects, 90 news items and 20 pages across in both languages, with 798 redirects so old links land on their new pages. Every image in the library is a WebP under 200 KB: quality steps down from 82 to 40, then the dimensions shrink until it fits, and the original is discarded. The admin gives the centre its projects, news and pages in both languages under TinyMCE, a media library, contact details, and the homepage counters and blocks. Structured data carries the postal address, the business registry number and the opening hours — three facts the old site published in a theme footer widget, where no post and no importer could see them.
WordPress had hidden some of the facts. The postal address, the business registry number and the opening hours lived in a theme footer widget rather than in any post, so a content export never saw them, and the second phone number disagreed with itself across three places on the old site. Greek URLs also broke the obvious database design: percent-encoded, they routinely run past 191 characters while sharing long prefixes, so a prefix index rejects genuinely different addresses as duplicates. And a bilingual editor has a quiet failure mode — a save that omits one language is indistinguishable from someone deliberately clearing it.
Solutions
Each correction is its own numbered migration step, so a fresh rebuild from WordPress reproduces the client-confirmed phone number and the recovered address instead of re-importing the old mistakes. Redirects are made unique on a SHA-256 hash of the old path rather than a prefix. Each archive segment resolves only in its own language, so an item cannot live at two URLs and split its own ranking. Every translation form posts a presence marker per language — which is what lets a missing language mean 'untouched' rather than 'delete' — and the admin smoke suite carries a regression test for it. Filenames are NFC-normalised before transliteration, because macOS and Linux store the same Greek name as different bytes.
Active Projects — The Centre's Current Work, Up FrontHomepage Counters — Four Figures the Centre Edits ItselfProjects — Active and Past Work, One Click ApartNews — Ninety Articles Carried Over From WordPress, in Both LanguagesSelf-Training Tools — Guides and Materials in One IndexContact — The Address the Old Site Kept in a Footer WidgetThe English Side — The Same Archive at Its Own URLsThe Dashboard — What the Centre Publishes, and What Still Needs a Translation CheckProjects — Both Languages on Every Row, Unchecked Translations FlaggedThe Editor — Greek and English Tabs, SEO Fields, Rich TextCounters — The Homepage Figures, Edited in Both LanguagesContact Details — One Form, Both Languages, Shown Across the Whole SiteMedia — Every Image Converted to WebP Under 200 KB
Our website has been designed according to the latest WCAG 2.2 Level AA accessibility guidelines (Web Content Accessibility Guidelines). This means the website is accessible to all users, including people with disabilities.
Accessibility Features:
Appropriate color contrast for easy reading
Readable fonts and text sizes
Full keyboard navigation support
Alternative text for all images
Clear structure and semantic HTML
Screen reader compatibility
Enhanced touch target sizes
Visible focus indicators
Accessibility is our commitment to all users.
EU Funding - NextGenerationEU
Funded by the European Union – NextGenerationEU
This business is funded under the "Subsidy for Entrepreneurial Initiatives of Young Freelance Professionals (NEE)" Action of the Public Employment Service (DYPA), with funding from the European Union – NextGenerationEU, through the Recovery and Resilience Facility "Greece 2.0".
The Greece 2.0 National Recovery and Resilience Plan supports businesses and professionals in their development and digital transformation, offering financial tools to enhance competitiveness, innovation, and employment.
Through this program, savage.design acquired the resources to develop a modern, accessible, and functional digital presence that improves customer communication and service delivery.
The AI Admin Panel is an intelligent interface that lets you manage every aspect of your website by simply talking to it. No CMS dashboards, no technical knowledge, no manual editing. Just tell the AI what you want and watch it happen in real time.
Split-Screen Environment
Chat with your AI assistant on the left while watching changes appear live on the right. Toggle between desktop, tablet, and mobile views to see exactly how your site looks on every device.
Three Operating Modes
Ask
Ask questions about your website, get explanations, and receive guidance — without making any changes.
Act
Tell the AI to make changes. Edit text, update styles, swap images, add sections — all reviewed in draft before going live.
Plan
Request a detailed implementation plan for complex updates. The AI breaks it into steps with scope estimates before starting.
What Your AI Can Do
Edit text, headings, and page content
Update colours, fonts, and layout
Swap and manage images
SEO optimisation and meta tags
Add new sections and pages
Multilingual content management
Version history with one-click rollback
Draft/live separation — review before publishing
Enterprise-Grade Security
All changes go to draft first — never directly to your live site
Full version history with instant rollback to any previous state
Multi-user authentication with role-based access
Comprehensive audit logging of every action
Choose Your Plan
Starter
€40
/month
Powered by Claude Haiku 4.5
Perfect for simple content updates, text edits, and image swaps.
Text and image editing
Basic content management
Version history
1 user account
Most Popular
Professional
€100
/month
Powered by Claude Sonnet 4.6
Design changes, new sections, SEO, and content creation.
Everything in Starter
Design and layout changes
SEO optimisation
Up to 3 user accounts
Enterprise
€250
/month
Powered by Claude Opus 4.6
Complex features, full page redesigns, custom JavaScript, and advanced development.
Everything in Professional
Multi-file feature development
Advanced custom code
Unlimited user accounts
Interested in the AI Admin Panel? Include it in your project quote.