<?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: Rakovskyy</title>
    <description>The latest articles on DEV Community by Rakovskyy (@rakovskyyyy).</description>
    <link>https://dev.to/rakovskyyyy</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%2F4139483%2Fc30b5413-21ba-4da4-b0da-d9fe17c542a7.jpg</url>
      <title>DEV Community: Rakovskyy</title>
      <link>https://dev.to/rakovskyyyy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rakovskyyyy"/>
    <language>en</language>
    <item>
      <title>What If Your Screen Time Had a Bank Account? I Spent 6 Months Building One</title>
      <dc:creator>Rakovskyy</dc:creator>
      <pubDate>Wed, 23 Sep 2026 16:53:03 +0000</pubDate>
      <link>https://dev.to/rakovskyyyy/what-if-your-screen-time-had-a-bank-account-i-spent-6-months-building-one-4a08</link>
      <guid>https://dev.to/rakovskyyyy/what-if-your-screen-time-had-a-bank-account-i-spent-6-months-building-one-4a08</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F069b4hlefc4qye598r77.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F069b4hlefc4qye598r77.jpg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Opal stopped working for me during the second week—not because the app was broken, but because I kept finding ways around the rules I had created for myself. Sometimes I forgot to start a focus session. Other times, when a scheduled block appeared at an inconvenient moment, I simply removed the limit.&lt;/p&gt;

&lt;p&gt;I was both the person creating the restriction and the person who could disable it, and the second version of me usually appeared exactly when my self-control was at its lowest. This is not really a criticism of Opal. It simply made me notice a more fundamental problem with how I was trying to manage screen time.&lt;/p&gt;

&lt;p&gt;Most screen time tools begin with the same assumption:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you use an app too much, block it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But blocking did not make my time feel more valuable. It only created another rule that I could eventually ignore. Money is limited too, yet we do not manage it by permanently blocking every store. We earn it, keep it in an account, decide how to spend it, and notice when the balance approaches zero.&lt;/p&gt;

&lt;p&gt;That led me to a slightly strange question: what if screen time worked the same way? What if leisure time had to be earned first, stored in a balance, and consciously spent?&lt;/p&gt;

&lt;p&gt;That question eventually became &lt;strong&gt;Ravelo&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time as currency came first
&lt;/h2&gt;

&lt;p&gt;The idea of treating time as a currency existed from the beginning. The first model was simple: complete a focus session, earn minutes, add them to your balance, and spend those minutes to access selected apps. Instead of receiving an arbitrary daily limit, you would create your own allowance through focused work.&lt;/p&gt;

&lt;p&gt;The banking appearance came later, when I had to answer a difficult product question: why would anyone remember Ravelo when the App Store already had dozens of screen time tools? The earning and spending model was different, but the interface still looked like another productivity app.&lt;/p&gt;

&lt;p&gt;That was when I decided to make the metaphor visible. The balance became an account, the main screen started resembling a bank card, purchases became transactions, and focus sessions became deposits.&lt;/p&gt;

&lt;p&gt;These elements were not added only as decoration. They gave people a familiar mental model for understanding something abstract. You do not need a long tutorial to understand that a balance can increase, decrease, or run out.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first prototype was barely a product
&lt;/h2&gt;

&lt;p&gt;The first Ravelo prototype was rough, visually inconsistent, and dangerously easy to crash. It could block apps, and that was approximately the entire product. There was no polished banking interface, no proper transaction history, and very little protection against unusual states. It was the core mechanism wrapped in just enough UI to let someone try it.&lt;/p&gt;

&lt;p&gt;Opening the beta made the difference between a working mechanism and a usable product painfully obvious. Testers immediately found assumptions I had never questioned.&lt;/p&gt;

&lt;p&gt;There was no way to pause purchased time. If someone unlocked an app for 20 minutes, used it briefly, and put the phone away, the remaining minutes continued disappearing. The available purchase intervals were also too large. Sometimes a person did not want a full 15- or 20-minute session; they only wanted to reply to one message or check something for five minutes.&lt;/p&gt;

&lt;p&gt;The first versions were more forgiving about interrupted focus sessions. If someone planned a 30-minute session but stopped after ten minutes, those ten minutes were still added to the balance.&lt;/p&gt;

&lt;p&gt;At first, this seemed fair: the user had focused for ten minutes, so why should that effort disappear? But it weakened the meaning of the session. A focus session was supposed to be an investment in future leisure time, not a counter that could be stopped as soon as the accumulated reward felt sufficient.&lt;/p&gt;

&lt;p&gt;I eventually reversed the rule. Now, the planned session must be completed successfully before any minutes are added to the balance. When it is completed, the full reward is deposited at once.&lt;/p&gt;

&lt;p&gt;This made the relationship much clearer: you commit to a focus session, complete it, and receive the time you earned. The reward is no longer based only on how long the timer happened to run, but on keeping the commitment you made to yourself.&lt;/p&gt;

&lt;p&gt;The beta taught me that people were not evaluating Ravelo as an interesting experiment. They were trusting it with something they already felt they lacked: time. That made every lost minute, delayed block, and unclear state much more important.&lt;/p&gt;

&lt;h2&gt;
  
  
  The feature testers preferred was the one I could not trust
&lt;/h2&gt;

&lt;p&gt;During development, I experimented with two ways of spending time.&lt;/p&gt;

&lt;p&gt;The first was &lt;strong&gt;usage-based&lt;/strong&gt;. If you purchased 20 minutes for an app, the balance decreased only while you were actually using it. You could open the app for three minutes, leave, and still have 17 minutes available later. Testers liked this model because it felt fair and natural: the system charged for actual usage rather than time passing in the background.&lt;/p&gt;

&lt;p&gt;The second model was &lt;strong&gt;time-based&lt;/strong&gt;. If you purchased 20 minutes, the app stayed available for a 20-minute clock window. The session could be paused, but while it was active, time continued to pass whether the selected app was open or not.&lt;/p&gt;

&lt;p&gt;On paper, usage-based was clearly the better experience. In practice, it depended on something I could not guarantee.&lt;/p&gt;

&lt;p&gt;Ravelo uses Apple’s Screen Time frameworks, including &lt;code&gt;FamilyControls&lt;/code&gt;, &lt;code&gt;DeviceActivity&lt;/code&gt;, and &lt;code&gt;ManagedSettings&lt;/code&gt;. The usage-based model required the system to notify Ravelo when an app reached an exact usage threshold. If someone purchased 15 minutes, the rule was simple: at minute 15, access should end.&lt;/p&gt;

&lt;p&gt;But &lt;code&gt;DeviceActivity&lt;/code&gt; callbacks are not hard real-time events. In my testing, I could not rely on the selected app being blocked at the exact moment the purchased usage ran out, especially while the user was actively inside it.&lt;/p&gt;

&lt;p&gt;A small delay might sound harmless, but it broke the central promise of the product. If the balance says zero while the app remains available, even briefly, the balance is no longer something the user can fully trust.&lt;/p&gt;

&lt;p&gt;I had to choose between a more convenient model that behaved unpredictably in edge cases and a slightly less elegant model whose rules I could enforce consistently. I chose the second one, and Ravelo moved to the time-based system.&lt;/p&gt;

&lt;p&gt;It was difficult to remove the model users preferred, but a reliable promise was more important than a theoretically perfect experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apple’s 15-minute minimum met a five-minute user need
&lt;/h2&gt;

&lt;p&gt;The time-based model solved one problem and exposed another. Apple’s &lt;code&gt;DeviceActivity&lt;/code&gt; scheduling system expects an interval of at least 15 minutes, so 15 minutes became the natural minimum purchase inside Ravelo.&lt;/p&gt;

&lt;p&gt;Then testers asked a very reasonable question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if I only need five minutes?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fifteen minutes can be a long time inside an app you are actively trying to use less. Someone might only want to reply to a message, publish something, or check one piece of information. Forcing them to purchase 15 minutes meant they either spent more time than intended or watched the unused part of the purchase disappear.&lt;/p&gt;

&lt;p&gt;I did not want a framework limitation to become a product rule, so I added a translation layer. From the framework’s point of view, the interval is still 15 minutes long, but when someone chooses five minutes, the first ten minutes are treated as already elapsed.&lt;/p&gt;

&lt;p&gt;The framework gets the minimum interval it expects, while the user gets the five-minute window they requested. There is no complicated algorithm behind it, but this small workaround represents a large part of building Ravelo: translating rigid system constraints into rules that feel reasonable to a person.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ravelo is still an experiment
&lt;/h2&gt;

&lt;p&gt;Ravelo is available on iPhone, but I still see it as an experiment rather than a finished answer to screen time. The app works, the banking model is understandable, and the feedback from testers has already shaped many of its rules. What I do not know yet is whether this way of thinking about time can produce a lasting change instead of becoming another system people eventually learn to ignore.&lt;/p&gt;

&lt;p&gt;That is what I want to understand next: whether earning and spending time can remain useful after the novelty disappears, which parts of the model feel natural, and which ones still create unnecessary friction.&lt;/p&gt;

&lt;p&gt;For now, I am keeping the experiment focused on iPhone. If the model proves useful and people continue using it, I would like to bring Ravelo to Mac and eventually Android. A shared balance across devices could make the idea much more meaningful, but first I want to make sure the idea itself deserves to grow.&lt;/p&gt;

&lt;h2&gt;
  
  
  A bank cannot be “mostly correct”
&lt;/h2&gt;

&lt;p&gt;Turning Ravelo into a bank for time helped distinguish the product, but it also raised the standard users applied to it. People might tolerate an occasional inconsistency in a productivity timer, but they do not tolerate an incorrect balance.&lt;/p&gt;

&lt;p&gt;Once the interface includes a card, transactions, purchases, and deposits, every change starts to feel financial—even though no real money is involved. If a focus session completes, users expect the deposit to appear. If five minutes are purchased, they expect access to last five minutes. If a session is paused, they expect the remaining balance to stop moving.&lt;/p&gt;

&lt;p&gt;The banking metaphor made Ravelo easier to understand, but it also made reliability part of the design. I could not treat the interface and the underlying Screen Time logic as separate problems. A beautiful balance that is occasionally wrong is worse than an ugly balance that can be trusted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open beta changed the product more than I expected
&lt;/h2&gt;

&lt;p&gt;I initially thought the beta would mostly uncover crashes. It did uncover crashes, but the more valuable feedback was about the rules themselves.&lt;/p&gt;

&lt;p&gt;Testers did not describe problems using technical terms. They talked about moments when purchased time continued disappearing after they had put the phone away, when the minimum purchase felt too large, or when an app did not lock again exactly when they expected it to.&lt;/p&gt;

&lt;p&gt;Their feedback also forced me to think more carefully about what a completed focus session should mean. Should every minute spent focusing produce an immediate reward, or should the reward represent a commitment carried through to the end?&lt;/p&gt;

&lt;p&gt;Those questions exposed gaps that code reviews could not. I was testing whether Ravelo performed the actions I had programmed. Users were testing whether Ravelo behaved according to rules they could understand and accept.&lt;/p&gt;

&lt;p&gt;Those are not the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Six months later
&lt;/h2&gt;

&lt;p&gt;Ravelo did not emerge from a perfect product plan. It grew from a personal failure with app blocking, a slightly strange analogy, an unstable prototype, and many conversations with testers who used the product differently from how I expected.&lt;/p&gt;

&lt;p&gt;The original question is still at its center:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What if screen time was something you earned and consciously spent?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At first, I thought the difficult part would be tracking minutes. Later, I thought it would be enforcing restrictions. Eventually, I realized the hardest part was creating a system that felt fair, remained predictable under iOS constraints, and was simple enough for someone to trust without understanding how it worked.&lt;/p&gt;

&lt;p&gt;I still think usage-based spending is the more natural model. But I would rather ship a slightly less elegant promise that Ravelo can keep than a perfect idea it can only enforce most of the time.&lt;/p&gt;

&lt;p&gt;Ravelo is now available on iPhone, and I am still learning where this model works, where it fails, and whether thinking about time as a balance can actually change the way people use it.&lt;/p&gt;

&lt;p&gt;Learn more at &lt;a href="https://ravelo.app/" rel="noopener noreferrer"&gt;ravelo.app&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Or download Ravelo directly from the &lt;a href="https://apps.apple.com/us/app/ravelo-screen-time-banking/id6760021476" rel="noopener noreferrer"&gt;App Store&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you were making the same decision, which would you choose: usage-based access with occasional timing uncertainty, or a predictable time window that may charge for minutes you do not use?&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>ios</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
