manalasdungeon.lv

Case study

Manalas Dungeon

A trilingual website with passwordless administration

A personal site, travel blog and Vidzeme coast guide in one — built from scratch with PHP and MySQL, without a CMS.

3 languages: Latvian, English, Finnish
0 passwords in the admin
PHP 8.4 and MySQL, no framework
FIDO2 passkey sign-in

What’s on the site

Passwordless administration

The admin pages open only on a registered device — with a fingerprint, face, device PIN or a security key (WebAuthn / FIDO2). The server side is written in plain PHP without external libraries: CBOR decoding, COSE key conversion and ES256 / RS256 signature verification.

  • WebAuthn
  • FIDO2
  • OpenSSL

Trilingual architecture

Every page exists in Latvian, English and Finnish. The language comes from the URL (?lang= or clean /en/, /fi/ paths), with hreflang links and a sitemap for search engines.

  • hreflang
  • .htaccess
  • sitemap

News & travel blog

Two public pages read from one database table — a category decides where an entry appears. A custom admin handles entries, image uploads and a shortcode for placing images in the text.

  • PDO
  • CRUD
  • lightbox

Guestbook

Messages are published after moderation. Spam is stopped by a hidden honeypot field and a per-IP time limit, and the admin receives an email notification.

  • moderation
  • honeypot
  • rate limit

Vitrupe beach gallery

A travel site with a rotating hero image, a masonry gallery and an image viewer you can browse with arrows, the keyboard or a swipe.

  • Bootstrap 5
  • JSON-LD
  • responsive

Vidzeme travel guide

Links to places to eat, sights, nature trails and accommodation, organised by municipality and town, using official tourism sources.

  • structured data
  • i18n

New-post badge

The home page button shows the date of the latest news post until the visitor has read it. The state is kept in the browser (localStorage), without cookies.

  • localStorage
  • UX

Security

Security was designed in from the start, following the OWASP Top 10 guidance.

Tech stack

Quality & testing

Automated tests

38 unit tests for the passkey cryptography and browser tests with a virtual FIDO2 authenticator (Playwright).

Responsive design

Works on phones, tablets and desktops, including a fix for the iPad background-zoom bug.

Performance

Cache busting by file timestamp, gzip compression and optimised images.

SEO

hreflang, Open Graph, structured data (JSON-LD) and a sitemap.

See it live

The site is publicly available — every page in three languages.