# Features — skrmiish

Evidence date: 2026-10-03. Revision: `master` `5077fba` (2020-12-09, "Top Navbar fixed issues & code cleaning (removed console.logs)").

`README.md` does not list product features. Status below is from the code on `master`. Every other remote branch is an ancestor of `master`, so those branches do not hold extra unmerged features.

Planned features written as a roadmap: **none found**. Comments in the leaderboard form say prize and description should be sent "when api is ready". That is the closest thing to a planned item, and it is still commented out.

## Current features (master)

| Feature | What it does | Evidence | Status |
|---|---|---|---|
| Public marketing home | Hero, "What is Skrmiish", heroes, current leaderboards, "Leaderboards as a service", download art, footer | `src/features/SPA/SPA.js` | Implemented. Two sections still use lorem ipsum |
| Top navigation | Home, streamers, and leaderboards scroll targets. Login and sign-up open modals | `SPA/Navigation`, `SPA.js` | Implemented. Last commit message says navbar issues were fixed |
| Mobile navigation | Overlay and a mobile nav. Alert centre is not displayed on mobile | Commit `7d6d349`, `SPA.js` | Implemented |
| Right rail | Logged-out "become a supporter" content. Logged-in "fight for your heroes". Top three streamers by `clicker_game.clicks`. Leaderboard titles | `SPA/MainGrid/RightDrawer/RightMenu/RightTopSection.js` | Implemented |
| Left rail | Become a partner versus partner-active and partner list, plus account, dashboard, leaderboard manager, streamer tools | `LeftMenu.js` under each feature area | Implemented. The menu is copied per page |
| Email and password sign-up | Creates a non-streamer user | `sagas/Auth/NormalRegister` | Implemented |
| Email and password login | `logintype` 0, platform `web` | `sagas/Auth/NormalLogin` | Implemented |
| Twitch button | Implicit OAuth link with `scope=user_read` | `SignUpModal/TwitchButton/TwitchButton.js` | Implemented. Redirect URI is an Amplify host |
| Twitch return handling | Reads the URL hash and calls Helix, then Skrmiish login | `useGetTokenAndLogin.js`, `LogInWithTwitch.js` | Implemented. Login body overwrites the Twitch token |
| Supporter registration modal | Twitch-oriented signup, camelCase body, `isStreamer: false` | `RegisterAsSupporter.js`, `SupporterModal` | Implemented |
| Partner registration modal | `is_streamer: true`, signup type `twitch` | `RegisterAsStreamer.js`, `StreamerModal` | Implemented. Access token is not read from the store |
| Partner route gate | Accounts, profile, leaderboard manager, streamer page | `App.js`, `ProtectedRoute.js` | Implemented. Supporters are redirected home |
| Persisted session | Full Redux state in `localStorage` | `src/app/store.js` | Implemented |
| Account overview | Supporter balance, revenue share, subscriber leaderboard table | `Accounts/.../Overview/Overview.js` | Implemented when `streamerData` is loaded |
| Buy subscription credits modal | UI says revenue share is converted into credits | `Accounts/BuyCredits` | UI only. No purchase saga |
| Request payout | Posts amount and uuid | `RequestPayout.js`, `PayoutModal` | Implemented as a request. No success toast |
| Payout details | Paypal label, email, $100 minimum sentence | `PayoutDetails.js` | UI implemented. Save dispatch does not match the saga |
| QR code tab | Tab on the account page | `Accounts/.../QRCode` | Present. Behaviour beyond the tab was not fully read |
| Legal tab | Tab on the account page | `Accounts/.../Legal` | Present |
| Profile tab | Bio, social links, avatar crop | `Profile/.../ProfileTab`, `UpdateBio.js`, `UpdateLinks.js`, `UpdateProfilePicture.js` | Implemented. Discord is collected in the saga arguments and omitted from the POST body. `merch` is always `""` |
| Downloads tab | Profile tab, hidden under 768px | `Profile/.../DownloadsTab`, `Main.js` | Present. Download targets were not confirmed |
| Settings | Username, names, disabled email, disabled cell, date of birth, disabled password, Delete Account | `SettingsTab.js`, `UpdateUser.js` | Save is implemented. Delete, email, cell, and password changes are not |
| Leaderboard create | Title, Fortnite or PubG, six carousel cards, schedule, image upload | `CreateTab.js`, `CreateLeaderBoard.js` | Implemented. Prize, description, and format are not sent |
| Leaderboard track and archive | Tabs on `/manageLeaderboard` | `ManageLeaderboards/.../Main.js` | Tabs exist. Mobile opens TRACK first |
| Streamer page | Partner page with a line chart (recharts) and an alert list | `features/Streamer`, `LineChart.js`, `Alerts.js` | Implemented |
| Alerts | `GET /api/v1/User/{uuid}/alerts`, renders `alert_msg` | `Alerts.js` | Implemented |
| Feature request | "Missing something" posts to `request_feature` | `MissingSomething.js` | Implemented |
| Newsletter subscribe | GET `newsletter_subscribe` | `Subscribe.js` | Implemented as a GET |
| Newsletter unsubscribe and check | Both call the leaderboard list | `Unsubscribe.js`, `CheckSubscribtion.js` | Present, and they do not call a newsletter URL |
| Toasts | Success and failure strings for login, registration, and some updates | `features/Toast`, saga `showToast` | Implemented |
| Service worker | `serviceWorker.register()` at startup | `src/index.js` | Implemented (Create React App PWA registration) |
| Azure deploy pipeline | `master` only, Azure Storage deploy pipe | `bitbucket-pipelines.yml` | File present. Script is `npm build` |
| Static marketing images | Carousel, heroes background, download art on Azure Blob | `WhatIsSkirmish.js`, `PlayWithOrAgainstHeroes/styles.js`, `DownloadApp.js` | Implemented |

## Recently changed (end of history)

The last commits on `master`, newest first:

| Commit | Date | Subject |
|---|---|---|
| `5077fba` | 2020-12-09 | Top navbar fixes and removal of console logs |
| `3dc0dca` | — | Missing SPA right-menu file |
| `5a8eae0` | — | Leaderboard details modal and right menu |
| `f092195` | — | Right menu styling |
| `b2940bb` | — | Right menu: top 3 heroes and active leaderboards |
| `cdd0661` | — | Merge pull request #7 (`JoshFixes`) |

Dates for the middle rows were not re-read one by one. The tip date is from `git log -1`.

## In development

Nothing is in development inside this repository. `master` has not moved since 2020-12-09.

## Deprecated or removed

| Item | Evidence | Status |
|---|---|---|
| Commented Twitch signup in `authSlice.js` | Hardcoded sample user body, not used by `useGetTokenAndLogin` | Left in the file. Not on the live path that was traced |
| Commented direct payout call on the overview button | Replaced by opening the payout modal (commit message: moved request payout to the modal confirm button) | Removed from the button. The saga remains |
| Zendesk snippet | Commented out in `public/index.html` | Not active |
| Left-menu information section | Commit `e8e20f5` on `maanie-changes`, which is contained in `master` | Removed, per that commit subject |

## Not in this repository

| Item | Why it is listed |
|---|---|
| API, database, and back-office | Only the HTTPS host is referenced |
| Native app | Download images only |
| SonarQube project file and `sonarqube_scan.bat` | Named at task creation. Not in `master` |
| Automated tests | No test files found |
| Azure Blob SDK usage | `@azure/storage-blob` and `@azure/identity` are in `package.json` and are not imported under `src/` |
