Skip to main content
Back to projects

J-KOPI (Jember Kota Pintar)

A smart city app for Jember Regency. The goal was to give citizens one place to access government services and information. The challenge was making it actually useful.

FlutterGetXCodeIgniter 3MySQL
J-KOPI (Jember Kota Pintar)

Overview

Jember Regency wanted a smart city app. The idea was to centralize government services and information in one mobile platform. Citizens could access news, report issues, check public service schedules, and interact with local government — all from their phones.

The problem with most government apps is they're built for the government, not the citizens. They're clunky, confusing, and nobody uses them. The Jember team wanted something different. They wanted an app people would actually open.

I built J-KOPI as a citizen-facing platform. It aggregates information from multiple government departments, provides service access points, and includes a complaint system. The app had to be simple enough for non-tech-savvy users but comprehensive enough to be useful.

The scope was large. News feeds, event calendars, service directories, complaint tracking, push notifications, and integrations with existing government systems. The challenge wasn't just building features — it was making them coherent. A smart city app is only smart if people can figure out how to use it.

Client

The Jember Regency Department of Communication and Informatics (Diskominfo) manages the smart city initiative. They're responsible for digital transformation across local government services.

They had a clear vision: make government more accessible. But they also understood the constraints. Not everyone has a high-end phone. Not everyone has unlimited data. The app had to work for the average citizen, not just early adopters.

Features

News and announcements aggregate updates from various government departments. Citizens can browse by category, search by keyword, and get push notifications for important updates. The feed is curated to avoid spam.

Service directory lists public services with locations, hours, and contact info. Citizens can find the nearest health clinic, check when the civil registry office is open, or get directions to a government facility. Basic, but useful.

Complaint system lets citizens report issues — potholes, broken streetlights, illegal dumping, whatever. They upload photos, add descriptions, and track the status of their reports. The system routes complaints to the relevant department and sends updates when issues are resolved.

Event calendar shows upcoming government events, public meetings, and community programs. Citizens can set reminders and get notifications. The goal was to increase civic participation by making it easier to know what's happening.

Push notifications keep citizens informed about urgent updates — road closures, public health alerts, service disruptions. The system is opt-in and categorized so people only get notifications they care about.

Tech Stack

Flutter for the mobile app with GetX for state management and routing. CodeIgniter 3 backend with MySQL for data storage. REST API for communication between the app and backend.

Firebase Cloud Messaging for push notifications. Image compression and caching to reduce data usage. Offline support for viewing previously loaded content. The app had to be lightweight because many users have limited data plans.

Role-based access on the backend. Citizens have read access and can submit complaints. Government staff can manage content and respond to complaints. Admins control everything. The backend validates all inputs to prevent abuse.

My Role

Full-stack developer. I built the mobile app, designed the API, and developed the backend. I also worked with Diskominfo to define the feature set and prioritize what to build first.

The complaint system was the most complex part. It had to route reports to the right department, track status changes, notify citizens of updates, and provide analytics for government staff. I built a workflow engine that could handle different complaint types with different routing rules.

I also focused on performance. The app had to load fast and use minimal data. I implemented aggressive caching, lazy loading for images, and pagination for feeds. The goal was to make the app usable even on slow connections.

User testing revealed issues I hadn't anticipated. Older users struggled with navigation. Some features were buried too deep. I simplified the UI, added a search function, and made the most-used features more prominent. The second iteration was much better.

The app launched in 2022 and has been downloaded thousands of times. Diskominfo uses it as the primary channel for citizen engagement. They've told me it's increased complaint resolution rates and improved communication with the public. That's the kind of impact that justifies the effort.