Two powerful tools, one unified platform to manage your GitHub repositories and starred repositories efficiently.
🌐 Live Demo • 🐛 Report Bug • ✨ Request Feature • 🤝 Contribute
- 📖 Overview
- 🌐 Live Demo
- 📸 Screenshots
- 🏗️ System Architecture
- 🚀 Features
- ⚙️ Tech Stack
- 🧪 Local Setup
- 🛠️ Installation
▶️ Running the Application- 🤝 Contributing
- 🧯 Troubleshooting
- 📄 License
- 🙌 Acknowledgements
RepoReaper & StarSweeper is a full-stack GitHub productivity platform that helps developers clean up and organize their GitHub accounts — all in one place, with a simple and secure OAuth login.
| Tool | What it does |
|---|---|
| ⚔️ RepoReaper | Bulk delete, archive, and privatize your repositories |
| ✨ StarSweeper | Bulk unstar repositories to declutter your starred list |
Why use it?
- ✅ No manual repo-by-repo clicking — do it all at once
- 🔐 Secure GitHub OAuth — no passwords stored
- 🚫 Fully stateless — zero permanent storage of your data
- ⚡ Fast, modern UI built with React + Tailwind
Try it live — no installation needed:
🔗 https://reporeaper-frontend.onrender.com
Note: The app is hosted on Render's free tier. It may take ~30 seconds to wake up on the first visit.
RepoReaper Dashboard — Bulk manage your repos

StarSweeper Mode — Clean up your starred list

The diagram below shows how the different parts of RepoReaper talk to each other — from login to bulk actions:
sequenceDiagram
actor User
participant Frontend as ⚛️ React Frontend<br/>(Vite + Tailwind)
participant Backend as 🟢 Node.js/Express Backend
participant OAuth as 🔐 GitHub OAuth
participant API as 🐙 GitHub REST API
Note over User, API: 🔐 Authentication Flow
User->>Frontend: Click "Login with GitHub"
Frontend->>Backend: GET /auth/github
Backend->>OAuth: Redirect to GitHub login
OAuth-->>User: GitHub authorization page
User->>OAuth: Grants permission to RepoReaper
OAuth-->>Backend: Returns auth code
Backend->>OAuth: Exchange code for access token
OAuth-->>Backend: Access token
Backend-->>Frontend: Session established ✅
Note over User, API: ⚡ Bulk Action Flow
User->>Frontend: Select repos & choose action
Frontend->>Backend: POST /api/repos (delete/archive/unstar)
Backend->>API: GitHub REST API call per repo
API-->>Backend: Success / failure response
Backend-->>Frontend: Aggregated results
Frontend-->>User: UI updated 🎉
| Layer | Role |
|---|---|
| React Frontend | UI where users select repos and trigger bulk actions |
| Express Backend | Handles OAuth flow and proxies GitHub API calls |
| GitHub OAuth | Authenticates the user and issues a scoped access token |
| GitHub REST API | Executes the actual repo/star operations |
Stateless by design: No user data, tokens, or repo information is ever stored in a database. Everything lives in the session and is discarded after use.
- 🗑️ Bulk delete repositories in one click
- 📦 Bulk archive repositories
- 🔒 Bulk convert repositories to private
- ⭐ Bulk unstar repositories to declutter your GitHub profile
- 🎨 Dynamic yellow/orange theme to distinguish modes
- 🔐 Secure GitHub OAuth authentication
- 🔍 Search, sorting, and filtering across all your repos
- ⚡ Fast bulk operations with real-time feedback
- 💎 Modern, responsive UI
- 🚫 Stateless backend — your data never touches a database
| Layer | Technologies |
|---|---|
| Frontend | React, Vite, Tailwind CSS, Zustand, Framer Motion |
| Backend | Node.js, Express.js |
| Authentication | GitHub OAuth 2.0 |
| Deployment | Render |
Make sure you have the following installed before starting:
- Node.js v14 or higher
- npm or yarn
- A GitHub OAuth App with credentials
- Go to GitHub → Settings → Developer Settings → OAuth Apps
- Click "New OAuth App"
- Fill in the details:
- Homepage URL:
http://localhost:5173 - Authorization callback URL:
http://localhost:3000/auth/github/callback
- Homepage URL:
- Copy the Client ID and Client Secret
PORT=3000
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GITHUB_REDIRECT_URI=http://localhost:3000/auth/github/callback
SESSION_SECRET=your_session_secret
API_URL=http://localhost:3000
FRONTEND_URL=http://localhost:5173
NODE_ENV=developmentVITE_FRONTEND_URL=http://localhost:5173
VITE_API_URL=http://localhost:3000# 1. Clone the repository
git clone https://github.com/kanak227/RepoReaper.git
cd RepoReaper
# 2. Install frontend dependencies
cd client
npm install
# 3. Install backend dependencies
cd ../server
npm installcd server
npm run devcd client
npm run devOpen your browser at: http://localhost:5173
Run both the frontend and backend simultaneously in separate terminals.
Contributions are welcome from developers of all experience levels! 🎉
| Type | Description |
|---|---|
| 🐛 Bug Reports | Found something broken? Open an issue |
| ✨ New Features | Have an idea? We'd love to hear it |
| 🎨 UI/UX | Make the interface better |
| 📚 Documentation | Improve guides, README, or comments |
| 🧪 Tests | Add or improve test coverage |
# 1. Fork the repo on GitHub, then clone your fork
git clone https://github.com/<your-username>/RepoReaper.git
# 2. Create a feature branch
git checkout -b feat/your-feature-name
# 3. Make your changes and commit
git commit -m "feat: describe your change"
# 4. Push and open a Pull Request
git push origin feat/your-feature-namePlease read before contributing:
New to open source? Start here:
- Issues labeled
good first issue - Issues labeled
beginner friendly - Issues labeled
gssoc26
- Ensure the callback URL in your GitHub OAuth App exactly matches
GITHUB_REDIRECT_URIinserver/.env - Verify all
.envvariables are set correctly (no extra spaces or quotes) - Restart both the frontend and backend after updating environment variables
- Make sure both the frontend (
port 5173) and backend (port 3000) are running simultaneously - Check that
VITE_API_URLinclient/.envpoints to your running backend
- The live demo is on Render's free tier — first load may take ~30 seconds to spin up
This project is licensed under the MIT License — feel free to use, modify, and distribute.
If you find this project useful, please consider starring the repository — it helps others discover it!
Built with ❤️ using React, Node.js, Express.js, and the GitHub API.