Skip to content

kanak227/RepoReaper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

67 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

RepoReaper & StarSweeper βš”οΈβœ¨

License: MIT Node.js GitHub OAuth Live Demo PRs Welcome

Two powerful tools, one unified platform to manage your GitHub repositories and starred repositories efficiently.

🌐 Live Demo β€’ πŸ› Report Bug β€’ ✨ Request Feature β€’ 🀝 Contribute


πŸ“š Table of Contents


πŸ“– Overview

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

🌐 Live Demo

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.


πŸ“Έ Screenshots

RepoReaper Dashboard β€” Bulk manage your repos RepoReaper Dashboard

StarSweeper Mode β€” Clean up your starred list StarSweeper Mode


πŸ—οΈ System Architecture

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 πŸŽ‰
Loading

How it works

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.


πŸš€ Features

βš”οΈ RepoReaper Mode

  • πŸ—‘οΈ Bulk delete repositories in one click
  • πŸ“¦ Bulk archive repositories
  • πŸ”’ Bulk convert repositories to private

✨ StarSweeper Mode

  • ⭐ Bulk unstar repositories to declutter your GitHub profile
  • 🎨 Dynamic yellow/orange theme to distinguish modes

πŸ›‘οΈ Platform Features

  • πŸ” 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

βš™οΈ Tech Stack

Layer Technologies
Frontend React, Vite, Tailwind CSS, Zustand, Framer Motion
Backend Node.js, Express.js
Authentication GitHub OAuth 2.0
Deployment Render

πŸ§ͺ Local Setup

πŸ“¦ Prerequisites

Make sure you have the following installed before starting:

πŸ”‘ Creating a GitHub OAuth App

  1. Go to GitHub β†’ Settings β†’ Developer Settings β†’ OAuth Apps
  2. Click "New OAuth App"
  3. Fill in the details:
    • Homepage URL: http://localhost:5173
    • Authorization callback URL: http://localhost:3000/auth/github/callback
  4. Copy the Client ID and Client Secret

πŸ” Environment Variables

Server (server/.env)

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=development

Client (client/.env)

VITE_FRONTEND_URL=http://localhost:5173
VITE_API_URL=http://localhost:3000

πŸ› οΈ Installation

# 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 install

▢️ Running the Application

Start the Backend

cd server
npm run dev

Start the Frontend

cd client
npm run dev

Open your browser at: http://localhost:5173

Run both the frontend and backend simultaneously in separate terminals.


🀝 Contributing

Contributions are welcome from developers of all experience levels! πŸŽ‰

Ways to Contribute

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

Getting Started

# 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-name

Please read before contributing:

🌱 Good First Issues

New to open source? Start here:

πŸ‘‰ View all open issues


🧯 Troubleshooting

GitHub OAuth Not Working

  • Ensure the callback URL in your GitHub OAuth App exactly matches GITHUB_REDIRECT_URI in server/.env
  • Verify all .env variables are set correctly (no extra spaces or quotes)
  • Restart both the frontend and backend after updating environment variables

App Not Loading

  • Make sure both the frontend (port 5173) and backend (port 3000) are running simultaneously
  • Check that VITE_API_URL in client/.env points to your running backend

Render Cold Start

  • The live demo is on Render's free tier β€” first load may take ~30 seconds to spin up

πŸ“„ License

This project is licensed under the MIT License β€” feel free to use, modify, and distribute.


⭐ Support

If you find this project useful, please consider starring the repository β€” it helps others discover it!


πŸ™Œ Acknowledgements

Built with ❀️ using React, Node.js, Express.js, and the GitHub API.

About

Two powerful tools, one unified platform: effortlessly bulk-delete old repositories and sweep away starred noise.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

Β 
Β 
Β 

Contributors