mirror of
https://github.com/yusufipk/RepoHub.git
synced 2026-09-11 10:36:07 +00:00
f8fffdce830bd4a0317f5a6fa9943903b8c8676c
- Fix N+1 query problem in preset package fetching * Search with limit 5 to find best matches * Case-insensitive package name matching * Fallback to most popular when no exact match - Improve category filtering accuracy * Update category mapping to match database schema * Remove duplicate packages in category fetching * Better distribution across categories - Add version control for localStorage profile * Support future schema migrations * Auto-migrate old profiles to new version * Persist version in localStorage - Enhance error handling * Specific error messages for 400/500/404 responses * Network error detection * User-friendly error messages in UI - Fix OS detection fallback * Default to ubuntu when detection returns unknown * Prevent empty OS selection in onboarding - Add better API validation * Explicit limit range validation (1-50) * Clear error messages for invalid inputs
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
-
Clone the repository:
git clone https://github.com/yusufipk/RepoHub.git cd RepoHub -
Install dependencies:
npm install # or pnpm install -
Set up Environment Variables: Copy
.env.exampleto.envand configure your database connection.cp .env.example .env -
Run the development server:
npm run dev # or pnpm devOpen 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/jsonx-sync-secret: Your sync secret key (required ifSYNC_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) packagesfedora: Sync Fedora packages (Official Repo)windows: Sync Windows packages (Winget)macos: Sync macOS packages (Homebrew)all: Sync all platforms
Example Request:
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.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Languages
TypeScript
94.2%
JavaScript
3.8%
PLpgSQL
1.5%
CSS
0.5%