Skip to main content

Bikun Admin - Documentation

Document Status
Document OwnerProduct Engineering 2026Product Engineering 2026
ContributorsAri Darrell MuljonoAri Darrell Muljono
Project Linkshttps://github.com/BikunApp/bikun-adminhttps://github.com/BikunApp/bikun-admin
Project Linksadmin.bikun.ui.ac.idadmin.bikun.ui.ac.id
Project Links[Monitoring Dashboard][Monitoring Dashboard]
Project Links[API Documentation][API Documentation]
Project Links[Other Related Doc/Link][Other Related Doc/Link]
TeamTheodore Kevin Himawantheodore.kevin@ristek.cs.ui.ac.id
TeamAri Darrell Muljonodarrell@ristek.cs.ui.ac.id
TeamGrace Karinagracekarin@ristek.cs.ui.ac.id
TeamYeshua Marco G. Manurungmarco@ristek.cs.ui.ac.id

🔎 Background

Overview

Provide a 2–3 sentence high-level description of what this service does and the business problem it solves.

Stakeholders

  • Users: [e.g., PM, WebDev, DSAI, …]
  • Upstream Dependencies: [Services this service calls]
  • Downstream Consumers: [Services that call this service]

Scope & Boundaries

  • In Scope: Specific microservices, database schemas, or API endpoints to be modified.
  • Out of Scope: Migration of legacy data, frontend refactoring (unless specified), or third-party integrations not listed here.

⚙️ Architecture & Design

System Diagram

Insert a link to the Lucidchart/Miro/Excalidraw source file here. If possible, please create a system diagram related to this service.

Architecture Decisions (ADRs)

  • Language/Framework: Next.js, TypeScript, JavaScript, CSS
  • Database: [e.g., PostgreSQL for relational data, Redis for caching]
  • Communication: [e.g., Synchronous gRPC, Asynchronous via Kafka]

💻Technical Specifications

API Documentation

Insert API documentation here

Data Model/Schema

Briefly describe the core entities. If applicable, include a link to the ERD (Entity Relationship Diagram).

Project Structure

📦bikun-admin
┣ 📂.git
┃ ┣ 📂hooks
┃ ┃ ┣ 📜applypatch-msg.sample
┃ ┃ ┣ 📜commit-msg.sample
┃ ┃ ┣ 📜fsmonitor-watchman.sample
┃ ┃ ┣ 📜post-update.sample
┃ ┃ ┣ 📜pre-applypatch.sample
┃ ┃ ┣ 📜pre-commit.sample
┃ ┃ ┣ 📜pre-merge-commit.sample
┃ ┃ ┣ 📜pre-push.sample
┃ ┃ ┣ 📜pre-rebase.sample
┃ ┃ ┣ 📜pre-receive.sample
┃ ┃ ┣ 📜prepare-commit-msg.sample
┃ ┃ ┣ 📜push-to-checkout.sample
┃ ┃ ┣ 📜sendemail-validate.sample
┃ ┃ ┗ 📜update.sample
┃ ┣ 📂info
┃ ┃ ┗ 📜exclude
┃ ┣ 📂logs
┃ ┃ ┣ 📂refs
┃ ┃ ┃ ┣ 📂heads
┃ ┃ ┃ ┃ ┗ 📜main
┃ ┃ ┃ ┗ 📂remotes
┃ ┃ ┃ ┃ ┗ 📂origin
┃ ┃ ┃ ┃ ┃ ┗ 📜HEAD
┃ ┃ ┗ 📜HEAD
┃ ┣ 📂objects
┃ ┃ ┣ 📂info
┃ ┃ ┗ 📂pack
┃ ┃ ┃ ┣ 📜pack-d1936d4a3425e9f69f47b2243a5eccde7da136c2.idx
┃ ┃ ┃ ┣ 📜pack-d1936d4a3425e9f69f47b2243a5eccde7da136c2.pack
┃ ┃ ┃ ┗ 📜pack-d1936d4a3425e9f69f47b2243a5eccde7da136c2.rev
┃ ┣ 📂refs
┃ ┃ ┣ 📂heads
┃ ┃ ┃ ┗ 📜main
┃ ┃ ┣ 📂remotes
┃ ┃ ┃ ┗ 📂origin
┃ ┃ ┃ ┃ ┗ 📜HEAD
┃ ┃ ┗ 📂tags
┃ ┣ 📜config
┃ ┣ 📜description
┃ ┣ 📜HEAD
┃ ┣ 📜index
┃ ┗ 📜packed-refs
┣ 📂.github
┃ ┗ 📂workflows
┃ ┃ ┗ 📜deploy.yml
┣ 📂components
┃ ┣ 📂AuthPageLoader
┃ ┃ ┗ 📜index.tsx
┃ ┣ 📂BikunDataTable
┃ ┃ ┣ 📜BikunTableContainer.tsx
┃ ┃ ┣ 📜BikunTableDataRow.tsx
┃ ┃ ┣ 📜BikunTableModal.tsx
┃ ┃ ┗ 📜index.ts
┃ ┣ 📂BikunRotationTable
┃ ┃ ┣ 📜BikunRotationContainer.tsx
┃ ┃ ┣ 📜BikunRotationDataRow.tsx
┃ ┃ ┗ 📜index.ts
┃ ┣ 📂LapHistoryTable
┃ ┃ ┣ 📜ActiveLapViewer.tsx
┃ ┃ ┣ 📜index.ts
┃ ┃ ┣ 📜LapHistoryContainer.tsx
┃ ┃ ┗ 📜LapHistoryDataRow.tsx
┃ ┗ 📂Layout
┃ ┃ ┗ 📜index.tsx
┣ 📂hooks
┃ ┣ 📜useWindowBreakpoints.ts
┃ ┗ 📜useWindowSize.ts
┣ 📂lib
┃ ┗ 📂seo
┃ ┃ ┣ 📂default
┃ ┃ ┃ ┣ 📜config.ts
┃ ┃ ┃ ┗ 📜index.tsx
┃ ┃ ┣ 📜index.ts
┃ ┃ ┗ 📜seo.tsx
┣ 📂pages
┃ ┣ 📂api
┃ ┃ ┣ 📜bus-rotations-with-laps.ts
┃ ┃ ┣ 📜delete-bikun.ts
┃ ┃ ┣ 📜edit-bikun.ts
┃ ┃ ┣ 📜get-all-bus-status.ts
┃ ┃ ┣ 📜lap-history.ts
┃ ┃ ┣ 📜login.ts
┃ ┃ ┣ 📜verify.ts
┃ ┃ ┗ 📜view-bus-rotations-by-date.ts
┃ ┣ 📂bus-details
┃ ┃ ┗ 📜[imei].tsx
┃ ┣ 📜index.tsx
┃ ┣ 📜login.tsx
┃ ┣ 📜rotations.tsx
┃ ┣ 📜_app.tsx
┃ ┗ 📜_document.tsx
┣ 📂public
┃ ┣ 📜favicon.ico
┃ ┣ 📜logo-hive.svg
┃ ┣ 📜logo-ristek.svg
┃ ┣ 📜next.svg
┃ ┣ 📜og-image.jpeg
┃ ┣ 📜robots.txt
┃ ┗ 📜vercel.svg
┣ 📂styles
┃ ┗ 📜globals.css
┣ 📂utils
┃ ┣ 📜encodeFormData.ts
┃ ┗ 📜formatDate.ts
┣ 📜.env.example
┣ 📜.eslintrc.json
┣ 📜.gitignore
┣ 📜next.config.js
┣ 📜package-lock.json
┣ 📜package.json
┣ 📜pnpm-lock.yaml
┣ 📜postcss.config.js
┣ 📜README.md
┣ 📜tailwind.config.js
┗ 📜tsconfig.json

Components

LayerPathsResponsibility
Master Servicemaster/src/app/main.pyPolls MCEasy API for vehicle locations and status
Implements adaptive polling rate (5.0s - 60.0s) based on data changes
Publishes updates to Redis channel "bikun"
Uses bearer token authentication for API access
Slave Serviceslave/src/app/main.pyFastAPI WebSocket server
Subscribes to Redis channel "bikun"
Maintains active WebSocket connections
Broadcasts vehicle updates to all connected clients
Implements connection management and error handling

☁️ Operational Playbook

Infrastructure

  • Cloud Provider: [e.g., AWS/GCP/Vercel/Pusilkom]
  • Link: [Link to deployment]

Environment Variables

(example)

KeyDescriptionDefault (Dev)Sensitive?
APP_PORTInternal port the service listens on8080No
DB_URLConnection string for PostgreSQLYes
LOG_LEVELVerbosity of logs (debug, info, warn, error)debugNo
API_KEY_THIRD_PARTYCredential for [External Service]Yes

🙋Questions

🗒 List of frequently asked questions or question that need to be answered that is related to this initiative ..