Skip to content

ezppfarm/osu-server-list

Repository files navigation

🧭 osu! Server List

A modern monorepo for managing and displaying private or community osu! servers — built with Bun, TypeScript, and TurboRepo for blazing-fast development and builds.


📁 Project Structure

osu-server-list/
├── apps/
│   ├── crawler/         # Service that scrapes or updates osu! server data
│   └── frontend/        # Web frontend for displaying servers
│
├── packages/
│   └── db/              # Shared database package (Drizzle ORM + schema definitions)
│       ├── src/
│       │   ├── index.ts
│       │   ├── query.ts
│       │   └── schema.ts
│       ├── drizzle.config.ts
│       └── package.json
│
├── .gitignore
├── bunfig.toml
├── LICENSE
├── package.json
├── turbo.json
├── tsconfig.json
└── README.md

🚀 Tech Stack

  • 🧠 Language: TypeScript
  • ⚡ Runtime: Bun
  • 📦 Monorepo Management: Turborepo
  • 🗃 Database: Drizzle ORM
  • 🌐 Frontend: SvelteKit
  • 🔍 Crawler: Custom Bun service for collecting osu! server data

🧩 Packages

packages/db

Shared Drizzle ORM setup used by all apps in the monorepo. Includes:

  • schema.ts: database schema definitions
  • query.ts: reusable query helpers
  • index.ts: exports for external use

🧠 Apps

apps/frontend

Frontend web app displaying osu! servers with sorting, filtering, and details.

apps/crawler

Backend crawler that fetches or updates server info periodically.


🛠️ Setup

1. Clone the repository

git clone https://github.com/ezppfarm/osu-server-list.git
cd osu-server-list

2. Install dependencies

Using Bun:

bun install

3. Run all apps

Use Turborepo to start everything in parallel:

bun run dev

Or run individual apps:

bun run dev --filter=frontend
bun run dev --filter=crawler

🧱 Building

To build all packages and apps:

bun run build

🐋 Running with Docker

1. Running

To run, run:

docker compose up

If you want to run in the background, run:

docker compose up -d

📜 License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.


🌟 Contributing

Pull requests are welcome! If you’d like to contribute:

  1. Fork the repo
  2. Create a new branch (feature/your-feature)
  3. Commit your changes
  4. Open a PR

🩵 Acknowledgements