SV
← Back to code
— Fullstack Development

Yourora

Norrsken Sverige

An aurora app that reads live space-weather data and real sightings nearby to answer one question: is tonight worth going out for? I joined the founders' working Lovable prototype as co-creator and developer and took it to a public launch on Google Play and the App Store in September 2026: the release pipeline, app-wide performance, much of the UI and design system, and testing on real phones.

React TypeScript Vite Tailwind CSS shadcn/ui Capacitor Supabase PostgreSQL Deno Edge Functions Firebase Cloud Messaging RevenueCat Leaflet Recharts i18next Vitest GitHub Actions Xcode Cloud
~ when Jun 2026 → Ongoing
~ status Active
~ team collaborative
~ kind Personal Project

Yourora is an aurora and space-weather app built for the Swedish northern-lights community. It fuses solar wind, ground magnetometers, GNSS scintillation and cloud cover with real sightings from people nearby to answer a single question: is tonight worth going out for? The governing principle is that it never promises certainty: the app owns judgement, not guarantees.

It launched publicly on 23 September 2026 on Google Play and the App Store, as a membership app with paying users.

Yourora was co-founded by Calle, who started the Swedish aurora community Norrsken Sverige in 2011, and Christian, who joined him early. They built the first working version in Lovable. I came in during June 2026 as co-creator and developer. The foundation was in place; my job was to make it shippable, and the product has grown and changed a lot since I joined.

From prototype to two stores

One codebase, three targets: the web plus native iOS and Android shells via Capacitor. Store builds trigger on a separate production branch, never main, because Lovable pushes to main all day and every one of those pushes would otherwise land on someone's phone. The only route onto production is a deliberate promotion PR. version in package.json is the single source of truth for both stores: Android packs the semver into Play's increasing integer, iOS writes it to MARKETING_VERSION. iOS builds on Xcode Cloud, Android on GitHub Actions.

Beyond the pipeline, I work on what store review and paying members need: safety features like reporting and blocking, onboarding, and subscriptions through RevenueCat.

Data frugality as a product constraint

The app is used off-grid, in the dark, on metered or poor reception, and the Lovable build wasn't written with that in mind. I've reworked how much of the app fetches its data. On the Sun tab, for example, nearly every imagery panel used to preload all of its frames up front; now imagery doesn't load until it's in view, timelapses fetch only a window around the current frame, and the edge function caps how many frames any caller gets.

UI, UX and the design system

A lot of my work is on how the app feels in the hand, across much of its UI. Underneath sit the design-system primitives every surface is built from: colour tokens named for what they mean, one Button that every clickable control goes through, and files and keys named after what the screen says rather than what the code once called it.

Testing on real phones

The unglamorous half of the job. Every release goes through iPhones and Android phones before it's promoted, and a large share of the fixes come from there, not from code review: a keyboard covering the field being typed in, or a player that loaded forever when the Sun was quiet.

Working in a codebase an AI agent also writes to

Lovable pushes straight to main with no PR, and main can't be branch-protected. So my work goes through topic branches and squash-merged PRs, with CI that informs rather than blocks: typecheck, lint and custom guards. The repo carries a shared Claude Code layer (a working agreement and committed skills) so the team's sessions follow the same rules mine do.

Also built along the way: push notifications via Firebase Cloud Messaging from Supabase edge functions, with a shared nightly budget so several notifiers can't pile onto the same person, and an admin dashboard for moderation, support and subscriptions.

Private repo. The link goes to the app.

CoreInfraDataMLAgentsFrontend
About this chart
Each axis is a functional pillar; the orange area shows where my effort went on this build - the further an axis reaches, the more of the work concentrated there.