Guccho is a web-based service designed for interacting with private osu! servers, focusing on compatibility and ease of use.
- Node.js version 18 or higher.
- A compatible platform (details on supported platforms provided below).
-
Configuration preparation is crucial:
- Generate
guccho.ui.config.ts
based onguccho.ui.config.example.ts
. - Create
guccho.backend.config.ts
usingguccho.backend.config.example.ts
as a template. - Edit the newly created configuration files as guided by the included comments.
- If using
env()
orsafeEnv()
, set up a.env
file using.env.example
as a reference.
- Generate
-
Install dependencies:
pnpm install
For use with bancho.py
or [email protected]
, ensure DB_DSN
is set in your environment variables to enable Drizzle tooling.
- bancho.py (also known as gulag)
- ppy.sb
-
To build the application for production:
pnpm build
-
To start the production server:
pnpm start:prod
-
Further details on deployment can be found in the Nuxt.js deployment documentation.
- Launch the development server at http://localhost:3000:
pnpm dev
- Implement functionality to grant owner privileges to the first registered user.
flowchart TB
subgraph abstracted [Abstract]
user(User) --- relation(Relationship)
user --- score(Score)
score --- beatmap
leaderboard(Leaderboard) --- beatmap(Beatmap)
end
subgraph extendable [Extendable]
status(Status)
article(Article)
log(Log)
session(Session)
end
subgraph providers [Providers]
extendable
abstracted
end
subgraph impl [Implementations]
ppy.sb(ppy.sb) === |extends| bancho.py
end
subgraph resource [Resources]
mysql[(MySQL)]
gulag[/Bancho.py Server/]
redis[(Redis)]
file[(File)]
memory[/Memory/]
env
end
subgraph server [Server]
trpc-server(TRPC Server)
providers
impl
bancho.py(Bancho.py) === |implements, extends| $base([Base])
end
subgraph pages [Pages]
page-user(/user/:id)
pages-other(/...)
end
subgraph client [Client]
search(Search)
trpc-client(TRPC Client)
pages --- trpc-client
pages --- client-session
search --- trpc-client
client-session(Client Session) --- trpc-client
end
A[Gamer] --> |Browser| pages
trpc-client --> |superjson| trpc-server --> |devalue| trpc-client
trpc-server === providers
session --- user
extendable ===== |$def| $base
abstracted ===== |$active| impl
ppy.sb --- |additional tables| mysql
bancho.py --- |"gulag api(v1)"| gulag
bancho.py --- |leaderboard| redis
bancho.py --- mysql
$base --- |session| redis
$base --- |runtime, session| memory
$base --- |log| file
$base --- |reads| env
- ppy.sb
- Guccho