A custom website for €3,000, fixed
Fifteen pages, one fixed price. The layout is adapted to your brand instead of locked to one template, and it comes with a contact form, Calendly booking, Google Maps and a second language. Lighthouse 90+ is in the contract.
- Price
- €3,000, fixed before work starts
- Pages
- Up to 15, then €150 each to a ceiling of 20
- Delivered
- 20 working days from the day content arrives
- Languages
- Two included, €750 for each further one
- You keep
- Source code, repository, design, domain
Included in the fixed price
- + UP TO 15 PAGES
- + FLEXIBLE DESIGN ON MY TEMPLATES
- + FULL DESIGN: BILLED SEPARATELY
- + CONTACT FORM
- + CALENDLY INTEGRATION
- + GOOGLE MAPS
- + NO COOKIES, NO BANNER
- EMBEDS LOAD ON CLICK
- + UP TO 2 LANGUAGES
- IN-HOUSE: FR·EN·ES·SR·RO
- OTHERS: DISCOVERY CALL
- + EXTRA LANGUAGE: €750
- + EXTRA PAGES: €150 EACH, MAX 20
- + BLOG: MONTHLY ADD-ON
- + DELIVERED IN 20 WORKING DAYS*
- + BRING YOUR OWN CONTENT
Fourteen sections to build from
Your pages are assembled from these blocks — the eleven base sections plus three integration blocks this tier unlocks. Mix them freely across your fifteen pages. Open any block to see what it does and what you need to supply.
Hero headerHeadline, sub-line and one primary call-to-action, above the fold.
The first screen a visitor sees. One headline, one supporting sentence, one button. No carousel of competing messages. Renders server-side as plain HTML and text, so it paints immediately and counts toward your Largest Contentful Paint rather than against it.
- You supply
- Headline, one sentence, one background image
- Optional
- Second, lower-emphasis button
Feature gridTwo to six cards for services, benefits or product features.
A responsive grid that reflows from one column on phones to two or three on desktop. Each card takes an icon or small image, a short title and two or three lines of text. The usual home for "what we do" or "why us" without turning it into a wall of prose.
- You supply
- Two to six titles with a short paragraph each
- Icons
- Chosen from an open-licence set, or your own SVGs
Carousel / sliderSwipeable row of images or cards, with keyboard and touch support.
A horizontally scrolling strip for portfolios, products or photos. Built on native CSS scroll-snap, not a slider library. That costs no JavaScript. It works with a trackpad, a touch swipe and the arrow keys, and degrades to a plain scrollable row anywhere it is not supported. Respects reduced-motion settings and never auto-advances. Auto-rotating carousels measurably hurt both usability and conversion.
- You supply
- Four or more images, ideally the same aspect ratio
- Behaviour
- Manual advance only, snap-to-item
Image + text splitHalf image, half copy — alternating down the page.
The workhorse storytelling block. One image beside one block of text, alternating sides on each repeat so a long page keeps a rhythm. Stacks to image-above-text on phones. Use it three or four times to walk through a process, a product or a story.
- You supply
- One image and one to two paragraphs per repeat
- Repeatable
- Yes — counts as one block however many times it appears
Image galleryGrid of images with an optional full-size lightbox.
For work that has to be seen: interiors, food, events, products, before-and-afters. Images are converted to modern formats and sized per breakpoint at build time, so a twenty-image gallery does not cost you the Lighthouse score. Optional click-to-enlarge.
- You supply
- Six or more images at the highest resolution you have
- Delivered as
- AVIF/WebP with fallbacks, lazy-loaded below the fold
TestimonialsQuotes with attribution, marked up so search engines can read them.
Client quotes with a name, role and optional photo. Emitted with Review structured data, which means the quotes are machine-readable. That matters now that answer engines quote sources directly rather than only linking them.
- You supply
- Two or more quotes with a real name and role
- Structured data
- schema.org Review
FAQ accordionExpandable question list with FAQPage structured data.
Questions collapse to a scannable list and expand on click. It uses the browser's native disclosure element: no JavaScript, keyboard-accessible by default. The answers stay in the HTML source whether or not they are expanded. Emitted with FAQPage structured data, which is the single highest-leverage block for getting quoted by AI assistants and for eligibility for rich results.
- You supply
- Four or more question-and-answer pairs
- Structured data
- schema.org FAQPage
Stats bandA row of three or four numbers with captions.
A narrow band of figures — years in business, projects delivered, response time, whatever is genuinely yours. Works as a break between two heavier sections and gives a page some evidence without a paragraph of self-description.
- You supply
- Three or four numbers with a short caption each
- Note
- Numbers you can substantiate — invented ones age badly
Logo stripClient or partner logos, static row or slow marquee.
Social proof in one line. Logos are normalised to a single optical weight and height so a mixed set does not look ragged. Available as a static row or a slow continuous marquee, which pauses on hover and stops entirely under reduced-motion settings.
- You supply
- Logos as SVG or high-resolution PNG
- Reminder
- You need permission to display a client logo
Call-to-action bandFull-width closing prompt with one button.
A high-contrast strip that closes the page or breaks up a long scroll, carrying a single instruction and a single button. Points at whatever counts as conversion for you: a phone number, a booking link, an email, or the contact form.
- You supply
- One line of copy and the destination
- Repeatable
- Yes, though twice on a page is usually the limit
Contact formValidated form with spam protection and email delivery.
Name, email and message, with server-side validation and bot protection, delivered to your inbox. No database and no stored personal data, which keeps the GDPR position simple. Errors are announced to screen readers rather than only shown in red.
- You supply
- Destination inbox
- Included
- Spam protection, server-side validation, success and error states
- Both tiers
- TIER-01 and TIER-02
Calendly bookingInline scheduling widget, loaded only on interaction.
Your Calendly calendar embedded in the page so visitors book without leaving it. Loaded on click rather than on page load. Third-party embeds are heavy, and deferring this one keeps the guaranteed Lighthouse score intact. Falls back to a plain link if the embed is blocked.
- You supply
- Calendly account and event link
- Tier
- TIER-02 and above
Google MapsLocation map with address and directions link.
An embedded map for businesses people physically visit, alongside the written address and a directions link. Like the booking widget it loads on interaction, showing a static preview until then. Paired with LocalBusiness structured data so the address is machine-readable, which is what local search and AI assistants actually read.
- You supply
- Full address and opening hours
- Structured data
- schema.org LocalBusiness
- Tier
- TIER-02 and above
Language switcherTwo-language site with correct hreflang and per-language URLs.
Every page exists at its own URL per language, with hreflang tags and localised slugs, so each language can rank independently instead of competing with itself. In-house languages are French, English, Spanish, Serbian and Romanian; anything else is a discovery call. Translation of your copy is not included unless agreed separately.
- You supply
- Copy in both languages, or a translation budget
- Included
- hreflang, localised URLs, language switcher
- Tier
- TIER-02 and above
Why this, and not a page-builder site
A page-builder site is configuration, not code. The design you paid for lives inside someone else’s software, in their storage format, and it works only while that software stays licensed and installed. This is built the other way round: plain source files in a repository that becomes yours.
A builder site contains almost no code of your own
When a site is assembled in Elementor, Divi or Wix, close to nothing is written for you. What exists is a stack of settings (spacing, colours, widget choices) recorded in the builder’s own format. That is why two sites made with the same tool are structurally identical underneath, and why “custom” in that world means differently configured rather than differently built.
Where your layout actually lives
Elementor stores each page as a JSON blob in a hidden WordPress field called _elementor_data, and leaves the normal post content almost empty. Switch the plugin off and the page renders blank. Your text is still in the database, but nothing left knows how to draw it. Divi takes the other route and writes shortcodes into the content, so removing it leaves visitors reading [et_pb_section] where your homepage used to be. Neither is a bug. It is how builders work.
Wix and Squarespace: there is no code to take
Wix offers no code export, because there is no conventional source to export. Pages are assembled in the browser at runtime by Wix’s own engine. You can take your data out: products, contacts, orders. You cannot take the site. Leaving means rebuilding from zero, and the platform is designed so that stays true.
The licence never ends
Elementor Pro, Divi and most booking, form and gallery plugins are annual subscriptions. To be precise about what an expired licence costs, because it is often overstated: the site keeps rendering and nothing goes dark. What you lose is updates, security patches, support, and the ability to edit Pro widgets at all. So you pay every year to keep the right to change your own website. Stop paying, and it slowly becomes an unpatched liability you cannot edit your way out of.
The bill has a tail
Builder licence, plugin licences, and hosting able to run PHP and a database, all renewed yearly, indefinitely, for as long as the site exists. A static site has no licence to renew and no database to host. Its running cost tends toward the price of the domain.
“Template” here means a starting point in code, not a rented cage
Tier-01 is called a template site, so this distinction has to be exact. The template is a layout written in source files that transfer to you: edit it, fork it, hand it to another developer, or throw it away. A builder template is a configuration inside software you rent. Same word, opposite ownership.
The page weight is a symptom, not the disease
A builder must ship its own runtime to every visitor, because something has to interpret all that configuration in the browser. Measured on live business sites: a typical Elementor build serves over 300 KB of HTML and more than 40 scripts before a single word of content. What is built here runs about 83 KB and 7 scripts. That gap is architectural. It is also why a 90+ Lighthouse score can be written into a contract here and cannot be there.
A builder site needs a consent banner. This one does not.
The banner is not a legal formality bolted on at the end; it follows from the architecture. A page-builder site loads fonts, analytics, maps and marketing scripts from third parties the moment the page opens. That happens before the visitor has agreed to anything, so consent has to be collected. That means another plugin, often another subscription, and a modal sitting over your content on the first view. What is built here loads nothing third-party on view and sets no cookies, so there is nothing to consent to. Where an embed is genuinely needed — a booking calendar, a map — it shows a static preview and loads only on click. That click is the consent.
What actually transfers to you
On final payment: the Git repository, the full source, the design, the content and the domain. Plain Astro, HTML and CSS that any competent developer can pick up without buying a licence or learning a proprietary editor. No licence keys, no vendor account in my name, no format only one tool can read.
| Elementor / Divi | Wix / Squarespace | Here | |
|---|---|---|---|
| Source code | Configuration in a database | None to export | Yours, in Git |
| If you stop paying | No updates, cannot edit | Subscription is not optional | Nothing changes |
| Changing developer | They need the same stack and licences | Rebuild from zero | Clone the repository |
| Yearly licences | Builder plus every plugin | Platform subscription | None |
| Cookie consent banner | Usually required | Usually required | Not needed |
| Typical weight | 300+ KB, 40+ scripts | Heavy JS runtime | ~83 KB, 7 scripts |
Ask your current or prospective provider to hand over the repository. If there is no repository, there is no code. What you bought was access, not a website.
Not included at this tier
- Copywriting — you bring the words, in both languages if bilingual
- Translation of your copy, unless agreed separately
- Photography, illustration or logo design
- A full bespoke design from scratch — that is billed separately, see the design add-on
- E-commerce, payments or user accounts
- Self-publishing — the blog is a monthly add-on, bundled with hosting
- More than twenty pages, or languages beyond the two included, without the per-page and per-language add-ons
Before you book
How much does a custom website cost?
€3,000, fixed and agreed before work begins, covering up to fifteen pages in two languages. The figure does not move unless the scope changes in writing. Beyond that, extra pages are €150 each to a ceiling of twenty (a twenty-page site is €3,750), and a third language is €750. VAT is not charged: Kogaionon Limited is Hong Kong registered and invoices without VAT.
How is this different from the €1,500 one-pager?
Up to fifteen pages instead of five, flexible layout rather than a fixed template, and three integration blocks the lower tier does not include: Calendly booking, Google Maps and a second language, plus the option of a blog. TIER-01 caps at ten pages, so past that this is the only route; below it, you come here for the integrations and the design latitude rather than the page count.
What does "flexible design on your templates" mean?
The layout, section order, spacing, type and colour are adapted to your brand, drawing on my template system rather than starting from a blank page. It is not a fully bespoke design; that is a separate design engagement, billed separately. But you are not locked into one fixed arrangement either.
Which languages can you deliver in-house?
French, English, Spanish, Serbian and Romanian, at no extra cost for up to two of them. Each further language is €750. Any language outside those five is possible but goes through a discovery call first. Note that this covers the build and the hreflang setup, not translating your copy.
How long does it take?
Twenty working days from the moment all content is in hand, in both languages if the site is bilingual. As with TIER-01, the clock starts on content arriving rather than on signature.
Can I publish blog posts myself?
Yes, with the blog add-on. It is €90 a month, which also covers hosting and two hours of revisions. It adds an editor and a publishing pipeline to the static site, so you write and hit publish without touching code. It is monthly rather than one-off because the build and deploy run on my infrastructure, and for that reason it only exists alongside a hosting plan.
Do I own the site when it is done?
Yes. Full intellectual property transfer on final payment, including source code and repository. No proprietary builder, no lock-in, and you can move to another developer at any time.