A comprehensive investment tracking dashboard that aggregates data from Coinbase to provide a unified view of net worth and investment performance.
- React Frontend - Modern dashboard displaying investment data, charts, and net worth calculations
- Go Backend API - Aggregates data from Coinbase API and serves to frontend
- Kubernetes Deployment - Helm chart for easy deployment in homelab cluster
0xNetworth/
├── frontend/ # React application (TypeScript + Vite + Tailwind CSS)
├── backend/ # Go API server (Gin framework)
├── helm/ # Helm chart for Kubernetes deployment
├── scripts/ # Version extraction and utility scripts
└── .github/workflows/ # CI/CD pipeline
- Project initialization and structure
- Backend API foundation
- Frontend dashboard foundation
- Coinbase API integration
- Account balance tracking
- Portfolio data visualization
- Net worth calculation and display
- Investment performance charts
- Platform-specific summaries
- Helm chart for Kubernetes
- CI/CD pipeline
- Homelab integration via Flux CD (Planned)
- Agentic workflow for market analysis
- Historical performance tracking
- Transaction history
- Tax reporting
- Multi-currency support
- Alert system
- Go 1.21+ - Install Go
- Node.js 18+ - Install Node.js
- Docker - For containerization
- Kubernetes - For deployment (optional for local development)
- Navigate to the backend directory:
cd backend- Install dependencies:
go mod download- Run the server:
go run cmd/server/main.goThe backend will start on http://localhost:8080.
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm run devThe frontend will start on http://localhost:5173 (or another port if 5173 is taken).
Coinbase integration uses the Coinbase Advanced Trade API. The integration is fully implemented and ready to use.
Setup:
-
Create an API key in your Coinbase account:
- Go to https://www.coinbase.com/settings/api
- Create a new API key with appropriate permissions (read-only recommended)
- Save the API key and secret (you'll only see the secret once)
-
Set environment variables:
export COINBASE_API_KEY_NAME=your_api_key_name export COINBASE_API_PRIVATE_KEY=your_private_key
Note: Coinbase Advanced Trade API uses an API Key Name (ID) and a Private Key. You can also use the legacy variable names
COINBASE_API_KEYandCOINBASE_API_SECRETfor backward compatibility. -
Or create a
.envfile in the backend directory:COINBASE_API_KEY_NAME=your_api_key_name COINBASE_API_PRIVATE_KEY=your_private_key
Features:
- Fetches all Coinbase accounts (trading, savings, etc.)
- Retrieves portfolio holdings
- Gets current cryptocurrency prices
- Calculates investment values
- Automatic sync via API endpoints
The project includes a Helm chart for Kubernetes deployment and a CI/CD pipeline that automatically builds and publishes Docker images and Helm charts to GitHub Container Registry (GHCR).
The CI/CD pipeline (.github/workflows/ci-cd.yml) runs on:
- Push to
mainbranch (development builds) - Git tags matching
v*pattern (release builds) - Manual trigger via
workflow_dispatch
All builds use semantic versioning (semver):
-
Release builds (git tags like
v1.0.0):- Images tagged:
1.0.0,latest - Helm chart version:
1.0.0 - Chart appVersion:
1.0.0
- Images tagged:
-
Development builds (push to main):
- Images tagged:
0.0.0-<short-commit>,main - Helm chart version:
0.0.0-<short-commit>(pre-release semver format) - Chart appVersion:
0.0.0-<short-commit>
- Images tagged:
Docker Images (published to GHCR):
ghcr.io/0xjmart/0xnetworth/backend:<version>ghcr.io/0xjmart/0xnetworth/frontend:<version>
Helm Chart (published as OCI artifact):
oci://ghcr.io/0xjmart/0xnetworth/0xnetworth:<version>
Pull and use the published Docker images:
# Pull a specific version
docker pull ghcr.io/0xjmart/0xnetworth/backend:1.0.0
docker pull ghcr.io/0xjmart/0xnetworth/frontend:1.0.0
# Or use latest
docker pull ghcr.io/0xjmart/0xnetworth/backend:latestInstall the Helm chart from the OCI registry:
# Add the OCI registry (if needed)
helm registry login ghcr.io
# Install from OCI registry
helm install 0xnetworth oci://ghcr.io/0xjmart/0xnetworth/0xnetworth --version 1.0.0
# Or install latest
helm install 0xnetworth oci://ghcr.io/0xjmart/0xnetworth/0xnetworthAutomatic builds:
- Push to
mainbranch triggers a development build - Create and push a git tag (e.g.,
v1.0.0) to trigger a release build
Manual builds:
- Go to Actions tab in GitHub
- Select "CI/CD - Build and Publish" workflow
- Click "Run workflow"
# Add the OCI registry (if needed)
helm registry login ghcr.io
# Install from OCI registry
helm install 0xnetworth oci://ghcr.io/0xjmart/0xnetworth/0xnetworth --version 1.0.0- Never commit API keys to the repository
- Use Kubernetes secrets for sensitive data
- All API keys should be stored as environment variables or secrets
- HTTPS only in production
MIT