Skip to content
Selino

Work

Easy to claim. Here it is, built.

Two things that are live right now. Not mockups, not sketches. One you can click around in — the other you are standing in.

BilPorten

Used-car marketplace · 2026

Our own platform: a complete car portal built from scratch — search, listings, dealer accounts, inventory import, a public API and a support system. In two languages.

The brief

The Danish car market has two dominant portals, and dealers pay dearly to be on them. The question was whether the right tooling lets you build something that genuinely competes — not a copy, but a portal that does the same job without tracking and with pricing you can actually read.

What we built

Everything built from scratch: faceted search across hundreds of thousands of combinations, licence-plate lookup against the national vehicle registry, automatic inventory import from dealers' own systems, a public API, price history on every listing, saved searches by email — and the whole site in both Danish and English with its own URLs per language.

780+
pages in Google
2
languages, each with its own URLs
0
third-party tracking

Built with

Next.jsPostgreSQLEgen VPSREST API
Visit BilPorten

Where it got hard

01

Plate lookup without storing what must not be stored

A seller types their plate and the car's data comes back from the national vehicle registry. But the law forbids us from storing owner and tax data from it. The fix: the lookup never keeps the whole response — only the technical fields about the car itself are written on, the rest is discarded in the same breath. Plate and VIN are never shown publicly.

02

Dealers' inventory systems do not speak the same language

Every dealer runs their own system and the field names look nothing alike. On top of that the files carry fields that must not go public: the dealer's own internal note about the car often sits right next to the description. The import maps fields onto ours and deliberately leaves the internal ones alone — they are never read in, so they cannot accidentally end up on a listing.

03

Search that does not buckle when filters stack up

Make, model, year, mileage, price, fuel, geography, body type — combined, that is hundreds of thousands of possible searches, and every one has to answer in under a second. That requires a database built for it from the start, with indexes laid out around how people actually search, not around how the columns sit in the table.

selino.dk

Our own site · 2026

The site you are standing on. Built to the same rules we sell — so you can test them instead of taking our word for it.

The brief

A digital workshop claiming to build fast sites without tracking ought to have a fast site without tracking. Otherwise it is just something you say.

What we built

Two languages with their own URLs — Danish at the root, English under /en with English words in the address. A price calculator that gives a real number and emails it. Fonts on our own server. No cookies at all, and therefore no cookie banner.

0
cookies, hence no banner
0
calls to third-party servers
2
languages, each with its own URLs

Built with

Next.jsEgen VPSEgne skrifttyperIngen sporing

Where it got hard

01

The price calculator must not be cheatable

The calculator runs in the browser, so it feels instant. But a browser can be tampered with. So the price is computed again on the server, from the raw choices, before the estimate goes out. A tampered field does not produce a 0 kr quote — it produces the same number as everyone else's.

02

Two languages without Google seeing duplicates

Every page exists in Danish and English at different addresses. Without telling Google they belong together, it would treat them as two competing pages and hide one. So each page points at its own translation, and the sitemap does the same for every address. The search engine shows the right version to the right searcher.

03

No tracking means no shortcuts

It is easy to write in your privacy policy that you do not track. It is harder to build. Fonts are normally fetched from Google, and then you have sent your visitors' IP addresses off regardless of what the page says. Here they sit on our own server. It is also faster.

Shall yours be next?

We take on few projects at a time — that's why they get finished. Tell us what you need and we'll say honestly whether it's a fit.