- Frontend: React with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS
- Supabase (PostgreSQL) for data persistence
- Row Level Security (RLS) enabled for user data isolation
- Real-time subscriptions for live updates
- REST API via Supabase client
- Finnhub.io API for real-time stock data
- WebSocket connections for real-time updates
- Supabase Auth with email and password
- JWT-based session management
- Row-level security policies enforcing user data access
- @supabase/supabase-js: Database client
- lucide-react: for icons
- recharts: Data visualization
- TypeScript: Type safety
git clone https://github.com/sayanoops/Portfolio-Tracker.gitor download the zip file from the repository.
cd portfolio-trackernpm installtouch .env- Go to https://finnhub.io/
- Create a new account
- Copy the API key
- Paste the API key in the .env file and store it in the
VITE_FINNHUB_API_KEYvariable.
- Go to https://app.supabase.io/
- Create a new project
- Copy the URL of the project
- Paste the URL in the .env file and store it in the
VITE_SUPABASE_URLvariable. - Copy the anon key
- Paste the anon key in the .env file and store it in the
VITE_SUPABASE_ANON_KEYvariable.
npm run dev- Modern web browser with JavaScript enabled and WebSocket support for real-time updates.
- Internet connection required for real-time stock updates.
- Stock price updates limited to 60-second intervals
- On top of all plan's limit, there is a 30 API calls/second limit. (If your limit is exceeded, you will receive a response with status code 429.)