A full-stack stock tracking platform built with React, Express, and Supabase, featuring real-time aggregate data, intelligent caching, and a modern TypeScript codebase.
- React 19.2
- Vite
- TypeScript
- TailwindCSS
- Recharts (data visualization)
- TanStack Query (data fetching)
- Zustand (state management)
- Express 5
- TypeScript
- Supabase (database)
- Massive.com API (stock data provider)
- Node.js
Make sure you have:
- Node.js β₯ 16
- npm or yarn
- A Supabase project (local or cloud)
- A Massive.com API key (free keys available at https://massive.com)
git clone <repository-url>
cd portfolionpm install
cd paperhands-backend && npm install
cd ../paperhands-frontend && npm install
cd ..Copy the sample file:
cp paperhands-backend/.sampleEnv paperhands-backend/.envFill in the required fields:
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_anon_key
MASSIVE_API_KEY=your_massive_api_key
From the project root:
npm run devThis uses concurrently to launch both servers:
- Backend: http://localhost:3000
- Frontend: http://localhost:5173
| Command | Description |
|---|---|
| npm run dev | Runs frontend + backend together |
| npm run start | Starts backend only |
| npm run client | Starts frontend only |
| Command | Description |
|---|---|
| npm run dev | Starts Express with hot reload |
| npm run start | Production server |
| npm run test | Run backend tests |
| Command | Description |
|---|---|
| npm run dev | Vite dev server |
| npm run build | Production build |
| npm run lint | ESLint checks |
| npm run preview | Preview production build |
- Real-time stock aggregate fetching
- 30-second intelligent caching layer
- Supabase persistence & API integration
- Modern React UI powered by TailwindCSS
- Clean, strongly-typed TypeScript across both stack layers
| Method | Endpoint | Description |
|---|---|---|
| GET | / | Root endpoint |
| GET | /stonks | Fetch aggregated stock data (cached) |
| GET | /about | About page info |
| GET | /contact | Contact info |
portfolio/
βββ paperhands-backend/
β βββ src/
β β βββ routes/
β β βββ db/
β β βββ server.ts
β βββ .sampleEnv
β
βββ paperhands-frontend/
β βββ src/
β β βββ components/
β β βββ hooks/
β β βββ stores/
β
βββ package.json
This project is licensed under the ISC License.