auburnsummer / rd-indexer

GNU Affero General Public License v3.0
3 stars 1 forks source link

Rhythm Cafe V3 Planning #69

Open auburnsummer opened 1 year ago

auburnsummer commented 1 year ago

v1 is the original google sheet

v2 is what we have now. After GAE started rate limiting my google sheet I had to quickly move off it. So we get what we have now, but the system won't be appropriate for a more dynamic level system.

v3...??

Design Goals

auburnsummer commented 1 year ago

Database

All info in RCV3 uses a single SQLite database. V2 has a split system (orchard.db and status.db), V3 will just have one SQLite database for everything.

Each individual API server will have its own copy of the database, but only the primary server will be writable.

Reasoning:

Schema changes:

erDiagram
    Level {
        string rdlevel_hash
    }
    Status {
        string alias
    }
    User {
        string id
    }
    Status |o -- || Level : has 
    Level  |o -- o| Level : successor
    Status }o -- || User : posts
auburnsummer commented 1 year ago

API Server

An API server serves api.rhythm.cafe. There's a few of these geodistributed around the world. What's on an API server?

auburnsummer commented 1 year ago

Peer Review

PR will use an issue-tracking system. When a level is added to the primary database, it creates a issue in the issue tracking system for the level. The issue can be closed with a tag to either approve/nonrefer the level. A bot observes when this happens and calls the appropriate webhooks.

Investigation for what system to use is ongoing.

auburnsummer commented 1 year ago

Frontend and Admin interface

The Frontend and Admin interface are probably the same thing. The Admin interface is hidden unless you're logged in with Discord and you have the correct roles. Roles are defined in Discord and fetched via the Discord API.

I'll probably use a fancy SSR framework for the frontend, utilising existing components whereever possible. Research ongoing.

Frontend:

Admin interface: