---
title: "Admin"
url: https://docs.growamal.com/en/using-the-app/admin/
language: en
---

# Using the App — Admin

**Admins provision.** An administrator sets up the structure everyone else works inside —
organisations, schools, and classes — and the users and roles that fill them. Admins also review
benchmark profiles and immutable audit logs. This guide walks the admin screens in setup order.

## Admin home

The home screen is the admin landing; the navigation rail gives you every admin area.

![Admin home](https://docs.growamal.com/screenshots/admin/admin-home.png)

## Organisations

The **organisations** screen lists the organisations you manage and lets you create a new one.

![Organisations](https://docs.growamal.com/screenshots/admin/admin-organizations.png)

**How to:**

1. Review the existing organisations.
2. Click **new organisation** to open the create form.
3. Fill in name, slug, country, and the pilot flag, then save.

![Create an organisation](https://docs.growamal.com/screenshots/admin/admin-org-create.png)

A delete control is available per row and always asks for confirmation before anything is removed.

## Users

The **users** screen lists everyone in scope and lets you create new users.

![Users](https://docs.growamal.com/screenshots/admin/admin-users.png)

**How to:**

1. Review the user list.
2. Click **new user** to open the create form.
3. Choose a role, enter the Arabic name, email, and a password (8+ characters), pick the
   organisation, and set the rank, then save.

![Create a user](https://docs.growamal.com/screenshots/admin/admin-user-create.png)

## Roles

The **roles** screen is a read-only matrix of permission codes against the personas — a clear
reference for who can do what.

![Roles matrix](https://docs.growamal.com/screenshots/admin/admin-roles.png)

## Open training on a teacher's behalf

Teachers open «تدريب اليوم» themselves. During the pilot, Amal staff and org admins can open it for a class, a support
group, or children picked from a class from **«فتح التدريب»**, always **on behalf of a named teacher** (a teacher of the
class, or the group's owner). A teacher can never send on another teacher's behalf. Pick the target, the teacher, and until when (this lesson / today until the end of the school day / until a
time); the confirm step says the send is recorded as Amal's on her behalf, and it appears in her sessions with
«فتحه فريق أمل نيابةً عن …». «متابعة التدريب» opens the send's roster (statuses and counts only) with «إنهاء التدريب
الآن». Each staff send writes one audit event, `training_activated_on_behalf`.

## Measure screens

On the initial-screen blueprint page (group «المعايير», `/admin/diagnostic-blueprint`, super-admin) the cell dialog carries a **«طريقة الشاشة»**
switch: «مهارات — ٣ أسئلة لكل مهارة» (the legacy skill list) or **«مقاييس الشاشة»**. In measure mode you pick the grade's
measures (digital or teacher-scored, question count, scoring table), and a line names the ready form that will serve
them or warns «لا يوجد نموذج منشور لهذا الصف بعد». A provisional scoring table needs an acknowledgment before «حفظ»
and is never published at the global level — publish it per organisation or school. Refusals are explained in Arabic,
naming the measure.

## Taqyeem builder

The **«بناء التقييم»** page (group «المعايير», `/admin/taqyeem`, true super-admin only; an organisation admin sees the «super-admins only» card) shows the sitting exactly as a first-time child sits it: the same questions, in the same order, on the student's own stage.

1. **Scope.** Pick the organisation, then optionally a school (the cell resolves school → organisation → global, so a grade with no school row inherits its organisation's row).
2. **Grade × window.** A 4 × 3 grid (Grades 1–4 × BOY / MOY / EOY). Each tile carries its source («عام» / «مؤسّسة» / «مدرسة» / «موروث») and the measure count. An unset tile links to the initial-screen blueprint to set the cell up.
3. **Preview.** The warm-up card, then the questions on the student stage (as «طالب تجريبي»), the passage beside its question, the «استراحة قصيرة» screen where it really falls, then the end screen. The map strip above the stage draws one dot per question grouped by measure; click a dot to jump. «السابق» / «التالي» step; from a rendered question the arrow keys step with Shift (plain arrows belong to the child's option navigation). The page URL can be pasted as is (`?org=…&grade=3&window=BOY&step=7`) and opens on that question.

**Teacher view** (the toggle beside the stage) shows, per question: measure, pattern, position in the form, correct answer, id, and the links «افتح في بنك الأسئلة» and «تعديل النصّ». The note **«ترتيب الخيارات يختلف من طالب لآخر»** means the questions and their sequence are fixed, while the order of options inside a question (and of «رتّب الكلمات» tiles) differs per child.

**Editing a question.** «تعديل» opens the question-bank editor in a modal over the page. The **«نصّ السؤال»** field is the text the child sees (the diacritized one when present); saving updates the three stem surfaces together (plain / normalised / diacritized; each on its own under «متقدّم»). After «حفظ» the preview returns to the same question with the new text. The badge **«عام — يؤثر على كل المؤسسات»** marks a question of a global form: the edit reaches every organisation using that form (the partner's first organisations share the forms on purpose). Passage editing stays on the passages page.

**Measures in this cell.** The button opens the same cell dialog as the initial-screen blueprint, pre-set to the current measures; remove or re-add a measure and «حفظ», and the question count updates on the tile and in the preview. The number of questions inside a measure is fixed (the scoring table sets it), so no question is added to or removed from a measure; what changes is which measures are on.

**Reordering.** «إعادة الترتيب» on the map strip moves a question inside its measure («قبل» / «بعد» or drag); moving across measures is refused. Every move is recorded as an edit of the question (its revision history).

**Special states.** «لا يوجد نموذج منشور» means no ready form holds every measure's question count for the cell (the page names the short measure); a cell whose measures are all oral is refused exactly as a real start is; a legacy cell (skills, not measures) shows each skill's question pool with the note «الترتيب غير ثابت», because the real sitting picks from it at serve time.

## Word lists

The **«قوائم الكلمات»** page (group «المعايير», `/admin/word-lists`, true super-admin only; an organisation admin sees the «super-admins only» card) shows the oral word lists a child reads to the teacher — familiar words and pseudowords — per grade and window, as the teacher sees them and as they print for the child, and lets you edit, retire, restore and create lists without a developer round trip.

1. **Scope.** «الإعداد العامّ» (lists every organisation sees; the current lists are all global) or one organisation. An organisation's list takes precedence over the global one in the same cell.
2. **Matrix.** One row per screened grade (2–4), one column per type × window (BOY / MOY / EOY). Each tile shows the list the teacher **actually gets** for that cell (title, version, word count, status): the window's own list, else the «all windows» list. An empty tile («لا قائمة بعد — أنشئ واحدة») opens create on that cell.
3. **List.** Selecting a tile shows **the teacher's grid** (the same cells, words per row and reading-convention note), **the child's sheet** (the same print file, with «طباعة ورقة الطالب»), and «ملء الشاشة» to show both full screen. The rail carries scope, id, window, convention, notes and **versions** (earlier versions with status and use count).

**Editing.** «تعديل» opens a modal with title, window, words (one per line, fully diacritized), words per row, reading convention and notes. The list is checked as you type with the import's own rules: word count within the grade's range, an undiacritized word (named by position), a word repeated in the list or in the grade's other-type list (named), banned vocabulary; a word shared with another grade is a **notice** that does not block saving. Saving an **operational** list creates a **new operational version** and retires the previous one (recorded results stay on their version); a draft saves in place; a retired list saves as a new draft to publish afterwards.

**Retire and restore.** «إيقاف» hides the list from teachers; if it is the cell's only operational list the page warns that the teacher will see «لا توجد قائمة كلمات لهذا الصفّ بعد». «تفعيل» brings a retired version back (refused while another version of the same list is operational). «نشر» publishes a draft and retires the previous operational version.

**Creating.** «قائمة جديدة في هذه الخليّة» (or the empty tile) opens the same modal on the chosen grade, type and window; «نشر الآن» is on by default so the scope's teachers get it on save. The list id is generated.

## Benchmark profiles

The **benchmark profiles** screen lists the per-country, per-skill benchmark profiles. Each row
has a history dialog. For an organisation admin this screen is **read-only** (editing and
activating benchmarks is a super-admin capability).

![Benchmark profiles](https://docs.growamal.com/screenshots/admin/admin-benchmark-profiles.png)

**How to:**

1. Use the filters to narrow the list.
2. Click a row's **history** to see its change record.

![Benchmark profile detail](https://docs.growamal.com/screenshots/admin/admin-benchmark-edit.png)

The companion **benchmark audit log** shows immutable creation entries — an append-only record.

![Benchmark audit log](https://docs.growamal.com/screenshots/admin/admin-benchmark-audit-log.png)

## Question bank — word ↔ meaning matching

The question bank (`/admin/questions`) edits and live-previews every question. A **«اسحب كل كلمة إلى معناها»**
question (drag each word to its meaning) has its own template of the same name. The editor shows **الكلمات
ومعانيها**: one row per word from the passage and its meaning, **أضف زوجًا** (up to 6 pairs) and **أضف معنى
إضافيًا** — extra meanings that match no word. The server's rules show under the rows and **حفظ** stays off until
they hold: 2 to 6 pairs, no repeated word or meaning, extra meanings different from the real ones, at most 8 meanings.
The question needs a linked passage. The preview grades the student's board: every word on its meaning = «إجابة
صحيحة».

## Audit log

The **audit log** is an org-scoped, immutable record of sensitive events, including security
boundary violations and platform operator scope-override actions.

The log is secret-free by design: raw IP addresses, user agents, request IDs, and the content of
any blocked value are never returned. Only the character-length of a blocked value
(`attemptedValueLength`) appears in each row, so you can see that an attempt occurred without the
log itself becoming a source of sensitive data.

![Audit log](https://docs.growamal.com/screenshots/admin/admin-audit-log.png)

**How to:**

1. Read the records. Each entry is immutable; nothing can be edited or deleted.
2. Use the filter bar to narrow by:
   - **Event type**: `security_attempt` (a forbidden-value or sensitive-note attempt) or
     `super_admin_bypass` (a platform operator reading across organizations).
   - **Actor**: enter a user ID to show only that actor's events.
   - **Date range**: `from` and `to` ISO date bounds (both inclusive; an unparseable bound is
     silently dropped rather than returning an error).
3. Page through results using the pagination controls (up to 200 rows per page, default 50).

> **Note:** A super-admin (platform operator) can see records across all organizations. Every time a
> super-admin reads this page, the access is itself appended as a bypass-log entry visible to other
> super-admins.

## Gamification (replay)

The **gamification** screen is a drift / replay panel: query a student to inspect their
mastery-event history and, if needed, run a deterministic replay.

![Gamification replay](https://docs.growamal.com/screenshots/admin/admin-gamification.png)

**How to:**

1. Enter a student ID and search.
2. Review the drift / replay panel; use **run replay** if a deterministic re-computation is needed.

## Integrations

![Integrations](https://docs.growamal.com/screenshots/admin/admin-integrations.png)

> **Note:** The **integrations** area is marked **coming soon** and is intentionally disabled in the sidebar
> until it is ready.

## LMS import

The **LMS import** wizard connects a Google Classroom account, pulls course and roster data, and
creates Amal users and class enrollments in one transaction.

**How to:**

1. Go to **Admin** and select **LMS import** from the navigation.
2. On the **connect** step, authorise your Google Classroom account.
3. On the **select** step, choose the courses you want to import.
4. On the **review** step, inspect each row and resolve any conflicts (name mismatches, duplicate
   emails) before continuing.
5. On the **confirm** step, review the summary counts, then commit.
6. The **done** screen confirms the import. Users, enrollments, and teacher assignments are all
   created in a single transaction.

> **Note:** Committing an import creates users, class enrollments, and ClassTeacher assignments together. If
> any row fails validation the whole batch is rejected and nothing is written.

## On phone and tablet

- On a **wide screen** the navigation rail sits on the right.
- On a **phone or tablet** dense tables (users, roles, benchmark profiles, audit log) sit inside
  contained horizontal-scroll regions, so the page itself never overflows — you scroll the table,
  not the whole screen.
