Inspiration

The inspiration behind Qobley came from a simple thought: technology should leave no one behind.

QR codes and barcodes have become part of everyday life. We use them to make payments, connect to Wi-Fi, access information, identify products, and share contact details. But while these interactions may feel effortless to some people, navigating complicated apps and multiple menus can be frustrating for elderly people, people with accessibility needs, and busy small shopkeepers.

We wanted to build something that made these everyday interactions genuinely easier.

Instead of creating just another QR scanner, we imagined a tool that could remove unnecessary steps from the entire experience. What if a shopkeeper could display their payment QR code directly on their phone's home screen? What if scanning a code took a single tap? What if all of this worked without an internet connection or sending personal data to a remote server?

That idea became Qobley — an attempt to make everyday technology more accessible, practical, and respectful of people's privacy.

What it does

Qobley is an offline-first Android utility for scanning, creating, customizing, and managing QR codes and barcodes.

It supports 13 barcode formats, including QR Code, Code 128, EAN, UPC, PDF-417, Data Matrix, and Aztec Code. It also goes beyond scanning by offering a customization studio and a collection of Android home-screen widgets designed to make common actions faster.

Some of its key features include:

  • Instant scanning: Uses CameraX and ZXing to scan supported codes directly on the device.
  • Smart actions: Helps users open websites, connect to Wi-Fi, initiate UPI payments through compatible apps, and work with contact and phone information.
  • QR and barcode creation: Generates codes for different types of content, with customization options for colors, shapes, gradients, emblems, and labels.
  • Home-screen widgets: Provides quick scanning, shortcuts, recent scans, favorites, and live scannable code displays.
  • Local history and organization: Stores scanned information on the device and supports searching, saving, and exporting data.
  • Privacy-first operation: Keeps scanning and code generation on-device, without analytics or background telemetry.
  • Accessibility-focused design: Uses high-contrast interfaces, large touch targets, and fewer steps to reach frequently used features.

The goal is not simply to make scanning faster. It is to make the entire process of using QR codes and barcodes easier for more people.

How we built it

Qobley is built natively for Android using Kotlin, Jetpack Compose, and Material 3. We chose a native approach to make the most of Android's camera capabilities, home-screen widgets, shortcuts, and system integrations.

For scanning, we used CameraX to handle the camera pipeline and ZXing for barcode decoding and generation. This allows the app to process codes locally rather than depending on a remote service.

We used Room with SQLite for local persistence, keeping scan history and saved codes available on the device. Kotlin coroutines and StateFlow help coordinate application state, while a centralized deep-link router connects widgets and shortcuts directly to their intended destinations.

One important part of the design was treating the home screen as more than a place to launch the app. We built five native widget types, including a quick-scan widget and a live scannable-code widget that lets a shopkeeper display a saved QR code for customers.

We also developed a customization studio for creating personalized QR codes and barcodes, with automatic checksum handling for supported retail formats and error-correction adjustments for customized QR codes.

Throughout the project, we focused on keeping core functionality offline, minimizing permissions, and making common workflows accessible without unnecessary navigation.

Challenges we ran into

One of the biggest challenges was making the app feel simple without sacrificing functionality. Scanning a code is straightforward, but supporting many formats, interpreting different payload types, handling edge cases, and offering the right next action requires careful engineering.

The customization studio presented another challenge. A QR code can look visually appealing and still fail to scan if its design interferes with the encoded data. We had to account for contrast, module shapes, center emblems, and error correction while aiming to preserve scannability.

Android widgets introduced their own complexity. They have different layout constraints and lifecycle behavior from normal app screens. Keeping widget data synchronized with locally stored information while supporting direct actions required a more deliberate architecture.

Accessibility was another important consideration. Making an interface accessible involves more than increasing font sizes. Buttons need usable touch targets, text must remain readable, and frequently used tasks should not require navigating several screens. We had to consider these details throughout the user experience.

Finally, privacy and convenience had to work together. Features such as camera scanning, gallery imports, local history, and system actions needed to work without turning a simple utility into an app that constantly depends on connectivity or unnecessary permissions.

Accomplishments that we're proud of

We are proud that Qobley grew beyond the idea of a basic QR scanner into a broader, locally operated code utility.

Some of the accomplishments we value most are:

  • Building a native Android application that supports 13 barcode formats.
  • Creating a customization studio with visual presets, gradients, shape options, emblems, and banner labels.
  • Developing five Android home-screen widgets for different everyday workflows.
  • Implementing local persistence for scan history, saved codes, and widget data.
  • Connecting scanning and code creation to practical actions such as Wi-Fi access and compatible UPI payment applications.
  • Designing the application around offline functionality and zero analytics telemetry.
  • Developing automated tests for payload parsing, code generation, data organization, widget behavior, and edge cases.

Above all, we are proud of the problem we chose to solve. Accessibility is often treated as an additional feature, but we wanted it to influence the product's core design from the beginning.

Qobley is our attempt to show that even a familiar everyday utility can be rethought around real people and their needs.

What we learned

Building Qobley taught us that a useful application is not defined only by the number of features it contains. The small details — how many taps a task requires, whether a button is easy to use, whether information stays private, and whether an action works reliably — can make the biggest difference.

We learned that accessibility needs to influence the architecture and user experience from the start, rather than being added at the end.

We also learned that offline-first development requires deliberate decisions. Local storage, on-device processing, permission management, and system integrations all need to work together to deliver a dependable experience without relying on remote infrastructure.

Another major lesson was that customization and reliability must be designed together. Giving users creative freedom is valuable, but the resulting codes must remain practical and scannable.

Most importantly, we learned to look beyond the obvious functionality of a product. A QR scanner can read a code; a thoughtfully designed utility can help someone complete an everyday task with fewer obstacles.

What's next for Qobley

Our next goal is to keep improving Qobley as a practical accessibility-focused utility for everyday use.

We want to refine the scanning experience, strengthen compatibility across Android devices, and continue testing customized codes against different scanning conditions.

Future development could also focus on:

  • More accessibility improvements: Further refining contrast, text readability, touch targets, and simplified workflows.
  • A better shopkeeper experience: Making frequently used payment and Wi-Fi codes easier to manage and display.
  • Expanded widget functionality: Improving quick access to saved codes and everyday actions.
  • More reliable customization: Continuing to validate generated codes across different formats, designs, and scanning conditions.
  • Stronger testing: Expanding automated and real-device testing to catch edge cases and improve reliability.
  • Community-driven development: Using feedback from users and contributors to prioritize features that solve real problems.

Our long-term vision is to make Qobley a dependable everyday companion for anyone who uses QR codes and barcodes — from individuals managing their saved codes to small businesses serving customers.

We want to keep building technology that respects people's time, protects their privacy, and makes digital interactions less complicated.

Qobley is built on one simple principle: technology should leave no one behind.

Built With

  • android
  • android-8.0/api-26+
  • android-api-36
  • android-app-widgets
  • android-deep-links
  • android-intents
  • android-photo-picker
  • android-runtime-permissions
  • camerax-1.5
  • csv
  • gradle
  • jetpack-compose
  • json
  • kotlin-2.2
  • kotlin-couroutines
  • material-design-3
  • room-2.7
  • sqlite
  • stateflow
  • zxing-3.5.3
Share this project:

Updates

Submission history