Over dit project
Je pakt je telefoon, die wijs je ergens heen en het scherm vertelt je of je in de richting van de maan staat te wijzen. Meer is het niet. Geen account, geen trackingcookies, geen reden om terug te komen behalve dat het leuk is.
Waarom
Ik stond in juli 2022 in het Park van Luna toen er iets bijzonders met de maan aan de hand was: vol, of rood, in elk geval opvallend genoeg om ernaar te blijven kijken. En toen dacht ik: waar is die maan eigenlijk precies? Ik ging googelen en ik vond niets wat die vraag beantwoordde, keek uit gewoonte of het domein nog vrij was en dat was zo.
Daarna heb ik er lang niets mee gedaan. Het domein stond er, het idee bleef liggen en pas veel later heb ik er iets functioneels achter gezet. Vier jaar tussen “hé, leuk” en “het werkt”.
Toen het eenmaal werkte bleek de vraag “waar is de maan” niet genoeg. Je kunt prima in de goede richting wijzen terwijl de maan onder de horizon staat of achter een wolkendek zit. De eerste versie beantwoordde de vraag letterlijk, maar niet alles.
Hoe het werkt
Laravel 13 met Blade, Tailwind en Alpine voor het lichte werk. Geen Vue, geen SPA: voor één scherm met een draaiend plaatje is dat alleen maar ballast.
De kompaskant is browserwerk. iOS wil expliciet toestemming voordat een pagina de oriëntatie van het toestel mag uitlezen, dus daar zit een eigen toestemmingsstap; andere toestellen luisteren gewoon mee. De maanafbeelding wordt niet alleen gedraaid naar de richting waarin de maan staat, maar ook gekanteld volgens de hoek waaronder je hem werkelijk ziet; dezelfde maan hangt in Nederland anders dan bij de evenaar.
De locatie komt uit het IP-adres, met een Nederlands terugvaladres voor lokale of onbekende adressen en de maanpositie wordt per IP een uur bewaard. Zonder dat zou elke pageview een externe aanvraag zijn voor een antwoord dat in dat uur nauwelijks verandert.
Kernpunten waar ik trots op ben
- Kompas via DeviceOrientation, ook voor iOS. Apple wil expliciet toestemming voordat een pagina de oriëntatie van het toestel mag uitlezen; andere toestellen luisteren gewoon mee.
- Eigen berekeningen op basis van hoe je je telefoon vasthoudt. Rechtop of plat maakt uit voor wat je aan het aanwijzen bent en de maanafbeelding wordt daar ook op gekanteld in plaats van alleen gedraaid.
- IP-geolocatie met caching per IP. De maanpositie verandert binnen een uur nauwelijks, dus elke pageview een externe aanvraag doen is zonde.
Wat er nog niet in zit
Testen is een probleem van het seizoen: in de zomer staat de maan ‘s nachts vaak onder de horizon, dus er valt weinig live te controleren. Bij de steekproeven waarin ik hem wél kon zien, klopte het.
Wat het opleverde
Veel maaninformatie en veel kompasberekeningen, waarvan ik het meeste weer snel ga vergeten. Vooral leuk om live mee te spelen en de website is lekker snel.
Gebruikte technologieën
In beeld
1 opnameOok zo'n project nodig?
Bel of app me, dan bespreken we vrijblijvend jouw situatie.