All work

Lunara

Usually the matrix is computed on one site, the natal chart on another, and Tarot lives in an app. In Lunara it all lives in one workspace and starts from one birth date. The whole service starts with a single Docker command.

Client
Our own product
Type
Web service
Our part
Product, design, front end and back end
Year
2026
Lunara

The idea

Lunara is not a daily horoscope but a workspace. You enter your birth date once, and from then on the matrix, the natal chart and Tarot speak about you in one language. There is no sign-up: the service creates a local workspace by itself, and all data can be wiped with one button.

Exact calculations

The destiny matrix follows the Ladini method, version 3: the reference octagram of 22 arcana, ancestral points, the relationship and money lines, chakras and an age contour. The natal chart is built on Swiss Ephemeris with Placidus houses, aspects, transits and synastry. Tarot has all 78 Rider–Waite–Smith cards and eight spreads.

Design

A dark lunar interface in a lilac palette. The home screen opens with the Moon and one line: “Your story. In the language of the stars.” The diagrams are interactive: tap any point on the matrix or the natal wheel to read its meaning and links. Tarot cards turn over one at a time, at your own pace.

AI that does not make things up

Readings and the dialogue go through one AI adapter: DeepSeek in production or an isolated local model for development. Memory is stored as vectors in PostgreSQL. If the model is unavailable, the service reports an honest error instead of showing placeholder text.

How Lunara works

A brass astrolabe: the date dial turns three tiers through a gear train — the 12 houses of the natal chart, the matrix octagram of 22 arcana and the deck of 78 Tarot cards. The index tabs on the right read what sits under them.

The Moon: the index of the natal-chart housesThree tiers: 12 houses, 22 arcana, 78 cards, turned by a shaft from the date dialGears, shaft and index post are the transmissionLunara is a local service for self-reflection, brought up by one docker compose up. Here it is an astrolabe. A date dial on the base turns three rings through a shaft: the outer one is split into the 12 houses of the natal chart (Swiss Ephemeris, tropical zodiac, Placidus, so the houses are unequal), the middle one is the destiny matrix by the Ladini 22 method, version 3, with 22 arcana, and the inner one is a deck of 78 Rider–Waite–Smith Tarot cards. Fixed indexes read the house, the arcanum and the card under them. The birth date gives the matrix and the natal chart; the shared shaft is an image, not a calculation: Tarot is laid out separately (8 spreads, manual entry and a journal). The AI dialogue reads all of it through the memory of context, and if the AI is unavailable the service returns a clear error instead of made-up text.

Under the hood

  • Front end on React, TypeScript and Vite; back end on Java and Spring Boot; PostgreSQL 16 with pgvector.
  • A separate Python service turns memory into vectors with the multilingual-e5-small model.
  • The whole service starts with one docker compose command: database, back end, memory service and web interface.
  • Reports are produced as a web page and as a real PDF.
  • Playwright browser tests at 390, 768, 1024 and 1440 px with reference screenshots and accessibility checks.

React · TypeScript · Spring Boot · PostgreSQL · pgvector · Swiss Ephemeris · Docker

Shall we talk about your project?

Discuss your project