Deployed: https://main--portfolio-metrics.netlify.app/
A full-stack application for tracking cryptocurrency portfolios with real-time price updates and analytics.
- Real-time cryptocurrency price tracking
- Portfolio management with categories
- Analytics dashboard with performance metrics
- Snowflake integration for data warehousing
- Price alerts for significant market movements
- Frontend: React + Vite
- UI: Chakra UI
- Backend: Node.js + Express
- Database: Snowflake
- APIs: CoinGecko
- Analytics: Custom Snowflake views
- Clone the repository:
git clone <repository-url>
cd crypto-tracker
- Install dependencies:
npm install
python -m venv venv
source venv/bin/activate # On Windows: .\venv\Scripts\activate
pip install -r requirements.txt
- Set up environment variables:
Create a
.env
file in the root directory with:
# CoinGecko API Configuration
COINGECKO_API_KEY=your_api_key
COINGECKO_API_URL=https://api.coingecko.com/api/v3
# Server Configuration
PORT=3001
# Snowflake Configuration
SNOWFLAKE_USERNAME=your_username
SNOWFLAKE_PASSWORD=your_password
SNOWFLAKE_ACCOUNT=your_account
SNOWFLAKE_REGION=your_region
SNOWFLAKE_WAREHOUSE=your_warehouse
SNOWFLAKE_DATABASE=your_database
SNOWFLAKE_SCHEMA=your_schema
# Python Configuration
PYTHON_PATH=./venv/bin/python
PYTHONPATH=./venv/lib/python3.x/site-packages
- Initialize Snowflake:
npm run setup-snowflake
npm run setup-analytics
- Start the development server:
npm run dev
npm run server
npm run dev
: Start Vite development servernpm run build
: Build for productionnpm run server
: Start Express servernpm run setup-python
: Set up Python environmentnpm run setup-snowflake
: Initialize Snowflake tablesnpm run setup-analytics
: Set up Snowflake analytics viewsnpm run test-snowflake
: Test Snowflake connectionnpm run test-sync
: Test data synchronization
crypto-tracker/
├── src/ # Frontend React code
│ ├── components/ # React components
│ ├── context/ # React context providers
│ ├── services/ # API services
│ └── utils/ # Utility functions
├── scripts/ # Python scripts for Snowflake
│ ├── setup_snowflake.py # Database setup
│ ├── setup_analytics.py # Analytics views
│ ├── test_snowflake.py # Connection testing
│ └── snowflake_sync.py # Data sync logic
├── server.js # Express backend server
└── vite.config.js # Vite configuration
The application uses several Snowflake tables and views:
HOLDINGS
: Stores portfolio holdingsPRICES
: Stores historical price dataPORTFOLIO_PERFORMANCE
: Analytics view for category performancePRICE_ALERTS
: View for price movement alertsDAILY_PRICE_ANALYSIS
: View for daily price metrics
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- CoinGecko API for cryptocurrency data
- Snowflake for data warehousing
- Chakra UI for the user interface