<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: niixolabs</title>
    <description>The latest articles on DEV Community by niixolabs (@niixolabs).</description>
    <link>https://dev.to/niixolabs</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3897852%2F6a7b1c38-72dd-4eb4-8f40-9d53860095e3.png</url>
      <title>DEV Community: niixolabs</title>
      <link>https://dev.to/niixolabs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/niixolabs"/>
    <language>en</language>
    <item>
      <title>TenjiScan: we shipped an on-device Japanese braille reader for iPhone</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Thu, 28 May 2026 23:02:53 +0000</pubDate>
      <link>https://dev.to/niixolabs/tenjiscan-we-shipped-an-on-device-japanese-braille-reader-for-iphone-539a</link>
      <guid>https://dev.to/niixolabs/tenjiscan-we-shipped-an-on-device-japanese-braille-reader-for-iphone-539a</guid>
      <description>&lt;p&gt;Japanese braille shows up in places most people walk past without thinking — the textured rail at a train station, the edge of a pill box, the panel beside an elevator button. It's present, it carries information, and almost nobody can read it.&lt;/p&gt;

&lt;p&gt;TenjiScan started from that observation. Point your iPhone camera at Japanese braille and get the text back on the spot. That's the whole pitch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why on-device processing mattered
&lt;/h2&gt;

&lt;p&gt;The obvious implementation would be: send the photo to a server, run recognition there, return text. Faster to ship, potentially higher accuracy.&lt;/p&gt;

&lt;p&gt;We didn't do that, for two reasons. First, the places where you'd actually want to read braille — subway stations, hospital hallways — are often places with weak or no connectivity. Second, you're sometimes photographing medication labels or personal items. Sending those images to a server creates a privacy concern that isn't worth carrying.&lt;/p&gt;

&lt;p&gt;Since v4.0.0, everything runs locally. Vision framework plus a custom two-signal pipeline handles cell boundary detection first, then dot presence per cell. No image leaves the device.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it supports
&lt;/h2&gt;

&lt;p&gt;Japanese braille (JIS) and English braille (UEB Grade 1) are both covered. That handles the majority of real-world signage.&lt;/p&gt;

&lt;p&gt;The honest limitation: Grade 2 contracted braille isn't supported yet. And recognition quality depends on lighting and camera angle — braille is a physical texture, so how light falls across it directly affects what the camera sees. Flat, even lighting and a straight-on angle give the best results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shipping a niche tool
&lt;/h2&gt;

&lt;p&gt;One thing about building accessibility tools: the use case is clear. You know exactly what you're solving and for whom. That focus made some decisions easier — we didn't try to expand scope to other braille systems or add cloud features. It does one thing, on-device, with no account required.&lt;/p&gt;

&lt;p&gt;Free to download. Optional one-time purchase removes ads.&lt;/p&gt;

&lt;p&gt;App Store: &lt;a href="https://apps.apple.com/jp/app/id6759526188" rel="noopener noreferrer"&gt;https://apps.apple.com/jp/app/id6759526188&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>a11y</category>
      <category>machinelearning</category>
      <category>swift</category>
    </item>
    <item>
      <title>We built an app for Japan's neighborhood associations — and learned that invisible work is the hardest problem</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Wed, 27 May 2026 23:04:18 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-built-an-app-for-japans-neighborhood-associations-and-learned-that-invisible-work-is-the-8e2</link>
      <guid>https://dev.to/niixolabs/we-built-an-app-for-japans-neighborhood-associations-and-learned-that-invisible-work-is-the-8e2</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Japanese neighborhood associations — jichikai or chonaikai — run almost entirely on volunteer labor. Someone collects dues house by house. Someone else delivers the bulletin board. Another person organizes the safety drill, coordinates the annual meeting, and writes the handover notes for whoever takes over next year.&lt;/p&gt;

&lt;p&gt;None of that work gets logged anywhere. It's invisible. So when officer recruitment comes around, no one wants to step up — not because the work is impossible, but because no one knows how much of it there actually is, and the person who did it last year is already tired. The same people cycle through exhaustion. The same conversation happens every year.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Musubiba does
&lt;/h2&gt;

&lt;p&gt;Musubiba makes every officer's contribution measurable. Bulletin circulation, dues collection, safety check-ins, meeting votes, annual scheduling, and handover documentation — all tracked, all visible, all handed off cleanly when roles rotate.&lt;/p&gt;

&lt;p&gt;The goal isn't automation. It's making the workload legible so that it can be shared more fairly, and so that new officers aren't starting from zero every cycle. The handover notes feature matters more than you'd expect: a successor who inherits a full activity record behaves differently than one starting from a blank slate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical choices
&lt;/h2&gt;

&lt;p&gt;Flutter for iOS and Android — neighborhood associations span every device type, and a single Dart codebase was the only realistic path. Backend is Firebase; Firestore's real-time listeners handle safety check-ins and live vote tallies. Billing runs on both Stripe and in-app purchases to cover the web-based accounting input path, because some committee leads are more comfortable with a browser than a smartphone. New members join by scanning a QR code — no invite emails to manage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest caveat
&lt;/h2&gt;

&lt;p&gt;This is optimized specifically for Japan's jichikai system. The workflows — how bulletins circulate, how dues are collected, how officer roles are defined — are Japan-specific enough that it won't map well to HOAs in other countries. We chose depth over generality.&lt;/p&gt;

&lt;p&gt;Pricing: free up to 15 members; ¥1,500/month for unlimited.&lt;/p&gt;




&lt;p&gt;App Store: &lt;a href="https://apps.apple.com/jp/app/musubiba/id6759871374" rel="noopener noreferrer"&gt;https://apps.apple.com/jp/app/musubiba/id6759871374&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.htor.musubiba" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.htor.musubiba&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>firebase</category>
      <category>productivity</category>
      <category>community</category>
    </item>
    <item>
      <title>We built a budgeting app that doesn't want your bank password</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Tue, 26 May 2026 23:03:35 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-built-a-budgeting-app-that-doesnt-want-your-bank-password-9m7</link>
      <guid>https://dev.to/niixolabs/we-built-a-budgeting-app-that-doesnt-want-your-bank-password-9m7</guid>
      <description>&lt;h2&gt;
  
  
  The starting point
&lt;/h2&gt;

&lt;p&gt;Most budgeting apps open with the same ask: connect your bank. It's a reasonable UX move — automatic imports reduce friction significantly. But it also means your banking credentials flow through a third-party aggregator. Some people are fine with that. A meaningful slice aren't.&lt;/p&gt;

&lt;p&gt;We built moneasy for the second group.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two input methods, nothing else
&lt;/h2&gt;

&lt;p&gt;The entire logging surface is: talk to Siri, or photograph a receipt.&lt;/p&gt;

&lt;p&gt;Describe what you spent and Siri routes it into the app. Receipt OCR via Vision reads amounts from the photo automatically. Voice processing runs through Apple Speech and Gemini 2.5 Flash, covering 25 languages. Data lives on device and in iCloud via SwiftData + CloudKit — nothing touches external servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tradeoff we accepted
&lt;/h2&gt;

&lt;p&gt;No bank-API integration means no automatic statement sync. That's the main thing moneasy doesn't do. CSV import from your bank is the available workaround, but it's a manual step.&lt;/p&gt;

&lt;p&gt;We could have added a third-party aggregator and solved it. We didn't, because it would have undermined the whole premise. Some users keep waiting for the "connect your bank" screen that never comes — that's the main UX confusion we're still working through.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we noticed shipping it
&lt;/h2&gt;

&lt;p&gt;Receipt OCR works well on most printed receipts; faded thermal paper is the edge case that still misses occasionally. Voice input accuracy is high once the Siri shortcut is set up, but first-time configuration has friction we're reducing.&lt;/p&gt;

&lt;p&gt;¥450/month or ¥5,000/year, 30-day trial included.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/jp/app/moneasy/id6742516728" rel="noopener noreferrer"&gt;https://apps.apple.com/jp/app/moneasy/id6742516728&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>fintech</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>We let users record their own shutter sound. Here's what that opened up.</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Mon, 25 May 2026 23:03:53 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-let-users-record-their-own-shutter-sound-heres-what-that-opened-up-57eg</link>
      <guid>https://dev.to/niixolabs/we-let-users-record-their-own-shutter-sound-heres-what-that-opened-up-57eg</guid>
      <description>&lt;h2&gt;
  
  
  The shutter sound no one questions
&lt;/h2&gt;

&lt;p&gt;Your phone has made the same click since you unboxed it. Nobody asks why. It's just there — the sound that says a photo happened.&lt;/p&gt;

&lt;p&gt;We started wondering what would change if that sound were yours to define.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Voicame does
&lt;/h2&gt;

&lt;p&gt;Voicame (ボイカメ) is a camera app that lets you record any audio and use it as the shutter. A child's name. A word you like. A short phrase. When you tap the shutter button — or use the hardware camera button on supported iPhones — that recorded sound plays instead of the default click.&lt;/p&gt;

&lt;p&gt;The idea came from a specific frustration: trying to photograph young children who flinch at unfamiliar sounds, or who don't look up unless their name is called. If the shutter trigger plays their own name, they turn toward it.&lt;/p&gt;

&lt;p&gt;Alongside the voice shutter, six symmetry modes preview live as you frame: horizontal, vertical, diagonal, quad, kaleidoscope, and swirl. They work for photos and for video recording. Recorded sounds can export via AirDrop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Under the hood:&lt;/strong&gt; AVFoundation for capture and recording, CoreImage's CIKaleidoscope filter for symmetry, Metal for real-time preview, AVAssetWriter for video output, AVCaptureEventInteraction (iOS 17.2+) for hardware shutter button integration. Fully on-device — nothing uploaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it falls short
&lt;/h2&gt;

&lt;p&gt;Being direct: symmetry cameras are not an unusual category. Kaleidoscope-style apps have existed for years, and we're not pretending otherwise. Voicame's argument is that tying voice shutter and live symmetry together in one workflow is a specific enough combination to be worth shipping.&lt;/p&gt;

&lt;p&gt;Gaps: iOS-only, no Android, no Apple Watch. Shutter sound volume is controlled by the device's media volume — no independent control.&lt;/p&gt;

&lt;h2&gt;
  
  
  Availability
&lt;/h2&gt;

&lt;p&gt;Free to download. One-time ¥250 in-app purchase for all six symmetry modes. No subscription.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/jp/app/id6768058856" rel="noopener noreferrer"&gt;https://apps.apple.com/jp/app/id6768058856&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>camera</category>
      <category>indie</category>
    </item>
    <item>
      <title>We built a puzzle game about noticing the one thing that's wrong</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Sat, 23 May 2026 23:04:30 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-built-a-puzzle-game-about-noticing-the-one-thing-thats-wrong-i18</link>
      <guid>https://dev.to/niixolabs/we-built-a-puzzle-game-about-noticing-the-one-thing-thats-wrong-i18</guid>
      <description>&lt;p&gt;There's a specific kind of satisfaction in noticing something is wrong before you can explain why.&lt;/p&gt;

&lt;p&gt;You're looking at a grid of geometric shapes. Each one appears identical. But one isn't — something in the rotation, the scale, the position is fractionally off. The moment you see it, you can't unsee it.&lt;/p&gt;

&lt;p&gt;That's the experience we were after when we built Off By One.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we were trying to solve
&lt;/h2&gt;

&lt;p&gt;Most puzzle games ask you to be fast, or to remember things, or to react. We wanted to build something that rewarded sustained attention instead — the kind of calm, patient looking you do when you're proofreading or checking a design for alignment errors.&lt;/p&gt;

&lt;p&gt;Off By One strips everything else away. No timer running in the corner. No score multiplier. No story. Just a grid and a small wrongness hiding inside it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the puzzles are generated
&lt;/h2&gt;

&lt;p&gt;We use SwiftUI's Canvas API for rendering. Shape type, decoration pattern, and placement are combined procedurally — about 133,200 possible combinations. The practical effect: replaying a stage rarely gives you the same puzzle twice, which matters for a game with no narrative carrying you forward.&lt;/p&gt;

&lt;p&gt;Three difficulty levels across 35 stages. On Easy, the off element is clearly different. On Hard, you're looking for a rotation difference that's genuinely subtle — the kind that makes you second-guess yourself before you commit. Game Center tracks progress with 17 achievements.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limitations
&lt;/h2&gt;

&lt;p&gt;The 6-second App Store preview video is a real problem for us. "Quiet observation" doesn't compress into a clip. We've watched people look at the preview and not understand what the game is — a legitimate discovery issue we haven't solved.&lt;/p&gt;

&lt;p&gt;We also haven't implemented in-app purchase. The app is free with rewarded ads only, which means users who genuinely love it have no way to pay for an upgrade. That gap is on us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who it's for
&lt;/h2&gt;

&lt;p&gt;People who want five minutes of calm focus between tasks. People who like finding things. People who find countdown timers stressful.&lt;/p&gt;

&lt;p&gt;Free on iOS 16+. Published by Niixo Labs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/jp/app/id6762133251" rel="noopener noreferrer"&gt;App Store&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>gamedev</category>
      <category>indiedev</category>
    </item>
    <item>
      <title>We built a mahjong dangerous-tile predictor calibrated on 4.97M real hands</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Fri, 22 May 2026 23:04:30 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-built-a-mahjong-dangerous-tile-predictor-calibrated-on-497m-real-hands-4hm4</link>
      <guid>https://dev.to/niixolabs/we-built-a-mahjong-dangerous-tile-predictor-calibrated-on-497m-real-hands-4hm4</guid>
      <description>&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;At a real mahjong table, software can't help you mid-hand. The question — "is this tile safe to discard?" — comes up every few turns, and you work it out from memory and pattern recognition alone.&lt;/p&gt;

&lt;p&gt;We wanted something you could set next to you at the table, pick up in a second, and put down without disrupting the game.&lt;/p&gt;

&lt;h2&gt;
  
  
  What OkkanaiPai does
&lt;/h2&gt;

&lt;p&gt;Three interactions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Swipe to select the player you want to read&lt;/li&gt;
&lt;li&gt;Tap their discarded tiles to enter them&lt;/li&gt;
&lt;li&gt;See all 34 tiles color-coded by danger level&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole flow is designed to be glanceable — you're not staring at a screen mid-game.&lt;/p&gt;

&lt;h2&gt;
  
  
  The model behind it
&lt;/h2&gt;

&lt;p&gt;We didn't ship a live inference model. Instead, we calibrated a rule-based system against 4.97 million discards from Tenhou's Houou-takujo server (the top competitive tier), covering 16 days of logged play.&lt;/p&gt;

&lt;p&gt;The result is a set of coefficients stored as JSON inside the app. AUC on held-out data came to 0.83. Not perfect, but statistically meaningful for a glance-level judgment call at the table. Everything runs fully offline — no network request, no account, no subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it doesn't cover
&lt;/h2&gt;

&lt;p&gt;Being upfront about scope:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calibration is East-round / East-seat data. Accuracy may degrade in South-round play.&lt;/li&gt;
&lt;li&gt;Meld efficiency — how chii, pon, or kan reshapes hand danger — is not modeled.&lt;/li&gt;
&lt;li&gt;Three-player mahjong (sanma) is not supported.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For standard 4-player East-focused games, it fits. Outside that, weight the output accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why build it
&lt;/h2&gt;

&lt;p&gt;Niixo Labs is running a sprint: small, focused iOS tools, shipped fast. OkkanaiPai explores what "calibrated statistics as UX" looks like in a game-assistance context — where a lightweight, offline coefficient table can deliver meaningful signal without any server infrastructure. Free, no ads, no IAP.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/jp/app/id6762544982" rel="noopener noreferrer"&gt;https://apps.apple.com/jp/app/id6762544982&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>mahjong</category>
      <category>statistics</category>
      <category>swift</category>
    </item>
    <item>
      <title>We built a weather app that stops pretending everyone feels the same temperature</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Thu, 21 May 2026 23:04:05 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-built-a-weather-app-that-stops-pretending-everyone-feels-the-same-temperature-29jg</link>
      <guid>https://dev.to/niixolabs/we-built-a-weather-app-that-stops-pretending-everyone-feels-the-same-temperature-29jg</guid>
      <description>&lt;p&gt;Most weather apps answer the wrong question.&lt;/p&gt;

&lt;p&gt;They tell you it's 12°C outside. That's accurate. But whether 12°C means you need a coat depends entirely on who you are — and weather apps don't know you.&lt;/p&gt;

&lt;p&gt;That friction is what Samukunai ('Are You Cold?') is built around.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;The mechanic is minimal: tap warm or cold after you check the morning forecast. That's the only input you give the app.&lt;/p&gt;

&lt;p&gt;After 10 of those taps, Samukunai calculates your personal cold threshold using 75th/25th percentile statistics on your own feedback data. Once calibrated, the morning push notification shifts from a generic temperature to something like "on the cold side for you" — not a city average.&lt;/p&gt;

&lt;p&gt;No machine learning. Nothing trained on external datasets. The personalization is your data — full stop. That was a deliberate choice; it keeps the logic auditable and the scope narrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;WeatherKit handles weather data. SwiftData + CloudKit sync feedback across devices. The personalization logic lives in a module we call ComfortEngine — it's statistics, not a model. The UI follows iOS 26 Liquid Glass conventions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we got wrong
&lt;/h2&gt;

&lt;p&gt;The cold-start problem is real. Below 10 feedbacks, Samukunai is a worse weather app than the one that came with your phone. No personalization, less information, no widget.&lt;/p&gt;

&lt;p&gt;We knew that going in and shipped anyway, because the core loop — tap, accumulate, personalize — needed real users to validate. iOS 26+ only makes the addressable market smaller too. We're not pretending otherwise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who it's for
&lt;/h2&gt;

&lt;p&gt;If you run cold, if you overdress every spring, or if you're the person who always asks "do I need a jacket?" — give it 10 taps. That's the buy-in.&lt;/p&gt;

&lt;p&gt;Free. No ads. No in-app purchases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/jp/app/id6762537476" rel="noopener noreferrer"&gt;App Store&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>weather</category>
      <category>indie</category>
    </item>
    <item>
      <title>We built a leg-fidget counter. Here's what that actually took.</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Wed, 20 May 2026 23:03:16 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-built-a-leg-fidget-counter-heres-what-that-actually-took-26a5</link>
      <guid>https://dev.to/niixolabs/we-built-a-leg-fidget-counter-heres-what-that-actually-took-26a5</guid>
      <description>&lt;h2&gt;
  
  
  The problem nobody is measuring
&lt;/h2&gt;

&lt;p&gt;Non-Exercise Activity Thermogenesis — NEAT — is the energy your body burns doing everything that isn't deliberate exercise. Fidgeting is a big part of it. Levine's research puts the gap between high and low fidgeters at 350 kcal/day. That's a real difference.&lt;/p&gt;

&lt;p&gt;The problem: nobody knows how much they actually fidget. There's no baseline. We decided to build one.&lt;/p&gt;

&lt;h2&gt;
  
  
  What BinBot does
&lt;/h2&gt;

&lt;p&gt;BinBot runs in the background on iPhone and Apple Watch and counts your leg movements across the day — three modes: shakes, jumps, rotations. It writes everything to HealthKit so the count lives in your health timeline alongside steps and sleep. A Live Activity and home screen widget keep the running total visible without opening the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that took the most time
&lt;/h2&gt;

&lt;p&gt;We sample at 100Hz via CoreMotion and run the signal through an IIR bandpass filter at 3–9Hz. That frequency band is where leg fidgeting lives; walking and car vibration sit mostly outside it. In theory.&lt;/p&gt;

&lt;p&gt;In practice, the edge cases are the hard part. Fast walking, rough roads, and certain seated movements can leak into the detection range. We use a five-layer rhythm classifier on top of the filter to reduce that noise, but false positives still happen occasionally. We document this honestly.&lt;/p&gt;

&lt;p&gt;The other known limitation: Watch-to-iPhone sync is currently one-directional. The Watch logs independently and pushes to iPhone, but not the reverse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Chasing perfect accuracy in motion sensing is a trap. We ship it as a trend tool — the day-over-day pattern matters more than any single count being precise.&lt;/p&gt;

&lt;p&gt;Free, ad-supported. No paywall.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/jp/app/id6760091302" rel="noopener noreferrer"&gt;https://apps.apple.com/jp/app/id6760091302&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>health</category>
      <category>makers</category>
    </item>
    <item>
      <title>What we built to help cat owners answer 'when did this start?'</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Tue, 19 May 2026 23:05:49 +0000</pubDate>
      <link>https://dev.to/niixolabs/what-we-built-to-help-cat-owners-answer-when-did-this-start-3m00</link>
      <guid>https://dev.to/niixolabs/what-we-built-to-help-cat-owners-answer-when-did-this-start-3m00</guid>
      <description>&lt;p&gt;Every first-time kitten owner eventually faces this: the vet asks "when did you first notice that?" and you draw a blank. Not from carelessness — just from never being prompted to track.&lt;/p&gt;

&lt;p&gt;That's the problem Nekososdate was built around.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core mechanic
&lt;/h2&gt;

&lt;p&gt;Register your kitten's birthdate. From that point, care guidance arrives automatically, calibrated to your cat's current age. What matters at week 3 is not what matters at month 4. We built 54 guides to cover the phases new owners find most confusing, structured as a timeline rather than a static FAQ.&lt;/p&gt;

&lt;h2&gt;
  
  
  What else is in the app
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;48 troubleshooting topics&lt;/strong&gt; — a reference for "is this normal?" moments&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;34 breed profiles&lt;/strong&gt; — overview of traits and tendencies by breed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;15-question temperament diagnostic&lt;/strong&gt; — focused on how this specific cat behaves, not just breed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The records and logs are really what the app is about. The guides teach; the records give you something concrete to bring to the vet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack and content model
&lt;/h2&gt;

&lt;p&gt;Flutter frontend, Firebase, StoreKit 2 for subscriptions. Content ships as asset-bundled JSON — no network dependency at read time. That keeps it usable in places without signal, which matters in vet waiting rooms.&lt;/p&gt;

&lt;p&gt;Free to download. All 54 guides unlock for ¥200/month.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it doesn't do
&lt;/h2&gt;

&lt;p&gt;iOS only — no Android build. No family sharing. Two people raising a kitten together can't sync records across devices. It's a real gap and one we know about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we shipped it
&lt;/h2&gt;

&lt;p&gt;Small, focused tools tend to outlast ambitious ones. A kitten care guide that's genuinely useful for the first year of ownership is enough scope for a first version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/jp/app/%E3%81%AD%E3%81%93%E3%81%9D%E3%81%A0%E3%81%A6/id6761289306" rel="noopener noreferrer"&gt;Nekososdate on the App Store&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>flutter</category>
      <category>indiedev</category>
      <category>cats</category>
    </item>
    <item>
      <title>We shipped an on-device Japanese braille reader — here's why offline-first was non-negotiable</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Mon, 18 May 2026 23:05:10 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-shipped-an-on-device-japanese-braille-reader-heres-why-offline-first-was-non-negotiable-4faa</link>
      <guid>https://dev.to/niixolabs/we-shipped-an-on-device-japanese-braille-reader-heres-why-offline-first-was-non-negotiable-4faa</guid>
      <description>&lt;h2&gt;
  
  
  The problem sitting in plain sight
&lt;/h2&gt;

&lt;p&gt;There's braille on train handrails, elevator buttons, and pill boxes all over Japan. Most people walk past it every day without a second thought — not because they don't care, but because almost nobody can read braille.&lt;/p&gt;

&lt;p&gt;TenjiScan is our attempt to close that gap. Point your iPhone camera at any Japanese braille, get plain text back. That's the whole pitch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we went fully offline
&lt;/h2&gt;

&lt;p&gt;The first architectural decision we locked in was: no server. Braille appears on medication packaging, medical devices, banking equipment — contexts where sending someone's photo to a remote endpoint feels like a bad trade. It's not worth the privacy exposure.&lt;/p&gt;

&lt;p&gt;Since v4.0.0, all recognition runs through a custom two-signal pipeline built on Vision. No network required, no image leaves the device. The trade-off is that we own the accuracy ceiling entirely — no external model updates — which pushes us to get the on-device pipeline right rather than lean on infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it actually supports
&lt;/h2&gt;

&lt;p&gt;The app handles JIS Japanese braille (the national standard, JIS T 0921) and UEB Grade 1 English braille. Grade 2 contracted English braille isn't supported yet — contracted braille compresses text using shorthand symbols, and it's a meaningful gap for English-speaking users who depend on it in practice. We know. It's on the list.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest limitation
&lt;/h2&gt;

&lt;p&gt;Lighting and shooting angle matter. Braille bumps cast shadows that make recognition possible, which means flat, even light actually hurts accuracy. We added UI guidance to help users find better angles, but in poor lighting the recognition still struggles. This isn't buried in fine print — it's just physics.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised us
&lt;/h2&gt;

&lt;p&gt;The use case we didn't fully anticipate: sighted people who are simply curious. Someone picks up a pill box they've owned for years and finally reads the braille on it. The app makes a small part of the tactile world readable without requiring expertise, and accessibility users have told us the on-device guarantee matters more to them than raw recognition speed.&lt;/p&gt;




&lt;p&gt;TenjiScan is free on the App Store, with a one-time purchase to remove ads.&lt;br&gt;
&lt;a href="https://apps.apple.com/jp/app/id6759526188" rel="noopener noreferrer"&gt;https://apps.apple.com/jp/app/id6759526188&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>a11y</category>
      <category>swift</category>
      <category>apps</category>
    </item>
    <item>
      <title>Musubiba: Making Neighborhood Association Workload Visible</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Sun, 17 May 2026 23:04:43 +0000</pubDate>
      <link>https://dev.to/niixolabs/musubiba-making-neighborhood-association-workload-visible-58fl</link>
      <guid>https://dev.to/niixolabs/musubiba-making-neighborhood-association-workload-visible-58fl</guid>
      <description>&lt;p&gt;Running a Japanese neighborhood association — jichikai or chonaikai — involves a surprisingly dense set of recurring tasks: circulating bulletins to every household, collecting annual dues, conducting safety checks on elderly residents, managing votes at the general meeting, maintaining a shared annual calendar, and writing handover documentation for whoever takes over next year.&lt;/p&gt;

&lt;p&gt;Most of this gets handled across paper forms, LINE group chats, and verbal hand-offs. Nobody holds a complete picture of who is doing how much, and that invisibility is a core reason these positions are perpetually hard to fill.&lt;/p&gt;

&lt;p&gt;Musubiba is our attempt to address that specific problem.&lt;/p&gt;

&lt;p&gt;The app isn't trying to automate volunteer work — the goal is visibility. When every task is logged in one place, workload distribution becomes data instead of assumption. A new officer inheriting the role can open structured handover notes instead of piecing things together from memory.&lt;/p&gt;

&lt;p&gt;The feature set covers exactly what the job requires: bulletin circulation with per-household tracking, dues collection, safety check logs, meeting votes, an annual schedule, and handover notes. Members join by scanning a QR code. There's also a web view for accounting entry, which we added because many officers are more comfortable entering financial data at a keyboard.&lt;/p&gt;

&lt;p&gt;Tech stack: Flutter for the shared iOS/Android codebase, Firebase (Firestore, Auth, Cloud Functions) for backend, Stripe plus Apple IAP for payments.&lt;/p&gt;

&lt;p&gt;One thing worth being upfront about: Musubiba is built specifically for Japan's jichikai/chonaikai structure. The terminology, flows, and assumptions reflect how Japanese neighborhood associations actually operate. It won't map cleanly to HOAs or similar organizations outside Japan — that's an honest scope limit, not an oversight.&lt;/p&gt;

&lt;p&gt;Pricing: free for groups up to 15 members. Unlimited membership costs ¥1,500/month.&lt;/p&gt;

&lt;p&gt;App Store: &lt;a href="https://apps.apple.com/jp/app/musubiba/id6759871374" rel="noopener noreferrer"&gt;https://apps.apple.com/jp/app/musubiba/id6759871374&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Google Play: &lt;a href="https://play.google.com/store/apps/details?id=com.htor.musubiba" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.htor.musubiba&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>firebase</category>
      <category>ios</category>
      <category>productivity</category>
    </item>
    <item>
      <title>We built a finance app that refuses to ask for your bank login</title>
      <dc:creator>niixolabs</dc:creator>
      <pubDate>Sat, 16 May 2026 23:03:01 +0000</pubDate>
      <link>https://dev.to/niixolabs/we-built-a-finance-app-that-refuses-to-ask-for-your-bank-login-2l94</link>
      <guid>https://dev.to/niixolabs/we-built-a-finance-app-that-refuses-to-ask-for-your-bank-login-2l94</guid>
      <description>&lt;h2&gt;
  
  
  The problem with most expense trackers
&lt;/h2&gt;

&lt;p&gt;Most personal finance apps assume you'll hand over your bank credentials. The whole UX is designed around that assumption: connect your account, pull your transactions, done. That's a valid model — but there's a real subset of users who have made a deliberate choice to never give an OAuth token for their bank account to a third-party service.&lt;/p&gt;

&lt;p&gt;moneasy was built for those users.&lt;/p&gt;

&lt;h2&gt;
  
  
  How logging works
&lt;/h2&gt;

&lt;p&gt;Two paths. Say "moneasy 記録" to Siri and the voice input goes through Apple Speech. Or hold the camera up to a receipt — Vision OCR reads it, and Gemini 2.5 Flash handles the messier cases: Japanese receipts especially have abbreviations and format variations that need a language model to interpret reliably. Either way, the entry lands in SwiftData and syncs across devices via CloudKit.&lt;/p&gt;

&lt;p&gt;The interaction is a few seconds. No account-linking screen, no permissions beyond camera and microphone.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trade-off we're upfront about
&lt;/h2&gt;

&lt;p&gt;No bank API means no automatic statement import. We say this plainly in the App Store description — surprising users with a limitation they care about is a worse outcome than losing them at the listing. CSV import is available for bulk historical data.&lt;/p&gt;

&lt;p&gt;For the user who has never connected a bank account to any third-party app, the absence of that feature is the point of the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ships
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Voice input via Apple Speech + receipt OCR via Vision, with Gemini 2.5 Flash for parsing edge cases&lt;/li&gt;
&lt;li&gt;SwiftData + CloudKit sync&lt;/li&gt;
&lt;li&gt;25 language support&lt;/li&gt;
&lt;li&gt;30-day free trial, then ¥450/month or ¥5,000/year&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finance is a crowded category. The wedge is narrow: voice input paired with a deliberate refusal to touch bank credentials.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.apple.com/jp/app/moneasy/id6742516728" rel="noopener noreferrer"&gt;moneasy on the App Store&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ios</category>
      <category>swift</category>
      <category>finance</category>
      <category>indiehacker</category>
    </item>
  </channel>
</rss>
