A fullstack TypeScript app for exploring GitHub repositories: search any GitHub user's public repos, and sign in to save your favorites to your account.
Explore
- Search public repositories by GitHub username
- Each repo shows name, description, star count, language, and a link
- Loading states and error handling (e.g. username not found)
Favorites (requires login)
- Save repos to your account with one click
- View and manage your saved favorites
- Remove favorites anytime
- Frontend: React + TypeScript (Vite)
- Backend: Node.js + Express + TypeScript
- Database: PostgreSQL
- Auth: JWT + bcrypt
- API: GitHub REST API
POST /auth/register— create an accountPOST /auth/login— sign in, receive a JWTGET /user/favorites— list your saved repos (JWT protected)POST /user/favorites— save a repo (JWT protected)DELETE /user/favorites/:id— remove a saved repo (JWT protected)
Use a Vite-supported Node.js release: 20.19+, 22.12+, or a newer maintained major version.
From the project root, install the frontend dependencies:
npm --prefix client installInstall the backend dependencies:
npm --prefix server installCopy client/.env.example to client/.env and server/.env.example to
server/.env if you want to change the local defaults.
Start the backend in one terminal:
npm --prefix server run devStart the frontend in a second terminal:
npm --prefix client run devOpen http://localhost:5173 for the frontend. Check the backend at
http://localhost:4000/health.