BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
翻译准备中
一个完整堆栈的团本管理中心,为 We Go Again (US‑Tichondrius) 构建,支持单个公会内的多个团本团队。跟踪战利品历史、出勤、BiS 列表、战利品优先级、M+ 评分,
AI 翻译
A full-stack raid management hub built for We Go Again (US-Tichondrius), supporting multiple raid teams within a single guild. Tracks loot history, attendance, BiS lists, loot priority, M+ scoring, an
游戏JavaScript · TypeScriptGitHub @katogaming88在线运营者未确认
试用过了吗? 点一下就好,无需登录。
一个完整堆栈的团本管理中心,为 We Go Again (US‑Tichondrius) 构建,支持单个公会内的多个团本团队。跟踪战利品历史、出勤、BiS 列表、战利品优先级、M+ 评分和赛季报名——并提供官员工作流用于名册管理和基于 Discord 的身份验证。
AI 翻译
A full-stack raid management hub built for We Go Again (US-Tichondrius), supporting multiple raid teams within a single guild. Tracks loot history, attendance, BiS lists, loot priority, M+ scoring, and season signups — with officer workflows for roster management and Discord-based authentication.
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A live web app for We Go Again raid teams -- a full raid hub giving raiders a personal profile and officers a complete management dashboard. Supabase (Postgres + Auth + RLS) is the backend; there is no build step and no server of its own -- both pages are static HTML/JS hosted on GitHub Pages, talking to Supabase directly from the browser.查看完整 README ↗A live web app for We Go Again raid teams -- a full raid hub giving raiders a personal profile and officers a complete management dashboard. Supabase (Postgres + Auth + RLS) is the backend; there is no build step and no server of its own -- both pages are static HTML/JS hosted on GitHub Pages, talking to Supabase directly from the browser.
Supports multiple teams (Phoenix, Hellfire Rollers, Immolation) from a single codebase. Append ?team=hellfire (or ?team=immolation) to any URL to switch teams; a raider or officer who's claimed a character on a given team is redirected there automatically on a cold visit.
guild.html)The one page that is not scoped to a raid team: the guild above the three teams, rather than any one of them. It is where a visitor who does not know which team they want starts.
Carries the team cards (badged with your own team, plus a signup link for any team whose signups are open), guild-wide Twitch streams (whoever is live gets an embed, everyone else a compact row), a three-headline news teaser, a BoE Sales nav link to the BoE page, About the Guild, and the guild's external links. Built across milestone #27.
It replaced the cold-landing team-picker modal on index.html, so a visitor with no ?team= in the URL now lands here instead of on a three-button prompt. A signed-in raider with exactly one claimed team still goes straight to that team's roster, so nobody's daily path got longer. index.html keeps its URL and stays the team page; whether the guild page should become the site's front door is tracked in #794.
boe.html)Report a find and follow what happens to it, on one page. The report form sits at the top (#891, moved off index.html's BoE tab; no login needed, and it picks its own reporting team), and under it the found-BoE auction lifecycle (#864): record listings and sales (payout split computed from the guild-wide policy), mark payouts paid, retire dead items, undo any of those; a summary strip of guild income, outstanding payouts, and finds per team. Guild-wide, not per-team: BoEs are guild property, so a BoE manager or site admin sees every team's finds in one list with the finding team named per row. Open to anyone signed in (#890) and scoped by the read policies: a team officer sees the teams they staff and settles those payouts (#888), a raider sees the finds reported under their own character (#889) with no buttons. Reached from the BoE Sales link in every page's nav, none of them access-gated any more; index.html?team=<slug>#boe and guild.html#boe redirect here, the first carrying its team. Signed-out visitors get the form and a sign-in prompt in place of the records.
index.html)Other public nav tabs: Roster (current + next-season "tentative" roster), Streams (full streamer directory), Sign Up (multi-step season signup form), History (past seasons' progression and rosters), About (team bios, guild leadership bios, guild info, contact form), News, Help. The current view (and an open profile) is reflected into the URL, so a reload restores where you were instead of always dropping back to Home.
Everyone signs in with the same Discord button (Supabase Auth, full-page redirect). On first login a raider claims their character from the team's roster; a persistent "Claim your character" prompt on the landing page covers logging in without a claim yet, including pointing at the right team if they're already claimed elsewhere. Officer/admin status is derived from the database (team_members.role, a site_admin grant in guild_grants), not a separate login -- an existing Discord session just unlocks more once it resolves.
officer.htmladmin.html), gated to site admins only (a site_admin row in guild_grants)officer.html)Discord-authenticated, session lasts 2 hours. A global season selector filters loot, fairness, and attendance to a specific past season. Every tab/sub-tab below can be individually hidden per team via Feature Flags (Admin tab), except Roster and Season Settings.
| Tab | Sub-tabs | What it shows |
|---|---|---|
| Roster | Roster / Discord Claims | Roster: full player table with attendance, items, BiS status, Trial/Bench/Backup Tank/Backup Healer tags; filter and sort; click a player to expand their profile inline with edit controls, add/remove/rename players. Discord Claims: every claimed Discord-to-character mapping; remove a claim or grant/revoke officer access. |
| Loot | Import / Import History / Loot Fairness | Import: paste RCLootCouncil JSON to write loot to the database. Import History: view previously imported batches. Loot Fairness: bar chart of items received per player, filterable by Heroic or Mythic. |
| Priority | Priority List / Contested Items / Unmanaged Items | RCLootCouncil export string generator. Priority List: full priority order per item, filterable/searchable, each item has a Priority Generator button (auto-rank by blended score) with an editable, saveable order. Contested Items: every item sorted by how many players have it on their BiS/Wishlist. Unmanaged Items: BiS items with no priority order yet, badge-counted. |
| BiS Manager | Submissions / BiS Lists | Submissions: open/close BiS submissions globally or per player; approve or reject submitted links. BiS Lists: role-grouped player table with each raider's wishlist BiS count and an Incomplete Wishlists badge. |
| Attendance | Manage / Attendance Scores / Bench Fairness | Manage: attendance grid editable per player per night, Refresh from WCL, Commit Attendance Scores. Attendance Scores: players below a threshold. Bench Fairness: bench player attendance comparison. |
| Scoring | -- | Fetches WarcraftLogs performance scores per player, editable/overridable manually, committed as one of the Priority Generator's blended-score inputs. |
| Signups | Signups / Pending Roster / History | Signups: open/close the public form; review/approve/deny submissions. Pending Roster: approved applicants awaiting a roster add, with Trial/Backup Tank/Backup Healer toggles at promotion time. History: past signup activity. |
| M+ Exclusions | -- | Review/approve/reject raider-submitted M+ exclusion requests; toggle exclusion per player manually; open/close the request window. |
| Received Item Requests | -- | Approve or reject raider self-mark requests; writes straight to loot history on approval. |
admin.html)A separate, site-wide (not per-team) page gated to site admins:
players row (team_members + claim_character()); a person can claim characters on multiple teams.team_members.role value (officer/team_leader), not a separate credential -- granted/revoked from the Roster tab's Discord Claims sub-tab or the Admin tab.site_admin row in the guild_grants table, granted by Discord ID from admin.html.docs/RLS.md for the full policy/function matrix.supabase/migrations/, applied in order by the Deploy workflow when a PR merges, ahead of the site that release ships.index.html, officer.html, admin.html, guild.html, and boe.html are plain static pages (no build step, no bundler) that call Supabase directly from the browser via supabase-js, using a public anon key restricted by RLS.team_settings.config.features) let a team hide tabs/sub-tabs it doesn't use, editable per-team from the Admin tab or site-wide from admin.html..github/workflows/deploy.yml after that release's migrations and Edge Functions are on production; the TEAMS object in js/common.js maps each team slug to its Supabase team ID, switched via ?team=. guild.html and boe.html are the exceptions: both are guild-wide and carry no team; the guild page links down into the team pages, and the BoE page shows every team's finds and asks which team a new find is for. boe.html reads a ?team= when one is given, purely to preselect that dropdown..gs source was removed from the repo once it was no longer needed even as historical record.For the full file-by-file breakdown, local dev setup (Docker + Supabase CLI), migration workflow, and PR requirements, see CONTRIBUTING.md -- that's the maintained source of truth for project structure so it doesn't drift out of sync with this file the way it previously did.
dbdoc/ -- generated schema docs (tables, columns, triggers, functions, ER diagrams), regenerated with npm run db:docs. Never hand-edit.docs/database-schema-reference.md -- a narrative companion to dbdoc/.docs/RLS.md -- hand-maintained policy/function reference (tbls can't generate this).docs/database-decisions.md -- a running log of settled schema decisions and the reasoning behind them; each entry names the migration that shipped it, and CI checks that the file exists.docs/season-inventory.md -- every season column and team_settings.config key: who writes it, who reads it, the format it holds, and whether it means the guild's tier or a team's own cycle. The input to the Season milestone's schema steps.docs/backup-restore.md -- what's backed up, what's regenerable without a backup, and the restore runbook.docs/app-preview.md -- the new app's private preview: what a tester needs, adding and removing testers, and how it is deployed and locked.See docs/supabase-local-dev-setup.md for setting up the local Supabase stack (Docker + CLI) from scratch.
To see a PR's migration running under the site before it merges, section 10 of
that document is four commands from migration:new to localhost:3000 signed
in as a seeded persona.
npm run lint # eslint over js/, scripts/, tests/
npm run format:check # prettier check over js/, scripts/, tests/ and the Edge Functions
npm run typecheck # tsc --noEmit (js/common.js is @ts-check'd)
deno check supabase/functions/*/index.ts # type-check the Edge Functions (deno via scoop)
deno lint # lint them; scope and rules live in deno.jsonc
deno task test # their tests under tests/edge/, no permissions granted
npm run test:frontend # vitest -- frontend logic, no browser needed
npm run test:rls # vitest -- RLS policy behavior against a local reset
npm --prefix bot test # vitest -- the Discord bot, which keeps its own deps and gates
npm run db:docs # regenerate dbdoc/ after a migration change
npm run db:rls # regenerate docs/rls_policies.csv
npm run migration:new -- <slug> # new migration, stamped from the Eastern clock
npm run serve # serve the site at localhost:3000 against the local stack
npm run dev:login -- phoenix-officer # print a sign-in link for a persona; no name lists them
npm run dev:sink # catch what the Edge Functions would post to Discord
npm run db:snapshot # load the nightly production dump into the local stack
See CONTRIBUTING.md for the full PR checklist (what a migration change additionally requires) and versioning/changelog rules.
Planned work lives on the milestones, and the build order across them is on the open tracking issue.
| BoE Sales | -- | Not a tab any more: the BoE Sales link in this page's site nav opens boe.html (see above), which reports finds and tracks them, open to anyone signed in and scoped by the read policies. An old ?tab=boe bookmark redirects there. |
| Season Settings | Settings / Raid Progression / History | Settings: season name/start/end, season code prefix, target tank/heal roster counts, trial thresholds, WCL guild link. Raid Progression: boss kill dates shown publicly. History: past seasons, Archive Season (snapshots the roster and pushes to history), Unarchive. |
| Officer Bios | -- | Team officer bio cards shown on the public About tab; also edits Guild Officer Bios (guild-wide, site-admin write access). |
| Audit Log | -- | Searchable, append-only log of every officer/admin action -- actor, action, target, detail, timestamp. |
| Reports | Raid Nights Since Last Item / BiS Demand vs Awards / Priority Order Health / Season Loot Pace | Read-only analytics views over the season's loot/priority/BiS data. |
| Admin | Properties / Data Export / Officers / Feature Flags / Danger Zone | Visible to team leaders and site admins. Team leaders see Properties, Officers, Feature Flags, and Danger Zone (but only its one team-leader-scoped op, Clear Season History); Data Export and every other Danger Zone clear (Loot Data, BiS Submissions, Signups, Pending Roster, M+ Exclusion Requests, Self-Received) are site-admin only. |
| Help | -- | Officer workflow reference guide. |