<?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: Precious Grace Deborah S. Manucom</title>
    <description>The latest articles on DEV Community by Precious Grace Deborah S. Manucom (@precious_gracedeborahs).</description>
    <link>https://dev.to/precious_gracedeborahs</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%2F3804974%2F2a3ff6be-f227-4744-9ca2-7870e23b55c9.jpg</url>
      <title>DEV Community: Precious Grace Deborah S. Manucom</title>
      <link>https://dev.to/precious_gracedeborahs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/precious_gracedeborahs"/>
    <language>en</language>
    <item>
      <title>✦ Solstice Valley — An Adventure of Light &amp; Shadow</title>
      <dc:creator>Precious Grace Deborah S. Manucom</dc:creator>
      <pubDate>Sun, 07 Jun 2026 17:50:32 +0000</pubDate>
      <link>https://dev.to/precious_gracedeborahs/solstice-valley-an-adventure-of-light-shadow-3nao</link>
      <guid>https://dev.to/precious_gracedeborahs/solstice-valley-an-adventure-of-light-shadow-3nao</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the June Solstice Game Jam 2026.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&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%2Fcrgp0b4z534v4b93i53s.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%2Fcrgp0b4z534v4b93i53s.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solstice Valley&lt;/strong&gt; is a browser-based pixel-art action RPG built entirely inside a single HTML file using HTML5 Canvas and vanilla JavaScript.&lt;/p&gt;

&lt;p&gt;The game takes place in a valley where the balance between day and night has been disrupted. Players explore the world, interact with villagers, complete quests, collect Sun and Moon Fragments, battle shadow creatures, and ultimately defeat the ancient Shadow Boss to restore harmony.&lt;/p&gt;

&lt;p&gt;Play it here: &lt;a href="https://debb1ie.github.io/Soltice-Valley-Drop/" rel="noopener noreferrer"&gt;https://debb1ie.github.io/Soltice-Valley-Drop/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The core theme of the game revolves around &lt;strong&gt;light and shadow&lt;/strong&gt;, reflected through a dynamic day/night cycle that continuously transforms the environment. During the day, the valley feels vibrant and safe. At night, stars emerge, lanterns glow, shadows deepen, and hidden dangers become more prominent.&lt;/p&gt;

&lt;p&gt;My goal was to create a complete RPG experience while embracing an additional challenge: &lt;strong&gt;building everything in a single self-contained HTML file with zero dependencies&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic 60-second day/night cycle&lt;/li&gt;
&lt;li&gt;Responsive controls for desktop, tablet, and mobile&lt;/li&gt;
&lt;li&gt;Quest-driven progression system&lt;/li&gt;
&lt;li&gt;Multiple NPCs with evolving dialogue&lt;/li&gt;
&lt;li&gt;Combo-based combat mechanics&lt;/li&gt;
&lt;li&gt;Dash system with invincibility frames&lt;/li&gt;
&lt;li&gt;Shadow Wisp enemies and a multi-phase boss fight&lt;/li&gt;
&lt;li&gt;Leveling, XP, and item drops&lt;/li&gt;
&lt;li&gt;Particle effects and screen shake&lt;/li&gt;
&lt;li&gt;Fully playable offline&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;&lt;em&gt;(Add your gameplay video here)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Recommended footage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Intro showing the day/night transition&lt;/li&gt;
&lt;li&gt;Quest progression with Elder Mira&lt;/li&gt;
&lt;li&gt;Collecting Sun and Moon Fragments&lt;/li&gt;
&lt;li&gt;Combat against Shadow Wisps&lt;/li&gt;
&lt;li&gt;Boss battle Phase 1 and Phase 2&lt;/li&gt;
&lt;li&gt;Victory sequence and fireworks finale&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;The entire project is contained in a single HTML file.&lt;/p&gt;

&lt;p&gt;Repository:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://github.com/yourusername/solstice-valley&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HTML5 Canvas&lt;/li&gt;
&lt;li&gt;Vanilla JavaScript&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;No frameworks&lt;/li&gt;
&lt;li&gt;No build tools&lt;/li&gt;
&lt;li&gt;No external libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;solstice-valley/
└── index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&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%2F8apv3x2e6szic65u3myt.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%2F8apv3x2e6szic65u3myt.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
The game uses a custom-built engine powered by a single HTML5 Canvas element.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Architecture
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;requestAnimationFrame()
├── update(dt)
│   ├── Player movement
│   ├── Collision detection
│   ├── Quest progression
│   ├── Enemy AI
│   ├── Boss logic
│   ├── Fragment collection
│   └── Particle updates
└── drawGame(t)
    ├── Day/night sky rendering
    ├── Tile map rendering
    ├── Character sprites
    ├── Effects and particles
    └── UI and overlays
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Interesting Design Decisions
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Single-File Architecture
&lt;/h4&gt;

&lt;p&gt;I wanted the game to be instantly shareable and easy to inspect. Anyone can open the file in a browser and immediately play, modify, or learn from it without installing dependencies.&lt;/p&gt;

&lt;h4&gt;
  
  
  Fixed Internal Resolution
&lt;/h4&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%2Fdtuxo30dn9al2ohsest3.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%2Fdtuxo30dn9al2ohsest3.png" alt=" " width="800" height="524"&gt;&lt;/a&gt;&lt;br&gt;
The game renders at a logical resolution of &lt;strong&gt;480×320&lt;/strong&gt; and scales up using CSS. This preserves crisp pixel-art visuals while remaining responsive across different screen sizes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Dynamic Day/Night System
&lt;/h4&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%2Fx2gmbt2ee7pol3pzrpco.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%2Fx2gmbt2ee7pol3pzrpco.png" alt=" " width="800" height="531"&gt;&lt;/a&gt;&lt;br&gt;
One of the most important features was the day/night cycle. The sky transitions through dawn, noon, dusk, and midnight while dynamically rendering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sun and moon movement&lt;/li&gt;
&lt;li&gt;Color-shifting skies&lt;/li&gt;
&lt;li&gt;Star fields&lt;/li&gt;
&lt;li&gt;Night fog&lt;/li&gt;
&lt;li&gt;Lantern glow effects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This mechanic directly supports the jam theme by constantly shifting the balance between light and darkness.&lt;/p&gt;

&lt;h4&gt;
  
  
  Responsive Controls
&lt;/h4&gt;

&lt;p&gt;Touch devices automatically switch to an on-screen D-pad and action buttons using JavaScript touch detection, allowing the same codebase to work seamlessly across desktop and mobile devices.&lt;/p&gt;

&lt;h4&gt;
  
  
  Lightweight World Design
&lt;/h4&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%2Fyk33q01g70d18pr4vobh.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%2Fyk33q01g70d18pr4vobh.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
The world is represented as a simple 2D tile array. This made it easy to build the map while keeping the code readable and easy to modify.&lt;/p&gt;




&lt;h2&gt;
  
  
  Challenges
&lt;/h2&gt;

&lt;p&gt;One of the biggest challenges was fitting a complete RPG experience into a single file while still maintaining:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Readable code structure&lt;/li&gt;
&lt;li&gt;Responsive gameplay&lt;/li&gt;
&lt;li&gt;Quest progression&lt;/li&gt;
&lt;li&gt;Combat mechanics&lt;/li&gt;
&lt;li&gt;Enemy AI&lt;/li&gt;
&lt;li&gt;Visual effects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Balancing simplicity with feature depth required careful organization and constant iteration.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;p&gt;The feature I'm most proud of is the &lt;strong&gt;dynamic day/night cycle&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Rather than acting as a simple visual filter, it changes the atmosphere of the world throughout gameplay and reinforces the game's central theme of restoring balance between light and shadow.&lt;/p&gt;

&lt;p&gt;I'm also proud that the entire game runs from a single HTML file without sacrificing features like combat, quests, particle effects, leveling, boss phases, and mobile support.&lt;/p&gt;




&lt;h2&gt;
  
  
  Future Improvements
&lt;/h2&gt;

&lt;p&gt;Planned additions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sound effects and chiptune soundtrack&lt;/li&gt;
&lt;li&gt;Save/load functionality using localStorage&lt;/li&gt;
&lt;li&gt;Additional map areas&lt;/li&gt;
&lt;li&gt;Inventory and equipment systems&lt;/li&gt;
&lt;li&gt;More boss encounters&lt;/li&gt;
&lt;li&gt;Multiplayer co-op support&lt;/li&gt;
&lt;li&gt;Mobile haptic feedback&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Prize Category
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Best Overall Game
&lt;/h3&gt;

&lt;p&gt;Solstice Valley combines exploration, questing, combat, progression systems, responsive controls, and a dynamic world into a complete browser-based RPG experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Theme Interpretation
&lt;/h3&gt;

&lt;p&gt;The game's central mechanic is the balance between light and shadow. The day/night cycle is woven directly into the gameplay, atmosphere, story, and visual presentation.&lt;/p&gt;




&lt;p&gt;Thank you for playing &lt;strong&gt;Solstice Valley&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"The valley shines bright once more."&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>gamechallenge</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>LongUnlimitedReader: Unlimited Text, Zero Accounts, Instant Audio</title>
      <dc:creator>Precious Grace Deborah S. Manucom</dc:creator>
      <pubDate>Sat, 06 Jun 2026 17:29:42 +0000</pubDate>
      <link>https://dev.to/precious_gracedeborahs/longunlimitedreader-httpsgithubcomdebb1iefluttertreemain-the-voice-app-i-built-because-g23</link>
      <guid>https://dev.to/precious_gracedeborahs/longunlimitedreader-httpsgithubcomdebb1iefluttertreemain-the-voice-app-i-built-because-g23</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;It started with a frustration most people probably recognize but never think to solve.&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%2Fljvbtn0wrbpzx7bhghtr.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%2Fljvbtn0wrbpzx7bhghtr.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I had a long article open. Research material, the kind that runs fifteen pages and demands your full attention. I also had dishes to wash, laundry to fold, and a walk I had been putting off. The article sat there, patient and unread, while the rest of my life waited on the other side of the screen.&lt;/p&gt;

&lt;p&gt;I looked for something that would just read it to me. Something simple: paste the text, press play, and walk away. Everything I found either had a character limit, required an account, wanted me to upload a file, or produced audio that sounded like it was being read by a machine that had never encountered a human sentence before.&lt;/p&gt;

&lt;p&gt;So I built it myself.&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%2F8syebmsp4qar3xybstir.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%2F8syebmsp4qar3xybstir.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LongUnlimitedReader is a browser-based voice reader. You paste any amount of text, an article, a research paper, a chapter, anything, and it reads it back to you out loud. No character cap. No account. No file upload. No server. Everything runs in the browser using the Web Speech API, which means your text stays on your device and playback is instant.&lt;/p&gt;

&lt;p&gt;That is the whole idea. The student who needs to get through fifty pages of dense material before tomorrow. The researcher has a stack of papers and not enough hours. Anyone who learns better through listening, or who simply needs their eyes and hands free while their brain keeps working. This was built for them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Debb1ie/Flutter" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;To run it locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or try the deployed version directly:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://flutter-delta-silk.vercel.app/" rel="noopener noreferrer"&gt;https://flutter-delta-silk.vercel.app/&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;The first version was finished in February and then quietly forgotten.&lt;/p&gt;

&lt;p&gt;Not abandoned, forgotten. There is a difference. Abandoning something means you made a decision. This one just drifted to the back of the repository list, behind newer projects and more urgent things, the way drafts do when you are not quite ready to call them done but not motivated enough to push them forward.&lt;/p&gt;

&lt;p&gt;Then I came across the Finish-Up-A-Thon challenge, and I recognized it immediately. This was the project. The one sitting in a tab I never fully closed.&lt;/p&gt;

&lt;p&gt;I went back and looked at it with fresh eyes. The core worked. Paste text, press play, and hear it read back. That part was solid. But it was also the only part. The interface was rough around the edges in ways I had stopped noticing. It needed a proper shape before it could be something I was willing to hand to someone else.&lt;/p&gt;

&lt;p&gt;So I came back to it. Cleaned up the code, tightened the UI, and made the experience feel intentional rather than assembled in a hurry. The voice reader that started as a weekend solution to a personal frustration finally became the thing I had pictured when I first started building it.&lt;/p&gt;

&lt;p&gt;It still does one thing. It reads your text to you. It does that one thing without limits, without friction, and without asking anything from you in return.&lt;/p&gt;




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

&lt;p&gt;I have been writing code long enough to know the parts I find tedious: the repetitive structural work, the boilerplate that has to exist but teaches you nothing by writing it. Copilot handled a lot of that.&lt;/p&gt;

&lt;p&gt;Where it genuinely helped was in the places where I knew the shape of what I wanted but did not want to spend time writing it out by hand. It understood the context quickly and kept up with the direction I was already moving in. That kept the momentum going during the parts of the project that could have easily stalled.&lt;/p&gt;

&lt;p&gt;Where I stayed careful was anywhere the correctness mattered in ways that were not obvious from the surface. The Web Speech API has browser-specific behavior that Copilot did not always account for. I learned to treat its suggestions as a strong first draft and verify the parts that touched real API behavior.&lt;/p&gt;

&lt;p&gt;The honest version is that it felt like pair programming with someone fast and well-read who occasionally needed to be corrected. For a project like this, that was exactly what I needed to get it finished.&lt;/p&gt;

</description>
      <category>github</category>
      <category>finishupathon</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
