Open to freelance work and employment

Ideas that happen.Code that gets finished.

I'm Martin, and I like to code. Web services and mobile apps turn into hobby projects that I finish rather than leave as ideas — preferably in a new tech stack each time, since that is how I learn the most. Here's what's running right now.

Projects

Munka FolkhögskolaLive

The folk high school's new website, built during my placement and live since 1 July 2026. It replaced an older WordPress site with a system of its own, and the weight of it sits in the editing side: the teachers change the content on every page themselves, straight in the browser, with nobody having to go into the code. The entire codebase is mine, and I am proud of work that is in real use. I am no longer involved — running and updating it is the school's own responsibility.

Next.js, React and TypeScript, with Prisma against the database and hosting on Cloudflare. This is the build School CMS grew out of.

School CMSDemo

The Munka build generalised: a publishing system for folk high schools and smaller education providers, tied to no single school. Courses, staff, news and lunch menus are edited straight in the browser, each role in its own portal — editorial, kitchen, facilities, administration. The site behind the link is a working demo with invented content and open test logins for every role. "Demo Folk High School" is not a real school.

Next.js on Cloudflare's edge through OpenNext: Workers run the code, D1 is the database by way of Drizzle, R2 holds the files and Better Auth handles the logins. No server of my own involved — it is the same site in every region.

CV Forge

A tool for creating, managing and exporting CVs. You enter your experience, education and skills once into a content library, then assemble several different CVs from the same material — its own layout, its own colours, its own section order, a print-ready A4 PDF. Already have a CV as a PDF? It is parsed automatically and fills the library for you.

Next.js and TypeScript over a self-hosted Postgres through Prisma, with Better Auth for sign-in and Cloudflare R2 for the files. The PDF import runs through Google Gemini. All of it in Docker on my own hardware, built by GitHub Actions and exposed behind a Cloudflare Tunnel.

Wordlune

A word game where the clue is what you know, not how many words you know. Every hidden word belongs to a category — African capitals, groceries, car brands — and the category is shown. The letters narrow the field; general knowledge closes it. Three modes: practice against the subjects you pick, a weekly competition, and real-time duels where two players chase the same word. In Swedish, English and French.

One Expo/React Native codebase that becomes iOS, Android and web at the same time. Underneath sits Supabase with Postgres, realtime and row-level security on every table — who may see what is settled in the database, not in the client. Built in Docker and deployed by GitHub Actions to my own server behind a Cloudflare Tunnel.

appfinningar.seYou are here

The site you are reading right now. A portfolio and project page in two languages, built as an exercise in shipping as little as possible: no JavaScript reaches the visitor, the copy for both languages lives in one source, and the language switcher takes you to the same page rather than throwing you back to the front.

Astro and TypeScript, built statically to plain HTML. Images become webp in three sizes at build time, and the hreflang tags are generated from the same site map the language switcher reads — they cannot drift apart. Deployed to Cloudflare Pages by GitHub Actions on every push to main.

About me

Got an idea that ought to exist for real? Get in touch — I answer.