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:
- π CONTRIBUTING.md
- π€ CODE_OF_CONDUCT.md
New to open source? Start here:
- Issues labeled
good first issue - Issues labeled
beginner friendly - Issues labeled
gssoc26
π View all open issues
- 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.