
In development
ArcaLuna is a tarot and astrology app that puts the morning on one Today screen: a daily card, the main transit to your birth chart and the Moon phase. The astronomy runs in one Kotlin Multiplatform core for iPhone and Android, while each platform gets a native interface: SwiftUI on iOS, Jetpack Compose on Android. The core's accuracy is checked against Swiss Ephemeris on 50 reference charts. Birth data stays on the device, and there are no accounts. Five languages.
/// Key features
- Today screen: a daily card, the main transit to your birth chart and the Moon phase
- One Kotlin Multiplatform core computes planets, houses, aspects and spreads for iPhone and Android
- Accuracy checked against Swiss Ephemeris: 50 reference charts, planets within 0.0051°
- A native interface on each platform: SwiftUI on iPhone and iPad, Jetpack Compose on Android
- Birth chart with Whole Sign and Placidus houses; without a birth time the chart is built without houses and Ascendant, and the app explains why
- Three original 78-card decks and the classic 1909 Waite–Smith deck for free
- Birth data stays on the device: no accounts and no server copies
- Five languages: app and website strings come from one source
/// Screenshots
About the project
ArcaLuna brings tarot and astrology into one morning. The Today screen shows three things: a daily card, the main transit to your birth chart and the Moon phase. In a minute you see what matters for you today, and the Today screen is free.
This is the studio's first cross-platform project: the iPhone, iPad and Android apps are built in parallel, together with the arcaluna.pro website. The app is still in development and will come to the App Store and Google Play.
One core, native interfaces
All astronomy and logic live in a shared Kotlin Multiplatform module: ephemeris, houses, aspects, synastry, spreads, the content model and the journal. iOS consumes the core as an XCFramework, Android as a regular module.
The interface is not shared. iPhone and iPad use SwiftUI; Android uses Jetpack Compose with Material 3 and adaptive layouts for foldables. A shared Compose Multiplatform interface was considered and rejected: by estimate it stretched development by 30–50%.
Accuracy you can check
The core is built on astronomy-engine, moved into shared Kotlin Multiplatform code. Houses, aspects and the lunar node are written separately. The reference is Swiss Ephemeris: 50 birth charts, including the equator, latitudes inside the polar circle, the southern hemisphere, dates before 1970 and daylight-saving transitions. The same fixtures run on the JVM, Android and the iOS simulator:
- planets — deviation no more than 0.0051° (worst case: Neptune);
- Ascendant — 0.0001°, Placidus cusps — 0.0001°;
- retrograde flags — 500 of 500 match, Moon phases within 0.7 minutes.
Above 66° latitude Placidus is undefined. The app then switches to Whole Sign and says so. Without a birth time, neither the Ascendant nor the houses are built.
Privacy
There are no accounts. Birth data, spreads and the journal are stored on the device, with no server copies. Settings include a JSON export of all data and a full delete. Friends' data for compatibility stays on the device too and is never shared.