From f9ebc714c763f841a1b9fece758333ac54f37ec1 Mon Sep 17 00:00:00 2001 From: Sticks Date: Sun, 31 May 2026 19:11:12 -0400 Subject: [PATCH] add OneRound API egg --- egg-oneround-api.json | 208 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 208 insertions(+) create mode 100644 egg-oneround-api.json diff --git a/egg-oneround-api.json b/egg-oneround-api.json new file mode 100644 index 0000000..1df5119 --- /dev/null +++ b/egg-oneround-api.json @@ -0,0 +1,208 @@ +{ + "_comment": "OneRound API - Pterodactyl Egg", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2026-05-31T00:00:00+00:00", + "name": "OneRound API", + "author": "sticks@hep.gg", + "description": "OneRound golf platform API server. Requires a PostgreSQL database with PostGIS.", + "features": null, + "docker_images": { + "Latest": "git.hep.gg/sticks/oneround-api:latest" + }, + "file_denylist": [], + "startup": "API_LISTEN_ADDR=:{{SERVER_PORT}} entrypoint.sh", + "config": { + "files": "{}", + "startup": "{\"done\": \"OneRound API is ready\"}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!/bin/ash\necho \"OneRound API - nothing to install, binary is baked into the Docker image.\"\necho \"Set your environment variables in the Startup tab.\"", + "container": "alpine:3.21", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Database URL", + "description": "PostgreSQL connection string (e.g. postgres://user:pass@host:5432/oneround)", + "env_variable": "DATABASE_URL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "sort": 0, + "field_type": "text" + }, + { + "name": "JWT Secret", + "description": "HS256 signing key for auth tokens. Generate with: openssl rand -base64 32", + "env_variable": "JWT_SECRET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "sort": 1, + "field_type": "text" + }, + { + "name": "Apple Bundle ID", + "description": "iOS app bundle identifier for Apple Sign-In verification", + "env_variable": "APPLE_BUNDLE_ID", + "default_value": "gg.hep.oneround", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "sort": 2, + "field_type": "text" + }, + { + "name": "Log Level", + "description": "Logging verbosity: debug, info, warn, error", + "env_variable": "LOG_LEVEL", + "default_value": "info", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:debug,info,warn,error", + "sort": 3, + "field_type": "text" + }, + { + "name": "CORS Origins", + "description": "Allowed CORS origins (comma-separated, or * for all)", + "env_variable": "API_CORS_ORIGINS", + "default_value": "*", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "sort": 4, + "field_type": "text" + }, + { + "name": "Production Mode", + "description": "Enable production safety checks (true/false)", + "env_variable": "PRODUCTION", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "sort": 5, + "field_type": "text" + }, + { + "name": "No-Auth Mode", + "description": "Skip authentication for development (true/false). Never enable in production.", + "env_variable": "NOAUTH", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "sort": 6, + "field_type": "text" + }, + { + "name": "ID Generator URL", + "description": "URL of the ID generation service", + "env_variable": "IDGEN_URL", + "default_value": "https://id.hep.gg/", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 7, + "field_type": "text" + }, + { + "name": "ID Generator Username", + "description": "Username for the ID generation service", + "env_variable": "IDGEN_USERNAME", + "default_value": "oneround-api", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 8, + "field_type": "text" + }, + { + "name": "ID Generator Token", + "description": "Auth token for the ID generation service", + "env_variable": "IDGEN_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 9, + "field_type": "text" + }, + { + "name": "Email API URL", + "description": "URL of the email sending service", + "env_variable": "EMAIL_API_URL", + "default_value": "https://hep.gg/api/v1/email/send", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 10, + "field_type": "text" + }, + { + "name": "Email API Key", + "description": "Auth key for the email sending service", + "env_variable": "EMAIL_API_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 11, + "field_type": "text" + }, + { + "name": "Email From", + "description": "Sender address for outgoing emails", + "env_variable": "EMAIL_FROM", + "default_value": "OneRound ", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 12, + "field_type": "text" + }, + { + "name": "Add Region", + "description": "Named region to ingest on startup (e.g. michigan, florida, california). Leave empty to skip.", + "env_variable": "ADD_REGION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 13, + "field_type": "text" + }, + { + "name": "Add Region BBox", + "description": "Custom bounding box to ingest on startup as min_lat,min_lon,max_lat,max_lon. Used when Add Region is empty.", + "env_variable": "ADD_REGION_BBOX", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 14, + "field_type": "text" + }, + { + "name": "Tile Size", + "description": "Tile size in degrees for region ingestion (default 0.5)", + "env_variable": "TILE_SIZE", + "default_value": "0.5", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "sort": 15, + "field_type": "text" + } + ] +}