A comprehensive full-stack investment tracking platform for modern investors. Sync all your investments in one intelligent dashboard.
Clean, modern dashboard showing portfolio overview with real-time values and performance metrics
Advanced stock tracking with smart price caching, P&L calculations, and manual refresh controls
- Portfolio Management: Create and manage multiple investment portfolios
- Multi-Asset Support: Track stocks, ETFs, and real estate properties
- Real-time Price Updates: Automatic price updates for financial instruments
- Performance Analytics: Detailed charts and performance metrics
- Responsive Design: Modern UI that works on desktop and mobile
- Static React application hosted on S3
- CloudFront CDN for global distribution
- TypeScript for type safety
- Tailwind CSS for styling
- Recharts for data visualization
- React Query for state management
- Serverless functions via AWS Lambda
- API Gateway for HTTP endpoints
- DynamoDB for data storage
- Scheduled price updates via EventBridge
- RESTful API design
investment-tracker/
βββ README.md
βββ .env.example
βββ docker-compose.yml
βββ frontend/ # Next.js frontend
β βββ src/
β β βββ components/ # React components
β β β βββ dashboard/ # Dashboard components
β β β βββ charts/ # Chart components
β β β βββ tables/ # Table components
β β β βββ ui/ # UI components
β β βββ pages/ # Next.js pages
β β βββ hooks/ # Custom React hooks
β β βββ services/ # API services
β β βββ utils/ # Utility functions
β β βββ types/ # TypeScript types
β βββ public/ # Static assets
β βββ package.json
β βββ next.config.js
β βββ .env.example
βββ backend/ # AWS Lambda backend
β βββ functions/ # Lambda functions
β β βββ portfolio/ # Portfolio CRUD operations
β β βββ properties/ # Property management
β β βββ stocks/ # Stock management
β β βββ etfs/ # ETF management
β β βββ prices/ # Price update functions
β βββ shared/ # Shared utilities
β β βββ database/ # Database connections
β β βββ services/ # Business logic
β β βββ utils/ # Helper functions
β βββ serverless.yml # Serverless configuration
β βββ package.json
β βββ .env.example
βββ scripts/ # Setup and deployment scripts
βββ setup.sh
βββ deploy.sh
- Node.js 18+
- npm or yarn
- AWS CLI configured with appropriate permissions
- Serverless Framework
-
Clone and setup the project:
git clone <repository-url> cd investment-tracker ./scripts/setup.sh
-
Configure AWS credentials:
aws configure
-
Get API keys:
- Alpha Vantage: https://www.alphavantage.co/support/#api-key
- Finnhub: https://finnhub.io/register
- Update the
.envfiles with your API keys
-
Deploy to AWS:
./scripts/deploy.sh
-
For local development:
# Terminal 1 - Backend cd backend npm run offline # Terminal 2 - Frontend cd frontend npm run dev
- Production: Your CloudFront URL (displayed after deployment)
- Local Frontend: http://localhost:3000
- Local Backend API: http://localhost:3001
The application uses a fully serverless AWS architecture:
- S3: Static website hosting for the frontend
- CloudFront: CDN for global content delivery
- API Gateway: HTTP API endpoints
- Lambda: Serverless compute for business logic
- DynamoDB: NoSQL database for data storage
- EventBridge: Scheduled price updates
# Deploy everything at once
./scripts/deploy.shThis script will:
- Deploy backend infrastructure (Lambda, API Gateway, DynamoDB)
- Create S3 bucket and CloudFront distribution
- Build and deploy the frontend
- Configure all necessary permissions and policies
# Backend only
cd backend
serverless deploy
# Frontend only (after backend is deployed)
cd frontend
npm run build
npm run deployGET /portfolios- List all portfoliosGET /portfolios/{id}- Get portfolio detailsPOST /portfolios- Create new portfolioPUT /portfolios/{id}- Update portfolioDELETE /portfolios/{id}- Delete portfolio
GET /portfolios/{portfolioId}/stocks- List stocks in portfolioPOST /portfolios/{portfolioId}/stocks- Add stock to portfolioPUT /stocks/{id}- Update stockDELETE /stocks/{id}- Remove stock
GET /portfolios/{portfolioId}/etfs- List ETFs in portfolioPOST /portfolios/{portfolioId}/etfs- Add ETF to portfolioPUT /etfs/{id}- Update ETFDELETE /etfs/{id}- Remove ETF
GET /portfolios/{portfolioId}/properties- List properties in portfolioPOST /portfolios/{portfolioId}/properties- Add property to portfolioPUT /properties/{id}- Update propertyDELETE /properties/{id}- Remove property
GET /prices/{symbol}/history- Get price history for symbol
cd frontend
npm run dev # Start development server
npm run build # Build for production
npm run lint # Run ESLint
npm run type-check # TypeScript type checkingcd backend
npm run offline # Start serverless offline
npm run deploy # Deploy to AWS
npm run remove # Remove from AWS
npm test # Run tests
npm run lint # Run ESLint- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- Features - Complete feature list and capabilities
- Roadmap - Product roadmap and feature backlog
- Brand Guidelines - Brand identity and SaaS positioning
- Cost Optimization - AWS cost monitoring and optimization
- GitHub Issues - Feature backlog and bug tracking
- GitHub Projects - Development progress and milestones
This project is licensed under the MIT License.