Add documentation for Orchestra

This commit is contained in:
2026-03-18 14:49:17 +00:00
parent 4707661ffd
commit f91dc97c38
3 changed files with 77 additions and 19 deletions
+71 -1
View File
@@ -1,2 +1,72 @@
# Orchestra
A simple one binary orchestrator for game server hosting, written in Go.
A simple one binary orchestrator for game server hosting, written in Go with a solidjs frontend.
## Table of Contents
- [Orchestra](#orchestra)
- [Table of Contents](#table-of-contents)
- [Project Synopsys](#project-synopsys)
- [User Stories (Functionalities)](#user-stories-functionalities)
- [User](#user)
- [Admin](#admin)
- [Service owner](#service-owner)
- [Other](#other)
- [Q \& A](#q--a)
## Project Synopsys
Orchestra is an visual orchestrator that allows you to setup services quickly.
This project is born out a need to host game services and to make it simple for friends and family and to keep it in one binary without the setup hassle.
I would like it to be compliant to Pelican/Pterodactyl's Egg system so you can ingest those files and set up the game servers like a breeze.
TODO: Write more.
INFO: Code organization: https://go.dev/doc/modules/layout
## User Stories (Functionalities)
All marked user stories are implemented, those that are not are WIP.
### User
- [ ] As a user I want to access my service through a website to be able to see my services.
- [ ] As a user I want to register myself (If OAuth is disabled) through the website to be able to see my services.
- [ ] As a user I want to set 2FA myself through the website to be able to see my services.
- [ ] As a user I want to login to the service to setup a server.
- [ ] As a user I want to login to the service through my OAuth2 provider to setup a server.
- [ ] As a user I want to have a dashboard to see all assigned services that I own.
- [ ] As a user I want to start/stop a service.
- [ ] As a user I want to connect to SSH and browse my containers filesystem to check mods.
- [ ] As a user I want to import a [Pelican/Pterodactyl Egg](https://raw.githubusercontent.com/pelican-eggs/games-steamcmd/refs/heads/main/eco/egg-eco.json) to setup a new service.
- [ ] As a user I want to setup a new service like the above egg setup.
- [ ] As a user I want to export a newly made egg so I can share it with a friend.
- [ ] As a user I want to access my game server through $\$URL/\$USER/\$GAME-UNIQUE-ID$
### Admin
- [ ] As an administrator I want to invite a user to a service if OAuth is disabled.
- [ ] As an administrator I want to recover a user if OAuth is disabled.
- [ ] As an administrator I want to assign a service to a user.
- [ ] As an administrator I want to see who is using the resources on the server.
- [ ] As an administrator I want to set default limits so people can't abuse the service.
- [ ] As an administrator I want to change limits so I can grant extended limits to friends.
- [ ] As an administrator I want to access a service
- [ ] As an administrator I want to disable a service
- [ ] As an administrator I want to remove a service.
### Service owner
- [ ] As the owner of the service I want to host services on Docker/Podman/K3s/K8s.
- [ ] As the owner of the service I want to make Orchestra use terraform to spawn services independently of backend.
- [ ] As the owner of the service I want to select how to login and register, local or OAUTH2.
- [ ] As the owner of the service I want to be able to register an account without OAuth2 authorizor.
- [ ] As the owner of the service I want to restrict sign-ups.
- [ ] As the owner of the service I want to have Orchestra make use of a public or private OAuth2 authorizor.
- [ ] As the owner of the service I want to use Caddy as my reverse proxy.
- [ ] As the owner of the service I want to make it simple to deploy on my own server via a container.
- [ ] As the owner of the service I want to be able to check the logs for any suspicious behaviour with services.
- [ ] As the owner of the service I want to ban access from countries/vpns that are known for hacking services.
### Other
- [ ] As an \{\$ACTOR\} I want \{\$FUNCTION\} because {$REASON}
## Q & A
-9
View File
@@ -1,9 +0,0 @@
import type { Component } from 'solid-js';
const App: Component = () => {
return (
<p class="text-4xl text-green-700 text-center py-20">Hello tailwind!</p>
);
};
export default App;
+6 -9
View File
@@ -1,16 +1,13 @@
/* @refresh reload */
import './index.css';
import { render } from 'solid-js/web';
import type { Component } from 'solid-js';
import 'solid-devtools';
import App from './App';
const root = document.getElementById('root');
if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
throw new Error(
'Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?',
const App: Component = () => {
return (
<p class="text-4xl text-green-700 text-center py-20">Hello tailwind!</p>
);
}
};
render(() => <App />, root!);
render(() => <App />, document.getElementById('root')!);