Bikun Admin - Documentation
| Document Status | ||
|---|---|---|
| Document Owner | Product Engineering 2026 | Product Engineering 2026 |
| Contributors | Ari Darrell Muljono | Ari Darrell Muljono |
| Project Links | https://github.com/BikunApp/bikun-admin | https://github.com/BikunApp/bikun-admin |
| Project Links | admin.bikun.ui.ac.id | admin.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] |
| Team | Theodore Kevin Himawan | theodore.kevin@ristek.cs.ui.ac.id |
| Team | Ari Darrell Muljono | darrell@ristek.cs.ui.ac.id |
| Team | Grace Karina | gracekarin@ristek.cs.ui.ac.id |
| Team | Yeshua Marco G. Manurung | marco@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
| Layer | Paths | Responsibility |
|---|---|---|
| Master Service | master/src/app/main.py | Polls 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 Service | slave/src/app/main.py | FastAPI 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)
| Key | Description | Default (Dev) | Sensitive? |
|---|---|---|---|
| APP_PORT | Internal port the service listens on | 8080 | No |
| DB_URL | Connection string for PostgreSQL | — | Yes |
| LOG_LEVEL | Verbosity of logs (debug, info, warn, error) | debug | No |
| API_KEY_THIRD_PARTY | Credential for [External Service] | — | Yes |
🙋Questions
🗒 List of frequently asked questions or question that need to be answered that is related to this initiative ..