<?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>Forem: David Handsman</title>
    <description>The latest articles on Forem by David Handsman (@djhandsman).</description>
    <link>https://forem.com/djhandsman</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%2F2717791%2Fb39595b8-f162-4731-a31b-3439032135b4.png</url>
      <title>Forem: David Handsman</title>
      <link>https://forem.com/djhandsman</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/djhandsman"/>
    <language>en</language>
    <item>
      <title>Routini: the (mini) app for sticking to routines</title>
      <dc:creator>David Handsman</dc:creator>
      <pubDate>Mon, 20 Jan 2025 07:58:03 +0000</pubDate>
      <link>https://forem.com/djhandsman/routini-the-mini-app-for-sticking-to-routines-40go</link>
      <guid>https://forem.com/djhandsman/routini-the-mini-app-for-sticking-to-routines-40go</guid>
      <description>&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I’m not a “routine” person.&lt;/p&gt;

&lt;p&gt;Every morning is an aimless, unstructured haze—&lt;em&gt;Coffee first? Maybe a 5-minute stretch? No, I should brush my teeth...&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;During one of these bouts of decision paralysis a few days ago, I felt a sudden desire to be &lt;em&gt;told&lt;/em&gt; what to do.&lt;/p&gt;

&lt;p&gt;I imagined my phone screen turning orange for 5 minutes (Stretch!), then blue for 30 seconds (Drink water!), then mint green for 2 minutes (Brush teeth!).&lt;/p&gt;

&lt;p&gt;If I could just preprogram my routines ahead of time, all I'd have to do is push "play" and follow along. No decisions, no haze. The concept for Routini was born. &lt;/p&gt;

&lt;p&gt;I know—it's not groundbreaking. But, I find most habit-building apps to be bloated with features: calendars and charts and achievements and pesky configurations. These apps make me feel &lt;em&gt;more&lt;/em&gt; overwhelmed, not less.&lt;/p&gt;

&lt;p&gt;Routini had to be simple and visual—something I'd actually &lt;em&gt;want&lt;/em&gt; to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;The structure of the app is simple—users create “Routines” comprised of “Tasks” with preprogrammed durations. When you click on a saved Routine, each Task “plays” in order, with its own full-screen color and emoji.&lt;/p&gt;

&lt;p&gt;In addition to helping users stick to routines, the app can also be used to structure time for one-off projects. &lt;/p&gt;

&lt;h5&gt;
  
  
  Link to app
&lt;/h5&gt;

&lt;p&gt;(I designed Routini primarily for mobile, so on desktop, try reducing your window's width for the best view.)&lt;br&gt;
&lt;a href="https://djhandsman.github.io/Routini/" rel="noopener noreferrer"&gt;https://djhandsman.github.io/Routini/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used comically short tasks for a quicker demo video 🤓&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/OiKnntlIyWc"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h5&gt;
  
  
  Planning
&lt;/h5&gt;

&lt;p&gt;For me, the creative process begins off-screen, sketching with marker and paper to organize my thoughts.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Fniphdh54srl29f6a5ijp.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.amazonaws.com%2Fuploads%2Farticles%2Fniphdh54srl29f6a5ijp.jpg" alt="planning phase sketches" width="750" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used Figma to build higher fidelity mockups.&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F859pp2796085ekm4yk9i.png" 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.amazonaws.com%2Fuploads%2Farticles%2F859pp2796085ekm4yk9i.png" alt="Figma screens 1-5" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2Ffggt2bvj93jrmstufzx1.png" 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.amazonaws.com%2Fuploads%2Farticles%2Ffggt2bvj93jrmstufzx1.png" alt="Figma screens 6-9" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Obviously, my implementation doesn't match the Figma specs...yet!&lt;/p&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/djhandsman" rel="noopener noreferrer"&gt;
        djhandsman
      &lt;/a&gt; / &lt;a href="https://github.com/djhandsman/Routini" rel="noopener noreferrer"&gt;
        Routini
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The (mini) app for sticking to routines
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Routini&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;My submission for the GitHub Copilot 1-Day Build Challenge&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/djhandsman/Routini" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  Copilot Experience
&lt;/h2&gt;

&lt;p&gt;Chat was &lt;em&gt;vital&lt;/em&gt; for the development of this project:&lt;/p&gt;

&lt;h5&gt;
  
  
  Development and Debugging
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Implemented a slide-up task entry sheet with a scrim overlay.&lt;/li&gt;
&lt;li&gt;Resolved a z-index issue causing the scrim to appear incorrectly over the sheet.&lt;/li&gt;
&lt;li&gt;Added draggable task rows, including SVG drag icons, and debugged conflicts with the color selector.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Usability Improvements
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Simplified task duration input to accept minutes only and fixed edge cases in the time-parsing logic, like when 0 was entered.&lt;/li&gt;
&lt;li&gt;Enabled emoji selection for routine names, ensuring the emoji was saved to the routine object.&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Styling and Layout
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Styled and aligned key elements, such as horizontally centering the “Add Task” button and fixing layout issues for task rows.&lt;/li&gt;
&lt;li&gt;Updated placeholder text styling and behavior for input fields like “Routine Name.”&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  Bug Fixes
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Solved a bug where duplicate tasks were created when clicking "Add Task."&lt;/li&gt;
&lt;li&gt;Fixed an issue where task durations displayed as "undefined."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also used the code completion feature quite a bit, which I found pleasingly seamless!&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Models
&lt;/h2&gt;

&lt;p&gt;I didn't use GitHub Models for this project. Maybe next time!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I'll be honest—I didn't really know what Git or GitHub was before signing up for this hackathon.&lt;/p&gt;

&lt;p&gt;Aside from now knowing how to commit, push, pull, and merge, I feel that my prototype of Routini shows promise (Thanks, Copilot!). But, there's still much I want to add, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;animations &amp;amp; transitions&lt;/li&gt;
&lt;li&gt;audio features for better accessibility&lt;/li&gt;
&lt;li&gt;desktop compatibility&lt;/li&gt;
&lt;li&gt;all emoji options&lt;/li&gt;
&lt;li&gt;user education&lt;/li&gt;
&lt;li&gt;and more!&lt;/li&gt;
&lt;/ul&gt;

&lt;h5&gt;
  
  
  A note on the name
&lt;/h5&gt;

&lt;p&gt;Routini is a portmanteau of "Routine" and "Tiny" (or "Mini"), which feels appropriate given the app's intentionally small scope.&lt;/p&gt;

&lt;h5&gt;
  
  
  Me using Routini to help create this post:
&lt;/h5&gt;

&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.amazonaws.com%2Fuploads%2Farticles%2F8eh57bp15xpnzu47lba4.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.amazonaws.com%2Fuploads%2Farticles%2F8eh57bp15xpnzu47lba4.jpg" alt="Me using Routini to help create this post" width="600" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading! 👨‍💻&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
