How kotajakarta/wilindo works
Wilindo is a full-stack Indonesian administrative-region registry: public hierarchical lookup and search, address selection, and API-key-protected CRUD. The main flow runs from a browser or API consumer through Express routes and service logic to MariaDB. A separate BPS extraction-and-sync branch refreshes registry data. Several client pages and API wrappers are represented from the README and tree; their internal wiring is not fully evidenced by sampled source.
Main entry points: wilayah.routes.ts Region routes · AddressPage.tsx Address page · app.ts Express application · App.tsx Client app router
Components 22
Web client
- Client app router
client/src/App.tsx - Address page
client/src/pages/AddressPage.tsx - Address selectors
client/src/components - Hierarchy selection
client/src/hooks/useWilayahSelection.ts - Admin page
client/src/pages/AdminPage.tsx - Admin manager
client/src/components/WilayahAdminManager.tsx - Admin level rows
client/src/components/AdminLevelRow.tsx - API guide
client/src/pages/ApiDocsPage.tsx - Read API client
client/src/api/wilayah.ts - Admin API client
client/src/api/wilayahAdmin.ts
HTTP API
- Express application
server/src/app.ts - Region routes
server/src/wilayah.routes.ts - API-key check
server/src/auth.ts
Region registry
- Region service
server/src/wilayah.service.ts - DB connection
server/src/db.ts - MariaDB registry
BPS data refresh
- BPS extractor
bps/bps.js - BPS source
- Extracted region data
bps - Registry sync
server/sync-bps.js
Other components
- Address user
- API consumer
Connections 25
- Address user → Address page: uses
- Address user → Admin page: manages
- API consumer → Express application: requests API
- Client app router → Address page: routes to
- Client app router → Admin page: routes to
- Client app router → API guide: routes to
- Address page → Address selectors: renders
- Address page → Hierarchy selection: tracks levels
- Address selectors → Read API client: loads regions
- Admin page → Admin manager: renders
- Admin manager → Admin level rows: renders levels
- Admin level rows → Read API client: loads regions
- Admin level rows → Admin API client: mutates regions
- Read API client → Express application: fetches
- Admin API client → Express application: fetches
- Express application → Region routes: mounts API
- Region routes → API-key check: checks mutations
- Region routes → Region service: calls
- Region routes → DB connection: passes pool
- Region service → MariaDB registry: queries
- DB connection → MariaDB registry: connects
- BPS extractor → BPS source: fetches levels
- BPS extractor → Extracted region data: writes hierarchy
- Registry sync → Extracted region data: reads data
- Registry sync → MariaDB registry: compares and updates