A React + Vite + TypeScript project to browse GitHub repositories for a given user.
Displays repository details, top programming languages, and allows filtering by languages. Includes a theme toggle and multiple UI language support (i18next).
- Search GitHub repositories by username
- Filter repositories by programming languages
- Dark/light mode toggle
- Multilingual UI support (
en,de,es,fr) - Repository cards with top language breakdown
- Netlify Function to securely query GitHub GraphQL API
- Node.js >= 18
- npm or yarn
- GitHub personal access token for GraphQL API (stored in
.envasGITHUB_TOKEN)
Clone the repository:
git clone <repo-url>
cd github-repo-browserInstall dependencies:
npm installCreate a .env file in the root directory:
GITHUB_TOKEN=your_personal_github_tokenStart the development server:
npm run devor if deployed via netfliy
netlify devThe app will be available at http://localhost:5173, https://localhost:8888 (or the port Vite/Netlify shows).
Storybook is set up for component development:
npm run storybookOpen the Storybook interface in your browser to view all components and interact with them in isolation, usually on https://localhost:6006
The project uses Vitest + Testing Library for unit and integration tests:
npm run testThis will run all tests in the src/components/__tests__ folder and output results to the terminal.
src/
components/ # React components
stories/ # Storybook stories
types.ts # TypeScript type definitions
apollo/ # Apollo client
App.tsx # Main app
netlify/functions/ # Netlify graphql
index.css # Tailwind input & config
locales/ # Translations
- Improve filter dropdown hover behavior so it doesn’t interfere with repository cards below
- Redesign the intro section to be more visually appealing
- Add more detailed information on repository cards (stars, forks, last updated, etc.)
- Support pagination for users with more than 100 repositories
- Add animations and better mobile responsiveness