Savana Studios, Stockholm
Software that trusts you
to find your own way.
Savana Studios is one person in Stockholm. Riverge and Meritan are web apps for people who write code. Stray, CapTap and Forsaken have nothing to do with those, or with each other. This page is all five.
The studio
Everything here was built by the same person.
Savana Studios is Lucas Lundmark, working out of Stockholm. The company behind it is SnowTrac AB. The first release was CapTap in 2020, which was mostly an excuse to find out how the App Store worked.
Riverge and Meritan run from one codebase in one Node process. The hostname decides which of the two you get, so the editing engine only had to be written once, and the accounts sit in separate tables. State is SQLite on a mounted volume. There's no database server and nothing queues.
That setup is old-fashioned, and it would need real work if a few thousand people turned up at once. It also costs close to nothing to run, which is the only reason there's a free tier.
- Projects
- Five
- Shipping since
- 2020
- People
- One
- Platforms
- Web, iOS, Android, PC
- Your code runs on
- Your machine
- Databases
- One SQLite file
01 / Web app
Riverge
A collaborative code editor that runs in the browser.
Several people type in the same file at the same time. It's built on Yjs, which is a CRDT, so nothing locks and there's nothing to pull. Each keystroke is a small binary update that merges itself. Cursors and selections get passed around too, but they never touch the disk.
JavaScript and TypeScript execute in a Web Worker. Python runs on Pyodide, which is real CPython compiled to WebAssembly and kept warm in the tab. The code never reaches the server. That began as a hosting-cost decision and only later turned out to be the better privacy answer too. If a room needs to watch something that can't run in a browser, the host shares their screen over LiveKit.
02 / Web app
Meritan
Coding interviews that record themselves, for hiring teams.
The candidate joins from one link and agrees to the recording before anything starts. Paste attempts get blocked and written to a timeline. So does losing window focus, and so does plugging in a second display. Afterwards you can scrub the session next to the scorecard.
Whether any of that is appropriate depends on the role, and plenty of teams will decide it isn't. The argument for it is that forty minutes on a call is a thin basis for hiring someone, and whoever wasn't in the room should be able to go back and check. Nothing is scored automatically. The flags sit on the timeline and you decide what they meant.
› waiting for candidate…
03 / iOS & Android
Stray
A compass app for iPhone and Android.
You drop a pin. Stray shows an arrow pointing at it and how far away it is. It won't give you a route. The screen stays on while you walk and the compass buzzes a little as you turn.
The idea is a city you don't know, where taking the wrong street costs you nothing. Everywhere you've walked to gets kept in a list on the phone. That's the whole app, and it's been the whole app through every version, which has made the feature requests awkward to answer.
609 m
Wandered136 places
Tap one to head back.
04 / iOS game
CapTap
A reaction game for iPhone.
Circles turn up on the screen and start running out of time. You tap them. That is the rule. CapTap came out in 2020 and was the first thing Savana Studios put in front of strangers.
There are three modes. Endless gives you three lives and posts your score to a Game Center board. Campaign is fifty levels which speed up as they go. Duel splits the screen down the middle so two people can play on one phone. Coins earned in any of them buy skins for the circles.
Nothing in it is technically interesting. It opens straight away and never asks for a connection. Ads appear roughly one loss in five, there's a rewarded one you can watch to carry on a run, and a purchase that switches them off for good.
05 / PC game
A survival game for PC, made in Unity and Blender.
Low-poly, cold, Nordic. You chop wood, get a roof up, hunt, and try to last the winter. Written in C# in Unity. The character, the houses, the weapons and most of the rocks were modelled in Blender.
The animals are the part worth explaining. Each one has health, stamina and hunger, and acts on all three. A hungry animal searches a wider area. A tired one slows down, which goes badly for it when something is chasing. A predator hurt badly enough gives up and runs. They wander but keep a home range, and get twitchier the further out they get. All of them can be ridden.
Notes on the stack
Run it on the client
Browsers can compile and execute code now, so Riverge does it there. Running it on a server that Savana Studios pays for means charging someone for it later.
One process, one port
Static files, the API and the websocket all come out of the same service. None of this has a scale problem yet. When something does, that's when it gets split up.
Prices on the page
Every price and limit is written down before you sign up for anything, and the demos on this page only do things the products really do. That is partly principle and partly not wanting to answer emails about it.
Ship the small version
Stray does one thing and has turned down the obvious additions. A few of those were good ideas, and turning them down was probably still right.
Send an
email.
Contract work, collaborations, or a question about one of the five. It goes to Lucas. Replies are usually within the week, sometimes slower than that.
hello@savanastudios.com