<?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: CJ</title>
    <description>The latest articles on DEV Community by CJ (@zennmarieee).</description>
    <link>https://dev.to/zennmarieee</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%2F3960900%2F5add7a87-c074-4974-9f06-efd2733831c5.jpg</url>
      <title>DEV Community: CJ</title>
      <link>https://dev.to/zennmarieee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zennmarieee"/>
    <language>en</language>
    <item>
      <title>I Finally Finished LifeSquares: A Life-in-Weeks Reflection App</title>
      <dc:creator>CJ</dc:creator>
      <pubDate>Sun, 07 Jun 2026 16:34:36 +0000</pubDate>
      <link>https://dev.to/zennmarieee/i-finally-finished-lifesquares-a-life-in-weeks-reflection-app-4iia</link>
      <guid>https://dev.to/zennmarieee/i-finally-finished-lifesquares-a-life-in-weeks-reflection-app-4iia</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;LifeSquares is a reflective web application that visualizes a person's life as a grid of weeks. Each square represents a single week, turning the abstract concept of time into something tangible and easier to understand.&lt;/p&gt;

&lt;p&gt;The project was inspired by the idea that life is finite and that seeing time visually can encourage more intentional living. Rather than focusing on productivity or achievement, LifeSquares is designed as a personal reflection tool that helps users think about their past, present, and future.&lt;/p&gt;

&lt;p&gt;Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive life grid where every week is represented as a square&lt;/li&gt;
&lt;li&gt;Birthdate-based calculations for weeks lived and weeks remaining&lt;/li&gt;
&lt;li&gt;Adjustable lifespan projections&lt;/li&gt;
&lt;li&gt;Life phase visualization using color-coded stages&lt;/li&gt;
&lt;li&gt;Weekly journaling and reflection entries&lt;/li&gt;
&lt;li&gt;Life statistics and summary metrics&lt;/li&gt;
&lt;li&gt;Responsive and accessible interface&lt;/li&gt;
&lt;li&gt;Light and dark theme support&lt;/li&gt;
&lt;li&gt;Local storage persistence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://lifesquares.vercel.app/" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Check out the Live Demo&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/zennmarieee" rel="noopener noreferrer"&gt;
        zennmarieee
      &lt;/a&gt; / &lt;a href="https://github.com/zennmarieee/LifeSquares" rel="noopener noreferrer"&gt;
        LifeSquares
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Each square equals one week, turning time into something tangible and reflective.
    &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;LifeSquares&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;LifeSquares is a web-based life visualization app that represents a lifespan as a grid of weekly squares
Each square equals one week, turning time into something tangible and reflective.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What it does&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Accepts a birthdate (date picker + typed input support)&lt;/li&gt;
&lt;li&gt;Calculates weeks lived and weeks remaining from a 4,000-week model&lt;/li&gt;
&lt;li&gt;Displays a life grid with per-row labels:
&lt;ul&gt;
&lt;li&gt;Left: Age (starts at 0)&lt;/li&gt;
&lt;li&gt;Right: Calendar year (based on selected birth year)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Supports two grid modes:
&lt;ul&gt;
&lt;li&gt;Standard mode: lived vs remaining&lt;/li&gt;
&lt;li&gt;Typical average life phases mode: color-coded phase ranges&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Typical phase color coding&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;When enabled, the grid can display a suggested phase model:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Childhood (0–12)&lt;/li&gt;
&lt;li&gt;Teen &amp;amp; Early Adult (13–24)&lt;/li&gt;
&lt;li&gt;Working Years (25–64)&lt;/li&gt;
&lt;li&gt;Retirement &amp;amp; Later Life (65+)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Future weeks are shown as faded in this mode.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Tech stack&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;Tailwind CSS (via &lt;code&gt;@tailwindcss/vite&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Run locally&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Install dependencies&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install&lt;/pre&gt;

&lt;/div&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Start development server&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm run dev&lt;/pre&gt;

&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Build for…&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/zennmarieee/LifeSquares" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;h3&gt;
  
  
  Video Walkthrough
&lt;/h3&gt;

&lt;p&gt;Demo:   &lt;iframe src="https://www.youtube.com/embed/frlmt0q53Pw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;The walkthrough demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a life grid from a birthdate&lt;/li&gt;
&lt;li&gt;Exploring life statistics&lt;/li&gt;
&lt;li&gt;Switching lifespan projections&lt;/li&gt;
&lt;li&gt;Writing journal entries&lt;/li&gt;
&lt;li&gt;Theme switching and persistence&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&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%2Ftg6x4qfqcr83kuxqtd89.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%2Ftg6x4qfqcr83kuxqtd89.png" alt="Original LifeSquares prototype showing a basic life grid with minimal styling" width="799" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  After
&lt;/h3&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%2Frdsnijmv7gvvoy1lz87z.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%2Frdsnijmv7gvvoy1lz87z.png" alt="Redesigned LifeSquares interface featuring an interactive life grid and improved layout" width="799" height="434"&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%2Fn3uxt5qjmdkp72miqf1r.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%2Fn3uxt5qjmdkp72miqf1r.png" alt="Redesigned Lifesquares Dark Mode Version" width="800" height="435"&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%2Fnofmvdcw9aq8yqktynt3.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%2Fnofmvdcw9aq8yqktynt3.png" alt="Redesigned Lifesquares Stats Tab" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comeback Story: Resurrecting LifeSquares
&lt;/h2&gt;

&lt;p&gt;LifeSquares started as an experiment inspired by the “life in weeks” concept. The initial version did its job—it could render a life grid and calculate weeks lived—but it always felt closer to a visualization than a real product.&lt;/p&gt;

&lt;p&gt;When I returned to it for the &lt;strong&gt;Finish-Up-A-Thon&lt;/strong&gt;, it was clear the project had potential, but it was incomplete in every meaningful way: no persistence, no reflection layer, and no real structure beyond the grid itself.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The Goal:&lt;/strong&gt; Before the challenge, LifeSquares could &lt;em&gt;display&lt;/em&gt; time. After revisiting it, I wanted it to help users &lt;em&gt;interact&lt;/em&gt; with time.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  The Technical Debt Wake-up Call
&lt;/h3&gt;

&lt;p&gt;Reopening the codebase months later was a reality check. The architecture had drifted into something fragile—state was scattered, components were tightly coupled, and the grid logic was doing far more than it should have been responsible for. Even small changes risked breaking unrelated parts of the UI.&lt;/p&gt;

&lt;p&gt;The biggest pivots I had to make were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Refactoring state management:&lt;/strong&gt; Moving from a scattered component-level approach into a more structured flow.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Rebuilding the grid logic:&lt;/strong&gt; Decoupling it from user data so it could scale cleanly with different lifespan configurations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Debugging Nightmare
&lt;/h3&gt;

&lt;p&gt;The most frustrating issue showed up in the grid layout. On certain screen sizes (especially mobile Safari), the squares would subtly shift out of alignment.&lt;/p&gt;

&lt;p&gt;I ended up tracing it back to how offsets were being calculated when mapping weeks into rows and columns. The logic assumed a fixed layout, which completely broke under responsive scaling. The fix came from simplifying the calculation instead of overengineering it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// The corrected approach: Deriving the grid from a single source of truth&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;calculateGrid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lifeExpectancy&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Each year = 52 weeks, grid is derived directly from total weeks&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;lifeExpectancy&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;52&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  My Experience with GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot acted as a development partner throughout the project.&lt;/p&gt;

&lt;p&gt;I used Copilot to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accelerate React component development&lt;/li&gt;
&lt;li&gt;Generate repetitive UI boilerplate&lt;/li&gt;
&lt;li&gt;Refactor existing code&lt;/li&gt;
&lt;li&gt;Improve accessibility implementations&lt;/li&gt;
&lt;li&gt;Explore alternative approaches for state management&lt;/li&gt;
&lt;li&gt;Speed up debugging and iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than replacing my decision-making, Copilot helped reduce development friction and allowed me to focus more on product design, user experience, and feature refinement.&lt;/p&gt;

&lt;p&gt;The Finish-Up-A-Thon provided the perfect motivation to revisit an unfinished idea and turn it into something I was excited to share publicly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Future plans for LifeSquares include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data export and backup options&lt;/li&gt;
&lt;li&gt;Richer journaling experiences&lt;/li&gt;
&lt;li&gt;Goal and milestone tracking&lt;/li&gt;
&lt;li&gt;Calendar integrations&lt;/li&gt;
&lt;li&gt;Additional visualization modes&lt;/li&gt;
&lt;li&gt;Optional cloud synchronization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LifeSquares reminded me that unfinished projects still have potential—it just takes the decision to come back and finish them.&lt;/p&gt;

&lt;p&gt;I'm curious—how do you all track your time or personal milestones? Do you prefer 'productivity' focused tools, or are you more into 'reflection' tools like LifeSquares? Let me know in the comments!&lt;/p&gt;

</description>
      <category>githubchallenge</category>
      <category>devchallenge</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Finally Finished LifeSquares: A Life-in-Weeks Reflection App</title>
      <dc:creator>CJ</dc:creator>
      <pubDate>Sun, 07 Jun 2026 15:45:36 +0000</pubDate>
      <link>https://dev.to/zennmarieee/i-finally-finished-lifesquares-a-life-in-weeks-reflection-app-4lgb</link>
      <guid>https://dev.to/zennmarieee/i-finally-finished-lifesquares-a-life-in-weeks-reflection-app-4lgb</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;LifeSquares is a reflective web application that visualizes a person's life as a grid of weeks. Each square represents a single week, turning the abstract concept of time into something tangible and easier to understand.&lt;/p&gt;

&lt;p&gt;The project was inspired by the idea that life is finite and that seeing time visually can encourage more intentional living. Rather than focusing on productivity or achievement, LifeSquares is designed as a personal reflection tool that helps users think about their past, present, and future.&lt;/p&gt;

&lt;p&gt;Key features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Interactive life grid where every week is represented as a square&lt;/li&gt;
&lt;li&gt;Birthdate-based calculations for weeks lived and weeks remaining&lt;/li&gt;
&lt;li&gt;Adjustable lifespan projections&lt;/li&gt;
&lt;li&gt;Life phase visualization using color-coded stages&lt;/li&gt;
&lt;li&gt;Weekly journaling and reflection entries&lt;/li&gt;
&lt;li&gt;Life statistics and summary metrics&lt;/li&gt;
&lt;li&gt;Responsive and accessible interface&lt;/li&gt;
&lt;li&gt;Light and dark theme support&lt;/li&gt;
&lt;li&gt;Local storage persistence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Live Demo:&lt;/strong&gt; &lt;a href="https://lifesquares.vercel.app/" rel="noopener noreferrer"&gt;https://lifesquares.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source Code:&lt;/strong&gt; &lt;a href="https://github.com/zennmarieee/LifeSquares" rel="noopener noreferrer"&gt;https://github.com/zennmarieee/LifeSquares&lt;/a&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Video Walkthrough
&lt;/h3&gt;

&lt;p&gt;Demo: &lt;a href="https://www.youtube.com/watch?v=frlmt0q53Pw" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=frlmt0q53Pw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The walkthrough demonstrates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating a life grid from a birthdate&lt;/li&gt;
&lt;li&gt;Exploring life statistics&lt;/li&gt;
&lt;li&gt;Switching lifespan projections&lt;/li&gt;
&lt;li&gt;Writing journal entries&lt;/li&gt;
&lt;li&gt;Theme switching and persistence&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Before
&lt;/h3&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%2Ftg6x4qfqcr83kuxqtd89.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%2Ftg6x4qfqcr83kuxqtd89.png" alt="Original LifeSquares prototype showing a basic life grid with minimal styling" width="799" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  After
&lt;/h3&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%2Frdsnijmv7gvvoy1lz87z.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%2Frdsnijmv7gvvoy1lz87z.png" alt="Redesigned LifeSquares interface featuring an interactive life grid and improved layout" width="799" height="434"&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%2Fn3uxt5qjmdkp72miqf1r.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%2Fn3uxt5qjmdkp72miqf1r.png" alt="After App" width="800" height="435"&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%2Fnofmvdcw9aq8yqktynt3.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%2Fnofmvdcw9aq8yqktynt3.png" alt="After App" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Comeback Story
&lt;/h2&gt;

&lt;p&gt;LifeSquares started as an experiment inspired by the popular "life in weeks" concept. The initial version successfully displayed a life grid, but it felt more like a visualization than a complete product.&lt;/p&gt;

&lt;p&gt;Before participating in the Finish-Up-A-Thon, LifeSquares could display a life grid and calculate weeks lived, but it lacked journaling, life statistics, theme support, local persistence, and many of the features needed to make it useful beyond a simple visualization.&lt;/p&gt;

&lt;p&gt;During the challenge, I focused on transforming it from a simple concept into a more complete experience by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding weekly journaling functionality&lt;/li&gt;
&lt;li&gt;Building life summaries and statistics dashboards&lt;/li&gt;
&lt;li&gt;Creating lifespan customization options&lt;/li&gt;
&lt;li&gt;Improving accessibility and keyboard navigation&lt;/li&gt;
&lt;li&gt;Implementing light and dark themes&lt;/li&gt;
&lt;li&gt;Adding local persistence so data survives page refreshes&lt;/li&gt;
&lt;li&gt;Improving the overall UI and responsiveness&lt;/li&gt;
&lt;li&gt;Preparing the application for deployment and public use&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest improvement was shifting the project from merely showing time to helping users reflect on how they spend it.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot acted as a development partner throughout the project.&lt;/p&gt;

&lt;p&gt;I used Copilot to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accelerate React component development&lt;/li&gt;
&lt;li&gt;Generate repetitive UI boilerplate&lt;/li&gt;
&lt;li&gt;Refactor existing code&lt;/li&gt;
&lt;li&gt;Improve accessibility implementations&lt;/li&gt;
&lt;li&gt;Explore alternative approaches for state management&lt;/li&gt;
&lt;li&gt;Speed up debugging and iteration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Rather than replacing my decision-making, Copilot helped reduce development friction and allowed me to focus more on product design, user experience, and feature refinement.&lt;/p&gt;

&lt;p&gt;The Finish-Up-A-Thon provided the perfect motivation to revisit an unfinished idea and turn it into something I was excited to share publicly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Future plans for LifeSquares include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data export and backup options&lt;/li&gt;
&lt;li&gt;Richer journaling experiences&lt;/li&gt;
&lt;li&gt;Goal and milestone tracking&lt;/li&gt;
&lt;li&gt;Calendar integrations&lt;/li&gt;
&lt;li&gt;Additional visualization modes&lt;/li&gt;
&lt;li&gt;Optional cloud synchronization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LifeSquares reminded me that unfinished projects still have potential—it just takes the decision to come back and finish them.&lt;/p&gt;

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