Skip to content
Back to projects
Custom Products
In production

Praxis

From dreams to tasks, with science and AI

Praxis — From dreams to tasks, with science and AI

Context

Praxis connects dreams to tasks across five levels. Visual maps, progress tracking and methods such as WOOP and if-then plans help organize concrete next steps.

The challenge

Presenting the same tree as a 2D map, list and 3D constellation requires consistent hierarchy and progress. Collaborative editing must respect permissions and prevent invalid node relationships.

The architecture

React Flow renders the map and on-demand Three.js presents the constellation. Supabase provides authentication, PostgreSQL with RLS and Realtime synchronization. The product includes an optional AI coach, Stripe subscriptions and PWA installation.

Architecture flow

  1. One tree

    • Five levels, from dream to task
    • PostgreSQL with RLS
  2. Synchronisation

    • Supabase Realtime
    • One channel per map
  3. Three views

    • 2D map — React Flow
    • List
    • 3D constellation — Three.js

Engineering decisions

Three views, one tree

Map, list and constellation share data and progress calculations. Automatic layout organizes the hierarchy while manual positions preserve user adjustments.

Real-time collaboration

Shared maps use per-map Realtime channels and PostgreSQL access policies. Parent changes are validated to prevent cycles and connections between incompatible levels.

On-demand 3D constellation

Dreams are distributed across a Fibonacci sphere and their descendants within oriented cones. Shaders display progress through the fill of each body.

Full stack

React
TypeScript
Vite
Tailwind CSS
React Flow
Three.js
Supabase
PostgreSQL
Stripe
Full articleFrom dream to graph: what I learned modeling goals, progress and collaboration with React Flow and Three.js6 min readRead the article