Copy A Repository Or Merge All Repositories
A powerful web application that allows users to efficiently manage GitHub repositories by either forking individual repositories or merging multiple repositories into a single repository with organized folder structure.
- Secure GitHub Personal Access Token integration
- User profile validation and display
- Token storage for session persistence
- Search repositories by GitHub username
- Support for both personal and other users' repositories
- Comprehensive repository information display
- Language detection and visual indicators
- Interactive repository grid with checkboxes
- Bulk selection controls (Select All/Deselect All)
- Real-time selection counter and status updates
- Fork each selected repository individually to your GitHub account
- Preserves original repository structure and history
- Batch processing with progress tracking
- Error handling for failed forks
- Combines multiple repositories into one organized repository
- Each source repository becomes a main folder
- Maintains separation while creating unified access
- Custom naming for the merged repository
- Real-time progress bars during operations
- Detailed status messages
- Comprehensive results display with success/error reporting
- Direct links to newly created repositories
- Responsive design for desktop and mobile devices
- Modern, clean interface with GitHub-inspired styling
- Intuitive workflow with step-by-step guidance
- Error notifications and success confirmations
- Node.js (v14 or higher)
- npm or yarn
- GitHub Personal Access Token
-
Clone the repository:
git clone https://github.com/US-SPURS/CAROMAR.git cd CAROMAR -
Install dependencies:
npm install
-
Set up environment variables:
cp .env.example .env # Edit .env with your configuration (optional for basic usage) -
Start the application:
npm start
-
Open your browser: Navigate to
http://localhost:3000
For development with auto-restart on file changes:
npm run dev- Visit the CAROMAR web application
- Click "Create Personal Access Token" to generate a GitHub token
- Enter your token and click "Validate Token"
- Your GitHub profile will be displayed once validated
- Enter a GitHub username (yours or another user's)
- Click "Search Repositories" to load their repositories
- Browse the repository grid with detailed information
Choose between two operation modes:
Fork Individual Repositories:
- Select repositories you want to fork
- Each will be forked individually to your account
- Maintains original repository structure
Merge into Single Repository:
- Select multiple repositories to combine
- Enter a name for the merged repository
- Creates one repository with all selected repos as folders
- Select your desired repositories using checkboxes
- Use "Select All" or "Deselect All" for bulk operations
- Click the "Execute" button to start the process
- Monitor progress with real-time status updates
- View detailed results of the operation
- Access direct links to newly created repositories
- Review any errors or issues encountered
To use CAROMAR, you need a GitHub Personal Access Token:
- Go to GitHub Settings > Developer settings > Personal access tokens
- Click "Generate new token (classic)"
- Select appropriate scopes:
repo(for repository access)user(for user information)
- Copy the generated token
- Enter it in the CAROMAR application
Security Note: Your token is stored locally in your browser and used only for GitHub API calls. It's never sent to external servers.
The application provides several REST API endpoints:
GET /api/user- Validate token and get user informationGET /api/search-repos- Search repositories for a userPOST /api/fork-repo- Fork a specific repository
- Frontend: HTML5, CSS3, Vanilla JavaScript
- Backend: Node.js, Express.js
- Templating: EJS
- HTTP Client: Axios
- GitHub Integration: GitHub REST API v3
CAROMAR/
βββ public/
β βββ css/
β β βββ style.css # Application styling
β βββ js/
β βββ app.js # Frontend JavaScript logic
βββ views/
β βββ index.ejs # Main HTML template
βββ server.js # Express server and API endpoints
βββ package.json # Project dependencies
βββ .env.example # Environment variables template
βββ README.md # This file
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or have questions:
- Check the GitHub Issues page
- Create a new issue with detailed information
- Include error messages and steps to reproduce
- GitHub API for repository management capabilities
- Font Awesome for icons
- Modern web standards for responsive design
