Yuvaraj Vodiboina
  1. (01)Software engineerWeb, browser and Android
  2. (02)Founder of CodeHorizonSix Chrome extensions, five Android apps
  3. (03)Based in Hyderabad17.39° N, 78.49° E

Yuvaraj Vodiboina

I build for the browser and the pocket.

(01)What I doSince 2021

I take software from a Figma file to the store listing, and keep it working long after launch.

AWeb

React, Next.js and TypeScript. At Truedune Beauty I reworked checkout with Magic Checkout and single-click buy, and ran six A/B tests across the storefront.

BBrowser

Chrome extensions on Manifest V3: ShopGrade, TubeFocus, Keeptake, TabCluster and CSS Class Highlighter.

CAndroid

Native apps in Kotlin and Jetpack Compose: SecureVault, Companion AI, Speaker Cleaner, Nicked and Compass.

(02)Work2021 to now

Selected work

Nineteen projects: eleven products of my own under CodeHorizon, six for Chrome (two no longer live) and five for Android (one still in testing), websites for a client and my studio, an Android ROM, and earlier work from 2021 to 2023. Four of them, up close.

01

ShopGrade

An audit for any Shopify storefront. It turns what it finds on a public store into a prioritized list of fixes, with no admin access needed.

Platform
Chrome extension and website
Latest
4.9.1, 13 Oct 2026
Status
Live

Hard partKeeping what the page shows separate from measurements and AI-written suggestions, so merchants know what is fact.

02

SecureVault

An encrypted vault behind a calculator that really works. Type your code and press equals, and a separate vault password or your fingerprint opens it.

Platform
Android
Latest
7.10, 8 Oct 2026
Status
Live on Google Play

Hard partMaking the disguise feel exactly like a calculator, and keeping Keystore keys intact across app updates.

03

TubeFocus

YouTube on your terms. Choose Learn, Watch or Explore, it hides the rest, and a 60-second Peek brings it back for a moment.

Platform
Chrome extension
Latest
7.0.2, 11 Oct 2026
Status
Live on the Chrome Web Store

Hard partA focus timer and a 60-second Peek that keep running after the popup closes and Chrome puts the extension to sleep, without touching your saved switches.

04

Nicked

One mystery cricketer a day, revealed one clue at a time. Name them on an early clue for more runs, and even a wrong guess shows what it shares with the answer.

Platform
Android game
Latest
0.5.0, 29 Oct 2026
Status
Live on Google Play

Hard partGetting 403 international cricketers right, from legends to today’s players, each checked against a published source, so no clue is ever wrong.

Everything else I’ve made

Point at one for a look. Each has a case study.

  • 05 Companion AI One good quote a day, at the time you choose. Works offline, with no feed. Android · 100+ downloads Play
  • 06 TabCluster Groups every open tab by site in one click, and shows you first. No longer live. Chrome extension · 2025 Not live
  • 07 Speaker Cleaner A 165 Hz tone that pushes water out of your phone’s speaker in about a minute. Android · v1.0.7 Play
  • 08 Compass A digital compass with true north, and a warning when metal pulls the needle. In testing on Google Play. Android · v1.0.1 Testing
  • 09 Keeptake A free screen recorder with webcam and sound, which saves as you record. Chrome extension · v0.4.0 Store
  • 10 CodeHorizon My studio’s home: a page for every product, a changelog with RSS, and no trackers. Studio website · 2026 Site
  • 11 Kalpa Corporate Artz A gallery site for a company that makes museum-quality reproductions of India’s master painters. Client website · 2025 Site
  • 12 CSS Class Highlighter A CSS workbench: inspect an element, follow its classes, compare styles and explore design tokens. Chrome extension · v4.1.0 Store
  • 13 Notilo A web highlighter, with notes anchored to the exact words. No longer live. Chrome extension · 2025 Not live

Community

  • 14 AxionAOSP for Pad 6 An unofficial Android 15 build for the Xiaomi Pad 6, with 767 downloads on GitHub. Android ROM · 2025 Code

Earlier, 2021 to 2023

  • 15 Course Recommendation Engine Collaborative filtering in Scikit-Learn, behind a Flask API. Research · 2023
  • 16 Chat Room Rooms and live messages, with Flask and Socket.IO. Web app · 2021 Code
  • 17 Pencil Sketch A photo to a pencil sketch, in four steps of OpenCV. Python · 2021 Code
  • 18 Flappy Bird Gravity, pipes and collisions, in a Pygame loop. Python game · 2021 Code
  • 19 IdentiFlash My first Android app: a flashlight, in Java. Android · 2021 Code
(03)In numbersMade by one person
  1. 11

    Products of my own

    Six Chrome extensions and five Android apps, each from the first sketch to the store listing. Eight are live, Compass is in testing, and Notilo and TabCluster are no longer live.

    CodeHorizon
  2. 26

    Launches and updates

    Nine launches and seventeen updates so far, from SecureVault 7’s decoy vault to TubeFocus 7’s 60-second Peek and Nicked’s public launch on Google Play.

    The CodeHorizon changelog
  3. 403

    Cricketers in Nicked

    International players from India to Nepal, Scotland and the USA, legends and today’s stars, each checked against a published source.

    Nicked
  4. 0

    Accounts needed

    SecureVault, TubeFocus, TabCluster, Keeptake, Companion AI, Nicked, Speaker Cleaner and Compass never ask you to sign up, and keep what’s yours on your device.

    Private by design
(04)AboutB.Tech, JNTU-GV, 2024
Yuvaraj Vodiboina, smiling, in a dark jacket

I’m Yuvaraj, a software engineer in Hyderabad. I learned how Android works by building custom ROMs and kernels in college, and I’ve built eleven products of my own for Chrome and Android.

Along the way came a chat room on Flask and Socket.IO, a filter that turns photos into pencil sketches, two internships, a client’s website and a frontend role on a Shopify storefront.

Based in
Hyderabad, India
Works in
TypeScript, Kotlin and Python
Studio
CodeHorizon, codehorizon.in
Open to
Software engineering roles, on-site in Hyderabad or remote

How I work

Four habits, and the code that shows each

01 The server decides

In ShopGrade the extension only asks. A server function checks the plan, credits, verified email and trial before any report, and spends a credit in one transaction, so a crash can’t take a credit without giving what it paid for.

main.js
const spend = await runTx(async (txId) => {
  await db.decrementDocumentAttribute({
    databaseId: DB, collectionId: PROFILES, documentId: meterId,
    attribute: 'creditsBalance', value: 1, min: 0, transactionId: txId,
  });
  await db.incrementDocumentAttribute({
    databaseId: DB, collectionId: PROFILES, documentId: meterId,
    attribute: 'creditAiBalance', value: 1, transactionId: txId,
  });
  await db.incrementDocumentAttribute({
    databaseId: DB, collectionId: PROFILES, documentId: meterId,
    attribute: 'creditCroBalance', value: 1, transactionId: txId,
  });
  // …

ShopGrade · functions/start-generation/src/main.js · lines 1143 to 1155More in the case study

02 Files stay on the phone

SecureVault has no account and no upload. Its master key is made in the Android Keystore and never leaves it, and every file is streamed through AES-256-GCM, its name included.

FileEncryption.kt
private val masterKey: MasterKey by lazy {
    MasterKey.Builder(context)
        .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
        .build()
}
// …
val androidEncryptedFile = EncryptedFile.Builder(
    context,
    encryptedFile,
    masterKey,
    EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()

SecureVault · data/security/FileEncryption.kt · lines 34 to 38 and 52 to 57More in the case study

03 One writer for shared state

In TubeFocus the popup and the settings page only send requests. The service worker applies them one at a time, so two open pages can’t overwrite each other’s changes.

background.js
// One writer keeps edits from separate popup/options pages from overwriting one another.
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  // …
  pendingWrites++;
  const operation = writeQueue.then(async () => {
    const current = await readSettings();
    // … the command, applied to the settings it just read …
    await chrome.storage.sync.set({ [STORAGE_KEY]: exportSettings(next) });
    // A sync quota failure must not cancel an otherwise valid local peek.
    if (command.action === 'reset') await chrome.storage.local.set({ [REVEAL_KEY]: next.reveal });
    return next;
  });
  writeQueue = operation.catch(() => {});

TubeFocus · background.js · lines 29 to 30, 46 to 48 and 87 to 92More in the case study

04 A test where two codebases meet

Nicked’s daily schedule is shuffled in Kotlin on the phone and in Python in the data scripts. Both use the same SplitMix64, and a golden test catches any drift between them.

DailyPuzzle.kt
/** Fisher-Yates with SplitMix64. Our own PRNG so the order never changes across Kotlin versions. */
fun seededShuffle(items: List<String>, seed: Long): List<String> {
    val out = items.toMutableList()
    val rng = SplitMix64(seed)
    for (i in out.lastIndex downTo 1) {
        val j = rng.nextInt(i + 1)
        val tmp = out[i]; out[i] = out[j]; out[j] = tmp
    }
    return out
}

Nicked · domain/DailyPuzzle.kt · lines 67 to 76More in the case study

(05)ExperienceOn the Blue Line

The line so far

  1. 2019 to 2024

    B.Tech, Computer Science

    JNTU-GV · Avanthi Institute of Engineering & Technology

    Where I wrote my first Android app, a chat room and a pencil-sketch filter, and built custom ROMs and kernels for Xiaomi phones.

  2. Apr to Sep 2023

    Web Development Intern

    MSsquare Technologies · Remote

    Built front-end interfaces in HTML, CSS, JavaScript and Bootstrap, worked on page speed and asset loading, and on technical SEO.

    HTML · CSS · JavaScript · Bootstrap

  3. May to Oct 2024

    Frontend Engineer Intern

    Intern Stump · Remote

    Turned Figma wireframes into reusable, accessible React components, tested with Jest. Cut initial render time with code-splitting and lazy loading, and set up preview deploys on Vercel.

    React · TypeScript · Tailwind CSS · Jest · Vercel

  4. Since Oct 2024

    Founder

    CodeHorizon · Self-employed · Remote

    A one-person studio. I build small products for problems I run into myself, then publish and keep improving them: eleven so far, six for Chrome and five for Android, most of them running entirely on-device.

    Chrome Extensions (MV3) · Kotlin · Jetpack Compose · JavaScript

  5. Sep to Nov 2025

    Web Developer (Contract)

    Kalpa Corporate Artz · Freelance

    Designed the company site in Figma and built it in Next.js (React), from design to production, with GitHub Actions deployments and Cloudflare Pages hosting.

    Next.js · React · Figma · GitHub Actions · Cloudflare Pages

  6. Oct 2025 to Aug 2026

    Frontend Engineer

    Truedune Beauty · Full-time · Bengaluru

    Built and maintained the web storefront in React, Next.js and TypeScript, with Node.js and Firebase. Reworked checkout with Magic Checkout and single-click buy, extended the Shopify storefront with Liquid, ran six A/B tests across landing and product pages, and contributed to the company’s React Native app.

    React · Next.js · TypeScript · Node.js · Firebase · Shopify Liquid · React Native

  7. Next station

    Your team?

    Software engineering roles, on-site in Hyderabad or remote

Certificates

Google UX Design

Jan 2025

Docker Foundations

Oct 2025

(06)Open source contributions4 merged

Open source

Fixes of mine in projects other people run. Each one started from an open issue, came with new tests, and was merged by the project’s maintainer.

4 merged · since Oct 2026

Wikimedia Commons

The Android app people use to upload photos to Wikimedia Commons, the free media library Wikipedia uses. 100K+ downloads on Google Play.

Kotlin · Robolectric · Mockito

  1. #7252

    Edits kept

    If the upload screen was recreated while the photo editor was open, as on a switch to dark mode, the edit was lost and the original uploaded, and the location picker crashed. The screen now looks its upload up by position each time.

    Merged 6 Nov 2026Fixes #6971

  2. #7071

    Quieter uploads

    A bug first reported in 2019: the app made a sound for every file while uploading. Progress now has its own silent channel, and only the result alerts you.

    Merged 2 Nov 2026Fixes #2528

  3. #7184

    A smaller achievements screen

    One class with 27 functions, over the project’s limit, is now the screen and two tested helpers, and it works as it did.

    Merged 27 Oct 2026Fixes #7156

  4. #7069

    No wasted copies

    Share a RAW file next to its JPEG and the RAW was copied, then thrown away: 12.6 MB per photo in my test. Unsupported files are now skipped before copying, and the warning still shows.

    Merged 24 Oct 2026Fixes #6908

(07)ContactHyderabad

Have a role or a product in mind? Write to me.

I’m looking for software engineering roles, on-site in Hyderabad or remote. Write any time and I’ll reply within a day.

Email me

The 30-second version

Yuvaraj Vodiboina

Yuvaraj Vodiboina

Software engineer: React, Next.js and TypeScript on the web, Chrome extensions, and Kotlin on Android. Open to on-site roles in Hyderabad or remote.

Built
Eleven products of my own at CodeHorizon: six Chrome extensions and five Android apps. Eight are live, Compass is in testing, and Notilo and TabCluster are no longer live. Plus client and studio websites.
Open source
Four fixes merged into the Wikimedia Commons Android app, each for an open issue and with new tests.
E-commerce
At Truedune Beauty: reworked checkout with Magic Checkout and single-click buy, extended the Shopify storefront with Liquid, and ran six A/B tests across landing and product pages.
Experience
Founder, CodeHorizon Since Oct 2024Frontend Engineer, Truedune Beauty Oct 2025 to Aug 2026Web Developer (Contract), Kalpa Corporate Artz Sep to Nov 2025Frontend Engineer Intern, Intern Stump May to Oct 2024Web Development Intern, MSsquare Technologies Apr to Sep 2023
Stack
React · Next.js · TypeScript · Tailwind CSS · Node.js · Shopify Liquid · Chrome Extensions (MV3) · React Native · Kotlin · Jetpack Compose
Education
B.Tech, Computer Science and Engineering, Avanthi Institute of Engineering & Technology (JNTU-GV), 2019 to 2024
Résumé LinkedIn GitHub
esc