<?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: Tiny Spark</title>
    <description>The latest articles on DEV Community by Tiny Spark (@tiny_spark_23534).</description>
    <link>https://dev.to/tiny_spark_23534</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4031001%2Fe2c29823-bbc5-4655-8001-9ac610644f0c.png</url>
      <title>DEV Community: Tiny Spark</title>
      <link>https://dev.to/tiny_spark_23534</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tiny_spark_23534"/>
    <language>en</language>
    <item>
      <title>I built a bedtime-coach app solo and shipped it in 6 languages, here's what I learned</title>
      <dc:creator>Tiny Spark</dc:creator>
      <pubDate>Tue, 11 Aug 2026 13:27:37 +0000</pubDate>
      <link>https://dev.to/tiny_spark_23534/i-built-a-bedtime-coach-app-solo-and-shipped-it-in-6-languages-heres-what-i-learned-2glb</link>
      <guid>https://dev.to/tiny_spark_23534/i-built-a-bedtime-coach-app-solo-and-shipped-it-in-6-languages-heres-what-i-learned-2glb</guid>
      <description>&lt;p&gt;I just published Dormeil, a bedtime-routine coaching app for Android, built entirely solo. Sharing a few honest lessons for anyone building a consumer app on the side.&lt;/p&gt;

&lt;p&gt;What it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calculates your ideal bedtime from your wake-up time and how much sleep you need (weekday and weekend).&lt;/li&gt;
&lt;li&gt;An evening ritual: calming sounds played for as long as you want to help you fall asleep — you can even add your own sounds.&lt;/li&gt;
&lt;li&gt;A configurable gentle alarm (snooze, gradually rising volume, soft natural sounds).&lt;/li&gt;
&lt;li&gt;A "garden" you grow by respecting your bedtime and earning points — light gamification to stay motivated.&lt;/li&gt;
&lt;li&gt;Sleep stats and a monthly journal.
Free, with an optional Premium mode (no ads, multiple sounds at once, PDF/CSV journal export).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A few things I'd do again:&lt;/p&gt;

&lt;p&gt;Localizing early. I shipped in French, English, German, Spanish, Italian and Portuguese from day one instead of bolting languages on later. More upfront work, but each locale is effectively its own low-competition mini-market on the Play Store.&lt;/p&gt;

&lt;p&gt;Keeping the feature set tight. I stuck to a few clear pillars — bedtime calculation, ritual, gentle wake-up, motivation garden — so the app stays explainable in one sentence.&lt;/p&gt;

&lt;p&gt;A few things I'm still figuring out:&lt;/p&gt;

&lt;p&gt;Marketing on close to zero budget. No paid ads, no big social following — leaning entirely on ASO, SEO content on my own site, and genuine community participation.&lt;/p&gt;

&lt;p&gt;Naming and trademark timing. "Dormeil" is a made-up French word (a play on "réveil", meaning alarm/wake-up). Invented names are strong but easy for someone else to register first if you wait too long — still weighing when it's worth the cost at this stage.&lt;/p&gt;

&lt;p&gt;If you're curious, Dormeil is live on the Play Store: &lt;a href="https://play.google.com/store/apps/details?id=com.tinyspark.dormeil" rel="noopener noreferrer"&gt;https://play.google.com/store/apps/details?id=com.tinyspark.dormeil&lt;/a&gt; — happy to answer questions about the build, the localization approach, or anything else. Feedback very welcome.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>seo</category>
      <category>showdev</category>
      <category>android</category>
    </item>
    <item>
      <title>5 mistakes I made building my first Android app (and how I fixed them)</title>
      <dc:creator>Tiny Spark</dc:creator>
      <pubDate>Wed, 15 Jul 2026 20:13:50 +0000</pubDate>
      <link>https://dev.to/tiny_spark_23534/5-mistakes-i-made-building-my-first-android-app-and-how-i-fixed-them-4jem</link>
      <guid>https://dev.to/tiny_spark_23534/5-mistakes-i-made-building-my-first-android-app-and-how-i-fixed-them-4jem</guid>
      <description>&lt;p&gt;I'm not a developer. I build Android apps on evenings and weekends using AI coding assistants (GitHub Copilot and Claude). My latest app, ScorePop, is a free score counter for board games — you tap + or − to track points. Simple concept, but getting it right taught me a lot.&lt;br&gt;
Here are 5 mistakes I made and how I fixed each one.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The app crashed when users rotated their phone&lt;br&gt;
I had a popup (a BottomSheet) that received a direct reference to a piece of the screen. When the user rotated their phone, Android destroys and rebuilds the entire screen — but the popup still pointed to the old, destroyed version.&lt;br&gt;
The fix: instead of passing screen elements directly, I used Android's FragmentResult API to send data back safely. The popup sends a message, the main screen listens for it. No direct connection, no crash.&lt;br&gt;
Lesson: on Android, never pass screen elements between components. Use messages instead.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The timer leaked memory when the app was closed&lt;br&gt;
ScorePop has a stopwatch feature. My timer kept running in the background even after the user left the app. It wasn't a visible crash — it was a silent memory leak that drained battery.&lt;br&gt;
The fix: I added code to pause the timer when the app goes to the background, and resume it when the user comes back. And when the app is fully closed, everything is cleaned up.&lt;br&gt;
Lesson: anything that runs on a loop (timers, animations) needs to be tied to the app's lifecycle. If the screen is gone, the loop should stop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I put an ad in the worst possible place&lt;br&gt;
My original flow: user taps Share → a full-screen ad plays → then the share screen opens.&lt;br&gt;
I thought it was smart — monetize a high-traffic action. In reality, I was punishing users for trying to show their friends my app. That's free marketing I was blocking with an ad.&lt;br&gt;
The fix: I moved the ad to after saving a game — a natural pause where the user is between games, not mid-action. Sharing is now instant, zero interruption.&lt;br&gt;
Lesson: monetize transitions (between games), not actions (sharing, saving). If the user is doing something social, get out of their way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The main screen had too many buttons&lt;br&gt;
Version 1 had 6 tiny buttons (32 pixels each) crammed into the top bar. Save, share, new game, timer, load, menu — all visible at once. Functional? Yes. Usable during a heated board game? No.&lt;br&gt;
The fix: I kept 3 buttons in the top bar (menu, save, and a ⋮ overflow menu). The other 4 actions moved inside the overflow menu. I also removed a hidden "add custom points" section from each player card and replaced it with a simple tap on the score number.&lt;br&gt;
Result: each player card shrank by 40%. Four players now fit on screen without scrolling.&lt;br&gt;
Lesson: the features you remove matter more than the ones you add. A clean screen beats a powerful one.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The app was bigger than it needed to be&lt;br&gt;
For months, I shipped the app without enabling Android's built-in code optimizer (R8/ProGuard). That means the final app included unused code from every library, uncompressed.&lt;br&gt;
The fix: two lines in the build configuration:&lt;br&gt;
isMinifyEnabled = true&lt;br&gt;
isShrinkResources = true&lt;br&gt;
The app got smaller, faster to install, and the code was obfuscated (harder to reverse-engineer).&lt;br&gt;
Lesson: enable R8 in release builds. It's free performance.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What I'd add if I started over&lt;/p&gt;

&lt;p&gt;Undo from day one. Users make scoring mistakes constantly. I added an undo stack later, but it should have been there from the start.&lt;br&gt;
Haptic feedback. A subtle vibration on every +/− tap makes scoring feel satisfying. Tiny detail, big impact.&lt;br&gt;
Celebration effects. When you save a game, confetti rains down and the winner gets a trophy animation. People screenshot it and share it. It's free marketing.&lt;/p&gt;

&lt;p&gt;Try it&lt;br&gt;
ScorePop is free on Google Play — search "ScorePop". If you're building your first app too, I'm happy to answer questions in the comments.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>android</category>
      <category>kotlin</category>
      <category>indiedev</category>
    </item>
  </channel>
</rss>
