BIKZ.DEV — CASE No. 08 SKY CALENDAR · 2025 FLUTTER + NODE.JS · ASTRONOMICAL EPHEMERIS FOR PROFESSIONAL ASTROLOGERS · MOSCOW +7 775 878 17 32 BIKZ.DEV — CASE No. 08 SKY CALENDAR · 2025
Case · No. 08
2025
Mobile · Flutter + Node.js
RUSSIA · INTERNATIONAL

SKY
CALENDAR.

A working ephemeris for professional astrologers in Russia. Daily and monthly views of planetary positions, aspects, lunar phases, sign ingressions and retrograde periods — computed to arc-minute precision on a Node.js back end and rendered as a quiet Flutter app. Shipped to RuStore and Google Play.

Astrological ephemeris Mobile · API 2025
Sky Calendar — daily ephemeris view for 14 January 2025, Russia UTC+3, showing Cancer→Leo Moon ingression, full Moon indicator, lunar day 16, sunrise/sunset, and a column of timestamped planetary aspects
Year
2025
Length
3 mo
Scale
10 bodies
Status
Shipped
01

About the project

// 3 min read

Astrology in Russia runs on professionals — practitioners who write daily forecasts for thousands of subscribers, schedule client consultations against transit windows, and treat the chart as a precision instrument rather than a horoscope. The brief came from that audience: not "what's my sign," but a working ephemeris on the phone — every aspect, every ingression, every lunar boundary at the resolution the work actually requires.

Monthly calendar grid for April 2025, with each day annotated with new/full Moon dots, waxing/waning markers, retrograde indicators (Mercury, Venus, Mars), and planetary ingression glyphs
01Month view — every day annotated with phases, retrogrades and ingressions

The hard part of an ephemeris is not the UI — it is getting the numbers right. We run the calculations on a Node.js service that wraps a Swiss-Ephemeris-grade engine: geocentric ecliptic longitude and latitude for the ten traditional bodies plus the lunar nodes, reduced from JPL DE-series data, with apparent positions corrected for precession, nutation, light-time and parallax. From those positions we derive everything the app shows — angular separations between bodies, aspect crossings located by Newton-Raphson against the changing aspect angle, sign ingressions found at the moment a body's longitude crosses a 30° boundary, lunar phases solved against the Sun–Moon elongation, retrograde periods detected as sign changes in apparent daily motion, and local sunrise / sunset / moonrise / moonset adjusted for the observer's latitude with atmospheric refraction and lunar parallax folded in.

Daily ephemeris view for 27 April 2025 — Pisces→Taurus Moon ingression at 10:17, New Moon indicator, Tuscan-meadow seasonal background, lunar days 29 / 01, timestamped planetary aspects with degrees and signs
02Daily view — Moon ingression, sun/moon ephemera, aspect ladder

The Flutter app is built around a single rhythm — open it once a day, see what the sky is doing, plan the work. The day view runs the moon-sign transition, the major lunar event (new / waxing / full / waning), lunar day count, sunrise and sunset for the observer's location, and a chronological ladder of aspects with the bodies, glyphs and exact times. The month view compresses the same data into a calendar grid where each day's notation reads at a glance: a green dot for a new moon, a magenta dot for a full moon, a small glyph for any ingression of an inner planet, and a subtle underline for retrograde windows on Mercury, Venus and Mars. Photography rotates with the season — winter lakes, spring meadows, summer plains — to keep the page looking like a calendar rather than a database read-out.

Distribution skews east. The studio's audience is Russia, so the primary store is RuStore; Google Play is the secondary channel. We tuned the Russian-language copy with a practitioner so the on-screen vocabulary lines up with how the work is actually described — Растущая Луна, Убывающая Луна, Ингрессия, Ретро-Меркурий — rather than the AI-translation defaults. The Node.js service runs behind a thin REST cache so repeated daily reads cost nothing, and a job tier pre-generates the next twelve months of events so the app feels instantaneous offline.

02

Stack

// what we shipped on
Flutter Dart Node.js TypeScript Express Swiss Ephemeris JPL DE-series PostgreSQL Redis RuStore Google Play
Next case · No. 09 · 2024

ALPHAMED.

← Previous: Almaty Region Travel