Bank Rakyat Indonesia
BRI
SR
Siti Rahma
ITA · Auditor Senior
PN 00081234
Portal
HOMEBerandaGLOSSGlossary
Core Module
AUAudit UniversePATPerencanaan Audit TahunanEWPElectronic Working PaperRPMRealisasi Perbaikan Manajemen
Module ICOFR
AU-IAudit Universe ICOFRPAT-IPAT ICOFREWP-IEWP ICOFRRPM-IRPM ICOFR
Support Module
REFReferenceDASHInsight DashboardCATCatalogLHALHA AuditeePGPlayground
Referensi
GUIDEUser Guide
DSDesign System
Referensi UI & engineering
DSAdmin · SKAI

Design System

Fondasi visual, komponen UI, platform ops, dan standar kualitas untuk AMS PAI-TI.

3
Siti Rahma
ITA · Auditor Senior
SR

Halaman ini merangkum fondasi desain dan keputusan engineering yang dipakai di AMS PAI-TI.

Fondasi visualLayoutKomponenLoadingPlatform opsConnection poolCode qualityPola UX
FrameworkNext.js 15 · App Router
UI kitBootstrap 5 · Bootstrap Icons
Rich textQuill 2 (Snow)
Data tableAMS table · DataTables 3
Select / tagsSelect2 4 · searchable
ChartsChart.js · react-chartjs-2
Loading UXSkeleton · lazy dynamic
Code qualitySonarQube · Quality Gate
Runtime opsCache · Rate limit · Proxy
Type bodyInter
Type headingInstrument Sans
FeedbackSweetAlert2
BrandBRI Nusantara · Cakrawala · Mentari
01

Fondasi visual

Palet BRI, netral, status semantik, tipografi, dan kontrol dasar.

Brand · BRI blues
Nusantara Blue#0857C3--ams-nusantaraPrimary · CTA · brand
Cakrawala Blue#307FE2--ams-cakrawalaAccent · links · info
Mentari Blue#71C5E8--ams-mentariHighlight · soft accents
Netral & permukaan
Ink#0B1F33--ams-ink
Ink soft#334155--ams-ink-soft
Muted#64748B--ams-muted
Surface#F4F8FC--ams-surface
Panel#FFFFFF--ams-panel
Border#E2EAF2--ams-border
Semantik · status
Success#0F7A45#EAF7F0Final
Warning#9A6700#FFF8E8Draft
Danger#B42318#FEF3F2Open
Info#0857C3#F3F9FDBerjalan
Tipografi
Heading · Instrument Sans

AMS PAI-TI

Monitoring approval, pipeline audit, dan tenggat proyek.

Body · Inter

Platform audit TI & ICOFR berbasis Risk Control Library — terpusat, terukur, dan siap approval lintas UKA. Ukuran dasar ~14.5px / line-height 1.5.

Tombol & kontrol
EWPReviewFinal
02

Layout

Konvensi grid Bootstrap agar struktur halaman seragam dan mudah dilanjutkan.

Gunakan row / col-* untuk halaman dan form. Hindari CSS Grid baru untuk layout kolom kecuali komponen visual khusus (mis. chart embed).

row · col-md-6 · col-lg-4 · g-3
col-md-6
col-md-6
col-4
col-4
col-4
03

Komponen interaktif

Demo hidup library yang dipakai di form, daftar, dan visualisasi modul.

Rich text · Quill.js

Theme Snow · toolbar header / format / list / link — body LHA, deskripsi temuan, catatan approval.

quill@2
Memuat Quill…
Tabel custom AMS

Pola yang dipakai di list modul (Universe, PAT, EWP, …): card-table, search React, StatusBadge, table-responsive. Ringan, penuh kontrol UI, tanpa jQuery.

ams-table · React

Pilih ini bila butuh tampilan BRI-native, link detail, dan aksi toolbar yang menyatu dengan design system.

Data table · DataTables

Pola resmi DataTables + Bootstrap 5 + Responsive: table table-striped nowrap + responsive: true. Cocok untuk list admin dengan sort/length/pagination bawaan.

datatables.net@3 · responsive@4
Memuat DataTables…

Pilih ini bila butuh fitur tabel lengkap (sort multi-kolom, length menu, responsive collapse) dengan effort minimal.

Select & tags · Select2

Searchable untuk opsi panjang; multi-select / tags untuk kontrol RCL, PIC, Orgeh. Native select tetap dipakai bila opsi sedikit (< ~8). Alternatif React: react-select.

select2@4
Memuat Select2…
Chart · Chart.js

Chart in-app (bar, doughnut, line) dengan palet BRI untuk ringkasan modul. Insight Dashboard tetap memakai embed Superset / Tableau. Lazy-load agar bundle awal ringan.

chart.js · react-chartjs-2
Memuat Chart.js…
04

Loading & perceived performance

Skeleton untuk navigasi; lazy load hanya library berat agar bundle awal ringan.

Route loading

modules/loading.tsx menampilkan skeleton saat navigasi antar halaman modul.

PageReveal

Transisi lembut first paint (~160ms). Dilewati otomatis jika prefers-reduced-motion.

Lazy widget

Quill, DataTables, Select2, Chart.js, dan Embed board di-load on demand lewat next/dynamic.

Jangan lazy semua

Shell, nav, CTA, dan konten kritis di atas fold tetap eager agar TTI cepat.

Home / route
Modul / Insight
Halaman modul generik
Tabel & widget
Memuat Quill / Select2…
05

Platform ops

Performa & ketahanan untuk akses VPN / intranet BRI — tanpa ketergantungan CDN publik.

Sistem dioptimalkan end-to-end

Dari first paint UI hingga API & integrasi surrounding (IRMS, DiO, DataViz): cache, rate limit, reverse proxy internal, dan observability menjaga latensi rendah serta kapasitas terkontrol saat peak approval / reporting.

Caching berlapis

Cache aplikasi untuk referensi master, dashboard embed, dan respons API yang sering dibaca — mengurangi latensi dan beban database.

Rate limiting

Pembatasan request per user / IP / endpoint (login, approval, unduh dokumen) untuk menjaga stabilitas dan menahan abuse.

Cache aset & reverse proxy

Aset UI dilayani dari origin internal (VPN/intranet) dengan cache browser & reverse proxy — tanpa ketergantungan CDN publik.

Connection pooling

Mengelola & membatasi koneksi ke database serta layanan surrounding agar lonjakan user tidak menyebabkan connection exhaustion, overload, atau timeout.

Lazy load & code split

Library berat (Quill, DataTables, Select2, embed) di-load on demand; first paint tetap ringan.

Observability

Logging terstruktur, audit trail, dan error tracing (mis. Sentry) untuk deteksi dini gangguan produksi.

Deep dive

Connection pooling

Bukan untuk membuat database “lebih cepat”, tetapi memakai koneksi secara efisien dan mencegah connection exhaustion saat traffic naik — termasuk ke layanan surrounding (DB, Redis, API eksternal, message broker, Elasticsearch, IRMS, DiO, dll.).

Tanpa connection pooling

Contoh: 100 user concurrent — tiap request buka koneksi DB baru.

  1. 100 user
  2. 100 koneksi DB
  3. Database mulai berat
  4. Connection limit tercapai
  5. Request gagal / timeout

Padahal belum tentu 100 user butuh 100 koneksi secara bersamaan.

Dengan connection pooling

Aplikasi mengelola misalnya 20 koneksi dalam pool, dipakai bergantian.

  1. 100 user
  2. Connection pool
  3. 20 koneksi DB
  4. Koneksi dipakai bergantian
  5. Setelah selesai dikembalikan ke pool

Koneksi tidak ditutup tiap request — diambil, dipakai, dikembalikan.

Tujuan utama

Mengelola dan membatasi koneksi ke database serta service pendukung agar lonjakan jumlah user tidak menyebabkan koneksi habis, database overload, atau request mengalami timeout.

06

Code quality

Standar clean code untuk handover: static analysis, Quality Gate, lint & type-check.

Standar Quality GateStatic analysis & Quality Gate sebagai standar clean code sebelum merge / release. Kriteria yang harus dipenuhi saat scan SonarQube
  • ReliabilityTanpa blocker bug baru
  • SecurityTanpa vulnerability baru
  • MaintainabilityCode smell terkendali
SonarQube code review

Analisis static (bug, vulnerability, code smell, duplication, coverage) sebelum merge/release.

Quality Gate

Gate wajib lulus — New Code / Overall sesuai kebijakan proyek. Fail = tidak deploy.

ESLint + TypeScript

Lint & type-check di local/CI mendampingi Sonar agar isu tertangkap lebih awal.

Clean code habit

Komponen reusable, naming jelas, tanpa dead code — selaras Engineering Handbook.

07

Pola UX & prinsip

Ringkasan pola yang dipakai di portal dan modul — ditutup dengan prinsip desain.

Bootstrap grid

Layout halaman & form memakai row / col-* agar konsisten dan mudah dilanjutkan.

App shell

Sidebar sticky + scroll mask, collapse tooltip, topbar kontekstual per modul.

Hero fokus

1 CTA primer + 1 sekunder di first viewport; konten sekunder di bawah fold.

Dense list & timeline

Densitas tinggi menggantikan kartu berulang; timeline scroll match sibling.

Micro-interaction

Pipeline hover (lift/glow), dense-row chevron slide, enter delays.

Status & feedback

Badge semantik, SweetAlert2 konfirmasi, halaman 403/404 bergaya status.

Journey jelas. Alur kerja auditor dari portal ke modul inti tetap terhubung dan mudah diikuti.

Brand konsisten. Palet BRI dipakai seragam di seluruh permukaan aplikasi.

Siap produksi. Komponen (Quill, DataTables, Select2, Chart.js) di-lazy load; skeleton menjaga perceived performance; platform ops (cache, rate limit, reverse proxy) menjaga ketahanan; Quality Gate menjaga kualitas kode.

Daftar dokumen

Pola tabel custom AMS · search React · badge status

IDModulStatusPICUpdate
EWP-ICOFR-2401EWPBerjalanSiti Rahma20 Agu 2026
PAT-2026-ASQPATReviewRina Kartika18 Agu 2026
AU-2026-002UniverseDraftAndi Wijaya15 Agu 2026
RPM-2026-088RPMTindak LanjutBudi Santoso12 Agu 2026
AU-2026-001UniverseFinalASQ01 Agu 2026