A game discovery hub for Linux: browse, filter, and grab ready-to-run games via magnet links. No ads, no accounts, no tracking.
- Browse the catalog: filter by genre, year, rating, or download size; search by name.
- Magnet links: download directly with any torrent client (qBittorrent, Transmission, and so on).
- Native + Wine/Proton badges: know at a glance whether a game runs natively or needs a compatibility layer.
- Privacy by design: wishlist lives in your browser and never leaves it.
- Node.js 22+ and pnpm 9+
pnpm install
pnpm devOpen http://localhost:3000.
The app is a fully static Next.js export (no servers or runtime fetch):
pnpm build # writes the static site to out/GitHub Actions deploys the static export to GitHub Pages on every push to main
(see .github/workflows/deploy.yml). The site lives at:
The build must be served from the /MaroHub base path. Set it for local
previews of the export:
NEXT_PUBLIC_BASE_PATH=/MaroHub pnpm build && pnpm dlx serve outMaroHub/
├── app/ # Next.js App Router routes (home, game detail, docs, download)
├── components/ # React components
├── lib/ # Data layer, sanitizer, wishlist, formatting
├── types/ # TypeScript types
├── public/ # Static assets (icons)
├── data/ # games.json catalog + backups/
├── CLI/ # Maro CLI tool (maro script + build.sh)
├── DESIGN.md # Design system and direction
├── next.config.mjs # Next.js configuration (static export + base path)
├── .github/workflows/ # GitHub Pages deployment
└── package.json
A terminal tool for the same catalog:
cd CLI
./maro helpSee the Documentation page in the app (/docs) for the CLI reference, FAQ,
and contributing guide.
data/games.jsonis the catalog. Every game boots the app with its stats, genres, ratings, and magnet link.backups/games.json.bakis the rollback snapshot:
cp backups/games.json.bak data/games.jsonThe visual language, palette, and rules are documented in DESIGN.md.
- Ammar Mohamed (ammar0xf)
- Email: ammar0xf@gmail.com
MaroHub is built for the Linux community. No ads. No nonsense. Just games.