Every visitor sees the same public, read-only site — Home, Public Records,
the Penal Code, the DOJ Library, and Careers. Anyone can browse those without an account. The
logged-in dashboard is different for every role: after you sign in, the
#dashboardSection shell swaps in a role-specific stack of panels
(renderDashboardByRole() in js/dashboard.js).
Login is passcode-based and only offered from an in-city DOJ terminal or the
CrestWood phone app — a plain browser visit never even shows a passcode field. The header title
reads Name (role), with a mail, settings, and notification bell to its right.
statusgreen = active / approved / paidstatusamber = pending / duestatusred = denied / overdue / warrantgold badge = a capability the role holdsflag = a gap / dead code in the real system
Everything below is a faithful mock of the real panels each role
renders, filled with invented records (case numbers, names, dates). Real labels, button text, section
titles, and access rules are preserved from the source.
Master Clerk holds manage_users_limited: approve/deny, role change (below judge), reset, suspend — but not create/delete users (that needs full manage_users).
📥 Pending Filings Refresh
Case Filing Submitted by Ava Whitmore · city window 07/19/2026 2:41 PM
›
Marriage Registration Submitted by clerk1 · terminal 07/19/2026 11:05 AM
The DA/prosecutor use the
Cole-Law-styled in-dashboard office layout (js/lawoffice.js) — their DOJ
Notifications card lives inside that layout, so the generic one is suppressed.
Office of the District Attorney SASBA LICENSED · SAN ANDREAS
District Attorney · Vivian Marsh
Manage Practice & Team →
🔔 DOJ Notifications
New defense request from Ava Whitmore (indigent) 07/19/2026
new
📅
Court Calendar
Hearings & schedule
📖
Study & Reference
DOJ Library & cheat sheet
🎓
Skill Building
Training & bar exam
📝
Forms & Filings
File without the clerk
📊 My Records
18
Cases on File
7
Open Matters
📅 Court Calendar + Add
CourtHearing — CW-1042 Courtroom 1 · Hon. Marcus Vale
2026-07-20 18:00
📁 Client Files + New ClientRefresh
CW-1042 · The State v. Ricky Lafleur In Trial
Criminal · Filed 07/12/2026 · Next court: 07/20/2026 Open full file & briefcase →
code note A "Case Files — Prosecution" variant exists in lawoffice.js but isProsecution is hard-coded false, so even the DA currently sees "Client Files".
⚙️ Actions
Recusal Request
⚙️ Actions (DA)
File ChargesRequest Evidence
👥 Public Defenders Refresh
Ava Whitmoreindigent Requests counsel for CW-1090 · 07/19/2026
Select PD ▾
AppointNotify PD Office
The PD assignment queue is DA-only (cap pd_queue). A prosecutor gets the same File Charges / Request Evidence actions but not this queue.
submit_recusalBar Exam requirednote the register dropdown value is attorney; the live role is private_attorney
Private-practice roles get a light DOJ
dashboard here — their real workspace is the full-page DOJ LAW OFFICE takeover (the Cole-Law-styled SPA
served by lawsites/index.php), opened by the button below.
🔔 DOJ Notifications
Judge scheduled a hearing on your client's case CW-1055 07/18/2026
new
⚖️ Open the DOJ LAW OFFICE →
Your practice, clients & filings
⚙️ Actions
Recusal Request
Below: the reused Citizen panel (attorneys are not "citizens" for filing, but keep the citizen self-service cards)
🧾 My Invoices Refresh
Invoice #
Description
Amount
Status
Issued
INV-3288
Bar renewal
$2,000
paid
07/10/2026
Pay unpaid invoices in person at the city service window at City Hall (the Invoices desk).
🏠 My Property Bills Refresh
Due: $0 · Overdue: $0 · Paid (history): $1,400
Read-only — pay property bills in-game with /bills.
🎓 Examinations & Study
Take an ExaminationStudy — Bar ExamStudy — DMV Written Test
Driver's Handbook & Bar Study Guide →
✔️ Licensing
Apply for a License
✍️ File with the DOJ (Self-Representation)
File a CaseFile a MarriageFile a Property DeedFile a Professional Registration
📁 My Cases Refresh
CW-1055 — Civil Pre-Trial · Counsel: Diane Cortez
Represent Myself
Jordan Blake (public defender)
✉️
⚙️
🔔2
submit_recusalBar Exam required
Same law-office branch as a private
attorney, plus one extra action button.
🔔 DOJ Notifications
DA flagged open defense request DR-14 for appointment 07/19/2026
new
⚖️ Open the DOJ LAW OFFICE →
Your practice, clients & filings
⚙️ Actions
Recusal RequestSubmit Criminal Report to DA
Reused Citizen panel (invoices, bills, exams, licensing, self-file, my cases)
🧾 My Invoices Refresh
You have no invoices.
📁 My Cases Refresh
CW-1090 — Criminal Appointed · Client: Ava Whitmore
Represent Myself
Mina Sato (paralegal)
✉️
⚙️
🔔0
review_filings
Heads-up — two discrepancies found in the real code:
dead code A dedicated "Paralegal — Filing Tools" panel (Case/Marriage/Property/Professional buttons) is written in dashboard.js, but paralegal is caught earlier by the LAW_OFFICE_ROLES branch, so that panel never renders.
unwired The Recusal Request button renders for a plain paralegal but its click handler is only attached for attorney/PD roles — so it does nothing here (and paralegals lack the submit_recusal cap anyway).
What actually renders: the law-office
branch — DOJ LAW OFFICE button + Actions + the reused Citizen panel.
🔔 DOJ Notifications
No new notifications.
⚖️ Open the DOJ LAW OFFICE →
Your practice, clients & filings
⚙️ Actions
Recusal Request (unwired)
🧾 My Invoices
You have no invoices.
✍️ File with the DOJ (Self-Representation)
File a CaseFile a MarriageFile a Property DeedFile a Professional Registration
Officer J. Boyd (police)
✉️
⚙️
🔔3
mdtbackground_checks— no Daily Tasks, no Scheduling card