> For the complete documentation index, see [llms.txt](https://docs.kangaroodev.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kangaroodev.net/product-docs/getting-started/quickstart.md).

# Features

This section describes every part of the panel and what it does.

***

### Login and authentication

* **Login page** (`/login.html`) – Email + password login. Optional “Login with Discord” if Discord OAuth is configured.
* **Registration** – New users can register (email, username, password). Admins can then assign roles and permissions.
* **Password reset** – “Forgot password” sends an email with a reset link (if SMTP is set) or logs the link in the server console (dev). Reset is done on `/reset-password.html?token=...`.
* **Logout** – Clears the session and redirects to the login page.

After login, **admins** are redirected to the admin area; **non-admins** go to the **client dashboard**.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2Fy6Q7zsHn6NzmjoZ0dw4l%2Fimage%2014%20(1).png?alt=media&amp;token=0cbb5508-bab7-4218-8e45-2b2950a9f76e" alt=""><figcaption></figcaption></figure>

***

### Client dashboard

* **URL:** `/client-dashboard.html`
* **Who:** All logged-in users (especially clients).
* **What:** Central hub for non-admin users. Shows a simple dashboard; sidebar and navbar show only the sections they are allowed to access (e.g. My Commission, Settings).

***

### Hub

* **URL:** `/hub.html`
* **Who:** Users with **Hub** permission or admins.
* **What:** A hub/home view that lists quick links to other sections (commissions, lists, calendar, etc.) according to the user’s permissions.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2FrmVCIZ8EsK1iXiNUB1o3%2Fimage%205%20(1).png?alt=media&amp;token=508b9d7c-e746-4752-88e3-c82ca397fe42" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2FbGD4GF0vNMigeiu8Voua%2Fimage%206%20(3).png?alt=media&amp;token=3473ca8f-20e3-4981-8278-0cf41dfc00dd" alt=""><figcaption></figcaption></figure>

***

### Admin (payments)

* **URL:** `/admin.html`
* **Who:** Admins or users with **Payments** permission.
* **What:**
  * List of **payments** (invoices/subscriptions) created via the panel.
  * **Create payment link** – Opens a form to create a Stripe payment link (one-time invoice or subscription). Requires Stripe to be configured (`STRIPE_SECRET_KEY`). The link is stored and shown in the list with status.
  * Payments can be deleted from the list (no Stripe refund/void is performed by the panel; that would be manual in Stripe if needed).

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2F2qlzBZP70q7AXTTdwLEc%2Fimage%202%20(2).png?alt=media&amp;token=96426e39-3423-4020-8739-8498f622925e" alt=""><figcaption></figcaption></figure>

***

### Commissions (admin)

* **URL:** `/commission-admin.html`
* **Who:** Admins or users with **Commissions** (view/full) permission.
* **What:**
  * **List of all commissions** – Table with title, client, value/paid, status, deadline, and actions (Edit / Delete).
  * **Create commission** – Modal/form to create a new commission: title, service, client (dropdown of non-admin users), value, paid, dates, notes, status, phase, completion, files, roadmap.
  * **Edit commission** – Same fields; can change assigned client, upload files (via `/api/commissions/upload`), and manage file list.
  * **Delete commission** – With confirmation.
  * Client dropdown in create/edit is filled from `/api/users` (only non-admin users).

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2FArCoudof7wrOWeqBsXb5%2Fimage%204%20(1).png?alt=media&amp;token=a903a305-c6d9-4346-a436-d5f0a23bf84b" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2FPLmpiiMDOCJCyknqiO1c%2Fcommission-admin2%20(1).png?alt=media&amp;token=6009043f-2f35-40b2-8c21-102e05242de0" alt=""><figcaption></figcaption></figure>

***

### Commission (client view)

* **URL:** `/commission.html`
* **Who:** Users who have at least one **assigned commission** (in `assignedCommissionIds`) or Commissions permission.
* **What:**
  * Shows **only the commission(s)** assigned to that user (or where they are the client). API filters by `assignedCommissionIds` and `clientId`.
  * If one commission: single view. If several: a **selector** to switch between them.
  * Displays title, service, dates, value, paid %, phase, completion, notes, files, roadmap. Read-only for clients.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2FVarsFGepZkM1HSwZj7Qo%2Fimage%2015.png?alt=media&amp;token=8f5c61ee-ae60-47b6-af6a-fdbe39e0a16e" alt=""><figcaption></figcaption></figure>

***

### Lists (boards)

* **URL:** `/list.html`
* **Who:** Admins, users with **Lists** permission, or users with at least one **assigned board** (`assignedBoardIds`).
* **What:**
  * **Boards** – Each board is a “project” or list container. User sees only boards they are assigned to (or all if admin/lists full).
  * **Board tasks** – Per-board tasks with title, status, priority, date, tag. CRUD via API: create, edit, delete tasks.
  * Sidebar lists boards; main area shows tasks for the selected board.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2Fxg8zXVZeULhGrbcQMeRW%2Fimage%208%20(1).png?alt=media&amp;token=2680c226-9b4c-42f0-bc13-fc04fc64202b" alt=""><figcaption></figcaption></figure>

***

### Calendar / Todo

* **URL:** `/todo.html`
* **Who:** Admins or users with **Calendar** permission.
* **What:** Calendar/todo view for **global tasks** (from the `Task` model, not board tasks). Create, edit, delete tasks with title, date, color.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2Fq4aRgD47WsYhUOzyIVv4%2Fimage%203%20(3).png?alt=media&amp;token=c17d77e7-4bc2-44bf-ac20-086106e36770" alt=""><figcaption></figcaption></figure>

***

### Customers

* **URL:** `/customer.html`
* **Who:** Admins or users with **Customers** permission.
* **What:** List and management of **users** in a “customer” context (e.g. view users, assign boards/commissions). Depends on `/api/users` and permission checks.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2Fj7zWQkptemqQ3d1Aiikg%2Fimage%2023.png?alt=media&amp;token=5ef10498-fecc-4351-974e-5f311bf533b5" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2F5ZXc8eub3htGmaF3Fbir%2Fcustomer-modal%20(1).png?alt=media&amp;token=a9ed748b-fb97-4c62-be97-e6001c4a8fc0" alt=""><figcaption></figcaption></figure>

***

### Log (audit log)

* **URL:** `/log.html`
* **Who:** Admins or users with **Log** (view) permission.
* **What:** **Audit log** of actions (e.g. commission created/updated/deleted, payment created, user permissions updated). Fetched from `/api/logs`. Read-only.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2FUuQoucSevgiJyAKbO8Nz%2Fimage%207%20(1).png?alt=media&amp;token=93fe459c-5401-4ee1-90e1-d20dc67f45dc" alt=""><figcaption></figcaption></figure>

***

### Settings

* **URL:** `/settings.html`
* **Who:** Any logged-in user (for profile); **admin settings** are restricted to admins.
* **What:**
  * **Profile** – User can update their profile (e.g. username, avatar). Optional **banner** upload (stored on disk as `uploads/banners/` or, on Vercel, in Vercel Blob if `BLOB_READ_WRITE_TOKEN` is set).
  * **Admin settings** – Theme color, secondary color, logo text, logo URL, optional Discord OAuth (client id/secret/redirect), SMTP (host, port, user, from), etc. Stored in `AdminSettings` and applied to login/public pages.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2FqDl7WGsBOhiL4v9KrL2Q%2Fimage%209.png?alt=media&amp;token=b4bfc127-ffc6-4d12-adc9-ce973828d21d" alt=""><figcaption></figcaption></figure>

***

### Notifications

* **In-app:** Navbar shows a notifications dropdown. Users get notifications (e.g. “Your commission assignments have been updated”). Mark as read via API.
* **Broadcasts:** Admins can send **broadcasts** (title + message, optional email + push to panel). Stored in `Broadcast`; panel can show them and optionally send email if SMTP is set.

<figure><img src="https://1361695369-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqwRQt0eAcidEjh6bZsme%2Fuploads%2FiX9lbnQNs9TmMlpuGZ8m%2Fnotifs%20(1).png?alt=media&amp;token=878fd859-319d-457e-942d-f03ae666e1f0" alt=""><figcaption></figcaption></figure>

***

### File uploads

* **Commission files** – In commission create/edit (admin), files are uploaded to `/api/commissions/upload`. Stored under `uploads/` by filename; returned as a list of `{ name, size, url }` and saved in the commission’s `files` field (e.g. as text or structured data).
* **User banner** – Profile banner upload goes to `/api/users/me/banner`. On Vercel with Blob, files go to Vercel Blob; otherwise to `uploads/banners/`. Served under `/static/:file` for banners.

***

### Static assets and pages

* **HTML pages** – Served from `pages/` (e.g. `login.html`, `client-dashboard.html`, `commission.html`). Protected routes require a valid session; otherwise redirect to login or client-dashboard depending on role/permissions.
* **Public assets** – CSS, JS, images from `public/` (e.g. Tailwind build, `panel-toasts.js`, `style.css`).
* **Tailwind** – Built from `src/tailwind.css` into `public/tailwind.css` during `npm run build`.
