A web app to discover trending GitHub repositories. Find repositories created within a specific time period that have more than X stars, filtered by programming language.
🌐 Live Demo: https://ohnicerepo.pages.dev/
- Frontend: React + TypeScript + Vite
- Backend: Fastify + TypeScript
- Monorepo: Turborepo
- Styling: Custom CSS with CSS variables
- State Management: React Hooks
- Node.js (v18 or higher)
- npm
- GitHub Personal Access Token
- Upstash Redis account (for rate limiting)
- Clone the repository:
git clone https://github.com/behnamazimi/ohnicerepo.git
cd ohnicerepo- Install all dependencies:
npm install-
Set up the API environment variables:
Create a
.dev.varsfile in theapps/apidirectory for local development:cd apps/api cp .dev.vars.example .dev.varsThen edit
.dev.varsand fill in your actual values:GITHUB_TOKENS=first_token,second_token UPSTASH_REDIS_REST_URL=https://your-redis-instance.upstash.io UPSTASH_REDIS_REST_TOKEN=your_redis_token_here ALLOWED_ORIGINS=http://localhost:5173,http://localhost:3000Note: The
.dev.varsfile is gitignored and only used for local development. For production deployment, secrets should be set usingwrangler secret put(see apps/api/README.md for details). -
Start the development servers:
Start all apps (frontend and backend):
npm run devOr start them individually:
Start the frontend:
cd apps/web
npm run devStart the backend (in a separate terminal):
cd apps/api
npm run devThis will start:
- Frontend on
http://localhost:5173 - Backend API on
http://localhost:8787(Cloudflare Worker via Wrangler)
From the root directory:
npm run dev- Start all apps in development modenpm run build- Build all appsnpm run lint- Lint all packagesnpm run lint:check- Check linting without auto-fixnpm run clean- Clean all build artifacts and node_modules
- Select a date range (e.g., "7 days ago")
- Set minimum stars (default: 100)
- Optionally filter by programming language
- Browse the results and use pagination to see more
MIT