← All work

2025 · Full-stack Developer

Aruna

A mobile-first stock market analysis platform for Indonesian retail investors — seasonal context, institutional money flow, and local-first state.

Stack
Next.js · Supabase · React · PWA
Category
Product · Fintech
Visit project

What shipped

  • Built seasonal pattern charts, Relative Rotation Graphs, and money flow scoring.
  • Shipped a local-first watchlist and portfolio synchronized through Supabase RLS.
  • Wrapped proxied market-data endpoints in an XOR-obfuscated response envelope.
  • Ran heavy analytics on server-side cron jobs to keep client bundles lean.
Aruna

Aruna is a personal product built for a specific pain point I kept noticing: Indonesian retail investors chart stocks without seasonal context — what a market does around election cycles, when sectors rotate, or which way institutional money is actually moving. There is plenty of raw market data available; almost nothing connects it to a decision.

I built the whole thing myself: product definition, design, backend analytics, frontend, and deployment. It runs as a progressive web app.

The problem

Retail investors in the Indonesian market are pattern-hungry but data-short. Seasonal behavior is buried in years of history, institutional money flow is locked inside broker transaction data, and any analysis tool that adds context usually costs money or hides its data behind a subscription.

My role

Founder, product owner, and sole engineer. Ambiguous problem, real users, no specification waiting for me — exactly the kind of work I want to be known for.

Technical work

  • Seasonal analysis. Historical return charts overlaid with political and election-cycle context, plus monthly and quarterly return heatmaps.
  • Institutional money flow. A custom scoring engine that pulls broker transaction data to evaluate accumulation versus distribution, exposed as a per-stock score.
  • MSCI progress tracker. Calculations estimating IDX stocks' free-float market-cap progress toward MSCI Standard and Small Cap inclusion thresholds.
  • Local-first data. Watchlist and portfolio state lives in the browser first, then merges and syncs to Supabase (with row-level security) once a user authenticates.
  • Interactive visuals. Relative Rotation Graphs, canvas-based market bubble maps, and TradingView-style candlestick charts.

Decisions

  • Local-first sync. Stock-market watchlists change rapidly and are read constantly. Keeping state local-first made the app feel instant while auth happened in the background.
  • Obfuscated API envelope. The app proxies Yahoo Finance and Stockbit endpoints server-side. I wrapped responses in an XOR-obfuscated JSON envelope so the proxy isn't trivially scraped.
  • Server-side cron for analytics. Heavy scoring and screening run on scheduled jobs, not in the browser. The client stays a thin, fast interface and hosting stays cheap.

Constraints

A solo build on a small budget. Everything with recurring cost — analytics compute, data fetching — had to run somewhere cheap, and the frontend had to feel mobile-fast despite loading data-dense charts.

Outcome

Aruna went from an ambiguous idea ("investors need seasonal context") to a deployed PWA with real features and real data flows. It is the strongest demonstration I have of owning a product end to end.