mirror of
https://github.com/yusufipk/RepoHub.git
synced 2026-09-11 18:46:07 +00:00
106 lines
2.8 KiB
Markdown
106 lines
2.8 KiB
Markdown
# RepoHub - Cross-Platform Package Manager
|
|
|
|
**Simplify software installation across Linux, Windows, and macOS with official repositories.**
|
|
|
|
RepoHub provides a unified interface for package discovery and installation across different operating systems.
|
|
|
|
## 🚀 Features
|
|
|
|
- **Cross-Platform Support**: Works on Linux (Debian, Ubuntu, Arch, Fedora), Windows, and macOS.
|
|
- **Official Repositories**: Access software strictly from trusted, official sources.
|
|
- **Script Generation**: Generate idempotent installation scripts for your selected platform.
|
|
- **Smart Filtering**: efficiently browse and filter packages.
|
|
|
|
## 🛠️ Technology Stack
|
|
|
|
### Frontend
|
|
- **Framework**: Next.js 14+ (React)
|
|
- **Styling**: Tailwind CSS
|
|
- **Icons**: Lucide React
|
|
- **State Management**: React Query + Zustand
|
|
|
|
### Backend
|
|
- **Runtime**: Node.js (TypeScript)
|
|
- **Database**: PostgreSQL
|
|
- **Infrastructure**: Docker
|
|
|
|
## 🏁 Getting Started
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 18+
|
|
- npm / pnpm / yarn
|
|
- Docker (optional, for database)
|
|
|
|
### Installation
|
|
|
|
1. **Clone the repository:**
|
|
```bash
|
|
git clone https://github.com/yusufipk/RepoHub.git
|
|
cd RepoHub
|
|
```
|
|
|
|
2. **Install dependencies:**
|
|
```bash
|
|
npm install
|
|
# or
|
|
pnpm install
|
|
```
|
|
|
|
3. **Set up Environment Variables:**
|
|
Copy `.env.example` to `.env` and configure your database connection.
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
|
|
4. **Run the development server:**
|
|
```bash
|
|
npm run dev
|
|
# or
|
|
pnpm dev
|
|
```
|
|
|
|
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
|
|
|
|
## 🔄 API Usage
|
|
|
|
### Syncing Repositories
|
|
|
|
You can trigger a repository sync using the API. This is useful for updating the package database.
|
|
|
|
**Endpoint:** `POST /api/sync`
|
|
|
|
**Headers:**
|
|
- `Content-Type`: `application/json`
|
|
- `x-sync-secret`: Your sync secret key (required if `SYNC_SERVER_ONLY=true`)
|
|
|
|
**Body Parameters:**
|
|
- `platform`: The platform to sync. Options:
|
|
- `debian`: Sync Debian packages (Official Repo)
|
|
- `ubuntu`: Sync Ubuntu packages (Official Repo)
|
|
- `arch`: Sync Arch Linux packages (Official Repo)
|
|
- `aur`: Sync Arch User Repository (AUR) packages
|
|
- `fedora`: Sync Fedora packages (Official Repo)
|
|
- `windows`: Sync Windows packages (Winget)
|
|
- `macos`: Sync macOS packages (Homebrew)
|
|
- `all`: Sync all platforms
|
|
|
|
**Example Request:**
|
|
|
|
```bash
|
|
curl -X POST http://localhost:3000/api/sync \
|
|
-H "Content-Type: application/json" \
|
|
-H "x-sync-secret: your_secret_key" \
|
|
-d '{"platform": "all"}'
|
|
```
|
|
|
|
## 🤝 Contributing
|
|
|
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
|
|
1. Fork the project
|
|
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
|
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
5. Open a Pull Request
|