Problem
Problem
Portfolio tooling often splits research, execution, and journaling across disjoint surfaces; users lose context when switching contexts between analytics and narrative decisions.
Constraints
Constraints
Strong typing and predictable API contracts across React and Spring Boot; MySQL with transactional guarantees; observability-friendly module seams so analytics could evolve without rewriting core flows.
Approach
Approach
Layered the stack into clear boundaries: REST surfaces documented with OpenAPI, JPA-backed domain services, and a UI organized around workspaces (research lab, dashboards, journaling) with shared client state via Zustand and Axios interceptors for consistent error handling.
Outcome
Outcome
A cohesive trading-intelligence UI backed by modular services—analytics modules (risk, stress, VaR), agent-facing panels, and terminal-style commands—without sacrificing ACID semantics where capital-adjacent data moves.
What I’d redo
What I’d redo
Earlier investment in automated contract tests across the API boundary and snapshot-driven UI states for the heaviest dashboards—catch regressions before they reach demo-day nerves.