Websites built properly from day one
Fast, secure, and built to be found by people and AI.
Built in from the start
What your website does for you
Four things are handled from day one so your site earns its keep: it gets found in search, speaks every customer’s language, launches without surprises, and stays easy to keep updated.
Website feature / SEO signal
Found in Google search
Metadata, speed, and accessibility are tuned together so search engines can read, rank, and trust every page, which means more of the right people find you.
Website feature / Languages
A real page in every language
Each language gets its own URL, metadata, and search listing, so customers find you in their own language instead of behind a translate button.
Website feature / Launch
A launch with no surprises
Your project moves through a clear path (plan, build, ship, and measure) so you always know where the site stands and what happens next.
Website feature / Content
Content you can keep updating
A draft turns into a polished, published page, so you can keep the site fresh and add new content without touching code.
From first conversation to launch
Four clear stages. You always know what is happening and what comes next.
Step 01
We understand what you need
We discuss your business, your customers, and what the website needs to achieve.
Step 02
We plan the right structure
Pages, content, languages, and search opportunities are mapped before design begins.
Step 03
I design and build the site
You see clear progress while the design, content, and code come together.
Step 04
We test, launch, and improve
Everything is checked before launch. Afterward, real data guides what comes next.
What I guarantee before launch
Every item here is handled and verified before handoff. Open one for the detail.
Performance
Quick on real devices, not only in a demo.
Lighthouse 100Verified at launch
Why: SEO and accessibility land at 100 and performance at 90 or above before handoff. You can rerun the audit yourself.
ImagesLazy-loaded
Why: Below-the-fold images wait until they are needed, which protects first paint and keeps the initial page lighter.
Image compressionAutomatic
Why: Images are compressed and converted to modern formats automatically, so pages stay light without manual editing.
Image sizingNo layout shift
Why: Explicit dimensions and responsive sizes reduce layout shift and avoid shipping images larger than the screen needs.
JavaScriptKept to a minimum
Why: Server components and static pages reduce browser work, so visitors can read and interact sooner.
Code splittingPer route
Why: Each page only loads the code it needs, which keeps nonessential features away from the first visit.
Search and AI visibility
Search engines and AI systems get a clean signal about what each page means.
MetadataGenerated, one source
Why: Titles, descriptions, canonical URLs, Open Graph data, and language alternates stay consistent across the site.
Semantic HTMLReadable by agents
Why: Clear landmarks, headings, lists, and links help users, crawlers, screen readers, and AI agents understand the page.
JSON-LD structured dataEligible for rich results
Why: Accurate schema for your business type (LocalBusiness, Product, Article) makes the site eligible for rich results, including review stars in the search snippet.
Sitemap and robots.txtGenerated
Why: Generated correctly and served on the production domain, listing the live URLs in every language with their hreflang relationships.
CanonicalsOn the live domain
Why: Every page points its canonical at the live domain (never a staging or preview URL) so the site never competes with itself as a duplicate.
Old URLs301s, single hop
Why: We inventory the URLs Google has actually indexed and 301-redirect each one to its new home in a single hop, so rankings, backlinks, and bookmarks keep working.
Dead pages410 Gone, not redirected
Why: Demo and junk pages get an explicit 410 Gone instead of a misleading redirect to the homepage, so crawlers stop wasting your crawl budget.
Missing pagesReal 404s
Why: Missing pages return a true 404 and thin or transactional pages stay out of the index, so crawl budget is not quietly wasted.
Previewsnoindex
Why: Non-production deployments are blocked from indexing, so a preview can never leak into search and dilute the live site.
Content modelTyped records
Why: Content lives in typed records, making it easier to extend pages with schema, FAQs, localized copy, and future AI workflows.
Languages
Each language is a real, indexable page, never a background translation.
Per-language URLsServer-rendered
Why: Every language is served from its own server-rendered URL (/en/…, /es/…), so each one is independently indexable instead of hidden behind a client-side widget.
hreflang and x-defaultGenerated
Why: Language alternates are generated from the same source that builds the routes, so Google serves the right language to the right searcher instead of seeing duplicates.
URL slugsTranslated per language
Why: Where it helps, the path itself is translated per language so each URL reads naturally and ranks on its own terms, with language menus, not flags.
Titles and descriptionsLocalized
Why: Titles and descriptions are localized per language, so the search snippet always matches the page the visitor actually lands on.
Security and monitoring
The parts that break quietly are the parts that get watched.
Error tracking (Sentry)Wired in
Why: Runtime errors are reported with the page, browser, and stack trace, so a broken form is something we find, not something a customer reports weeks later.
SSL and domainsAuto-renewed
Why: Certificates renew on their own, so the site never shows a "not secure" warning because a certificate quietly expired.
DependenciesMonitored
Why: Known vulnerabilities in the packages the site uses are flagged and patched, instead of ageing in place the way an unmaintained plugin does.
BackupsCovered
Why: The site is code in version control, so every version is recoverable and a bad deploy can be rolled back in minutes.
Analytics and consentIn sync
Why: Where required, analytics respects consent and the privacy disclosures stay in sync with what actually loads.
Accessibility
Part of the build, not a last-minute layer.
NavigationKeyboard tested
Why: Menus, links, and interactive controls can be reached without relying only on a mouse.
Alt textOn every image
Why: Images carry useful descriptions for assistive technology and give crawlers more context.
Contrast and spacingChecked
Why: Text, buttons, and page sections are easier to scan across screen sizes and lighting conditions.
Reduced motionRespected
Why: Animations respect users who prefer less motion, while still giving the page a polished feel.
After launch
What happens on launch day, and what you can do on your own afterwards.
Domain cutoverNo downtime
Why: DNS, SSL, and email are planned together so the domain switch has no downtime and no "not secure" window.
Search ConsoleSet up, day one
Why: Indexing coverage, Core Web Vitals, and query performance are tracked per language from day one.
Core Web VitalsWatched
Why: The loading and stability metrics Google measures are monitored, so regressions surface before they cost rankings.
Index after launchMonitored
Why: A fresh sitemap on the live domain, correct canonical URLs, and index monitoring after launch, so reporting and visibility never go dark.
Query performanceReported per language
Why: You can see which searches each language version ranks for, instead of guessing what is working.
Blog postsWritten in Notion
Why: You draft articles and pages in a familiar editor, and the content flows to the live site automatically. Publishing feels like writing a document.
Image libraryFree, on your account
Why: Your images live in a free media library tied to your own account, where they are stored, reusable across pages, and served from a fast delivery layer without bloating the codebase.
Content filesEditable, separate from code
Why: Copy, links, images, and page records are separated from layout code so updates are safer.
ComponentsReusable for new pages
Why: New pages can reuse the same design system instead of rebuilding every section from scratch.
Code structureAI-readable
Why: Clear file boundaries, typed content, and predictable patterns make future AI-assisted edits more reliable.
Lock-inNone, it is your code
Why: The website can keep evolving as normal code, with modern tooling and a clean deployment path.
Hosting0 kr/month at regular traffic
Why: With regular traffic the site runs on a free hosting tier, so there is no monthly hosting bill to pay after the build.
Optional content engine
Write in Notion, publish on your website
For blogs and editable pages, your Notion workspace becomes the content source. You write, add images, and the website updates, with compression and storage handled automatically.
Notion
Write posts and pages in a familiar editor.
Sync
Content and images flow to the site automatically.
Website
Pages publish fast, with images compressed and stored.
Have a site or an idea?
Send me your site or your idea. You get a fixed price before anything starts.