Brochure site and custom CMS
FIDAI Coaching
A brochure site for a sports coaching studio in Montenegro, with a custom CMS the client uses to rebuild every page themselves — no WordPress, no calling the developer.
Visit site ↗
Problem
A brochure site that cannot be edited is out of date within six months — prices, services and copy change, and the owner depends on the developer for every small edit. WordPress solves that, but brings its own cost: plugins, updates, vulnerabilities and a weight a coaching site never asked for. The brief was to give the client full control of the content while keeping the site light and free of third-party code to maintain.
Solution
The site and the CMS were written from scratch, with no framework. A page is not a template but a sequence of typed sections — hero, services, questions, timeline, gallery — which the administrator arranges, toggles and orders as they choose. All content lives in the database and is edited from the admin panel; the site reads from there and shows it at once. No edit needs a developer.
What was built
- Custom CMS, no framework and no WordPress
- Pages built from sections — 18 types, each with its own layout
- Editing, toggling and ordering of sections from the admin panel
- Dedicated service pages, with galleries and equipment
- Client testimonials, added and edited from the panel
- City pages for local search
- Contact form with honeypot protection and delivery by email
- Privacy policy and terms, to Montenegro requirements
- Sitemap and FAQ that emit their own schema.org data
- Multilingual base and clean URLs with no .php suffix
A brochure site is easiest to build so that it looks good on delivery day and is out of date six months later because no one can change it. Here the brief was the opposite: give the client full control of the content while keeping the site light.
The obvious answer is WordPress. I did not use it, and that is a decision, not a shortcut. Along with control, WordPress brings plugins that update, vulnerabilities that get patched and a weight a coaching site never asked for. Instead, both the site and the CMS were written from scratch.
The core is in how a page is built. It is not a template with fixed slots but a sequence of sections, and each section has its own type — hero, services, questions, timeline, gallery, call to action — and its own fields. The administrator arranges them in the order they choose, toggles them, and writes into them. The site reads that sequence from the database and assembles the page. Eighteen section types cover everything the site needed, without a single generic “drop anything in here” field that cannot be maintained later.
What does not show in a screenshot matters most: input is not trusted blindly. The rich text an administrator types passes through allow-list sanitising — only text tags are permitted, and everything else, including any attempt to inject code, is discarded on save. The client cannot break the site’s layout or its security, even by accident, while editing their own copy.
For the Montenegrin market the site carries a privacy policy and terms. One decision there is worth singling out because it is more often wrong than right: the site uses no tracking cookies and no third-party analytics, so it has no consent banner. A banner asking permission on a site that tracks nothing is both redundant and dishonest; here there is none, because there is nothing to cover.
Result
The client rebuilds the whole site themselves, from the panel, with no code and no call to the developer. The site has no WordPress and none of its plugins, so it carries neither the weight nor the vulnerabilities that come with them. The content is owned by the client, not locked inside someone's code.
From the application