Nov 2024•Backend & Frontend•2 min read
Stock Insights Dashboard
Containerized Go + Vue stock platform with Gemini portfolio screenshot extraction, fundamentals refresh, and watchlist workflows.
Go APIGeminiCockroachDB
GoVueCockroachDBFastAPIGeminiFintech
Outcomes
- Docker Compose stack: Go API, Vue SPA, CockroachDB, FastAPI fundamentals service
- Gemini-powered portfolio screenshot extraction
- External market data integrations for quotes, fundamentals, and bond yield inputs
Problem
I wanted a realistic financial data product that combined backend services, a typed frontend, scheduled ingestion, and AI-assisted data entry. The challenge was to make stock and portfolio workflows feel operational instead of just displaying a static table.
Approach
- Built a Go REST API with migrations and background ingestion for stock records, quotes, recommendations, and watchlists.
- Used CockroachDB locally as the SQL store, managed by Docker Compose for repeatable setup.
- Added a Vue 3 + Vite + TypeScript frontend with Pinia state and Tailwind styling.
- Integrated Gemini to extract portfolio positions from brokerage screenshots.
- Added scheduled fundamentals and quote refresh flows using Financial Modeling Prep, Alpha Vantage, and FRED-style yield inputs.
- Split fundamentals work into a small FastAPI service so Python data tooling could live beside the Go API without turning the backend into a script pile.
Results
- End-to-end containerized stack that can be brought up locally with one
docker compose up --build. - Portfolio upload flow turns an image into structured positions for downstream portfolio views.
- Recommendation endpoints combine cached quotes, fundamentals, and valuation inputs instead of relying on one raw provider response.