<?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: NP</title>
    <description>The latest articles on Forem by NP (@np_hacks_code).</description>
    <link>https://forem.com/np_hacks_code</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%2F3587794%2F89012291-13a2-4d51-8853-241444b5465a.png</url>
      <title>Forem: NP</title>
      <link>https://forem.com/np_hacks_code</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/np_hacks_code"/>
    <language>en</language>
    <item>
      <title>Blockchain for Beginner Developers</title>
      <dc:creator>NP</dc:creator>
      <pubDate>Thu, 13 Nov 2025 14:02:14 +0000</pubDate>
      <link>https://forem.com/np_hacks_code/blockchain-for-beginner-developers-4k0e</link>
      <guid>https://forem.com/np_hacks_code/blockchain-for-beginner-developers-4k0e</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This writeup is for someone who wants to learn the basics and understand the system in simpler terms.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is Blockchain?
&lt;/h2&gt;

&lt;p&gt;Blockchain is a record or log of all the &lt;strong&gt;Transactions&lt;/strong&gt; that happened on the network. A Transaction is any action or event recorded on the blockchain.&lt;/p&gt;

&lt;p&gt;For example, a social media app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In current system, a centralized app like Instagram, all your posts and data are stored on Meta’s servers, which control access and rules.&lt;/li&gt;
&lt;li&gt;In a blockchain-based social app, your posts are stored across many nodes — no single company owns or can delete your data, since it’s shared and verified by the network.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Block?
&lt;/h2&gt;

&lt;p&gt;A block is a list of transactions(actions). It also has timestamp, hash (block’s unique id) and previous block’s hash. &lt;/p&gt;

&lt;p&gt;Block has block size, a limit of how many transactions can be stored. The size is usually decided by the blockchain. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If there aren’t enough transactions to fill a block, a smaller block after a certain time interval can be created.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  How the process works?
&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%2F3lw7w57iu9t2d0j6v0hn.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%2F3lw7w57iu9t2d0j6v0hn.png" alt="Blockchain" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No one is boss in a blockchain network so computer nodes on the network need to perform consensus and agree on the transactions to be approved. Each blockchain can define their own consensus methods.&lt;/p&gt;

&lt;p&gt;Some of them: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Proof of Work (PoW):&lt;/strong&gt; Solve puzzles. Miners are people who solve puzzles and the first to solve it wins the right to add the next block. Example: Bitcoin&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Proof of Stake (PoS):&lt;/strong&gt; Lock up/Stake crypto coins. Validators are people who stake. The system randomly picks one validator (like a lottery weighted by stake). Validator proposes a block, others check it. If valid → they get a reward; if they cheat → they lose their stake. Example: Ethereum (now)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PBFT (Practical Byzantine Fault Tolerance):&lt;/strong&gt; Nodes vote on the next block&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PoA (Proof of Authority):&lt;/strong&gt; Only trusted validators approve blocks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PoH (Proof of History):&lt;/strong&gt; adds timestamps for faster validation (used by Solana).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What is a wallet?
&lt;/h2&gt;

&lt;p&gt;A digital wallet that hold cryptocurrencies. It has a public key, private key and an address.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Address: Address of wallet (like mailbox location or bank account number to receive currency)&lt;/li&gt;
&lt;li&gt;Public Key: Long string code used to create digital signatures - unique id (like name on mailbox)&lt;/li&gt;
&lt;li&gt;Private Key: Key to access the wallet (like key to open mailbox or password for bank account)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is Smart Contracts?
&lt;/h2&gt;

&lt;p&gt;A block of code that executes a list of actions when a certain transaction is performed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Gas Fees and Transaction costs?
&lt;/h2&gt;

&lt;p&gt;Gas Fees is payment to run smart contracts or process transactions on blockchain.&lt;br&gt;
Transaction costs are the total fees to move money or data, including gas and network charges.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Tokens and Cryptocurrency?
&lt;/h2&gt;

&lt;p&gt;Tokens are digital assets built on top of a blockchain (like NFT, game tokens, etc.)&lt;/p&gt;

&lt;p&gt;Cryptocurrency is the digital money of a blockchain (also a type of token). Just like real money comes in different forms—dollars, euros, dirhams, etc.; cryptocurrency also exists in many types: Bitcoin, Ethereum, Polkadot (DOT), Solana (SOL), Cardano (ADA), and more.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Parachain?
&lt;/h2&gt;

&lt;p&gt;A custom blockchain that runs alongside other blockchains like a branch, connected to a main chain. So, if blockchain network is a tree then the main chain is like a trunk and the parachain are like its branches.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Web3?
&lt;/h2&gt;

&lt;p&gt;It is a type of internet network.&lt;/p&gt;

&lt;p&gt;The 1990s Web1 was read-only. So, user could only view pages and see information. &lt;br&gt;
The 2000s-now Web2 is read-write. So, user can post, interact, but data is owned by big companies.&lt;br&gt;
The Web3 (blockchain web) is read-write-own. So, user can interact, transact, and truly own their data and assets without relying on a central authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Questions:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Do Miners solve puzzle by hand?&lt;/strong&gt; No, they use powerful computers to solve the puzzles. So it is expensive for them as well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What if 1 Miner/Validator takes up a lot of computing power or staked coins in PoW/PoS?&lt;/strong&gt; It is called 51% attack or massive cheating. If that happens, people would lose trust in that blockchain and abandon it. Coin value also plummets. So, cheating is possible but the financial and reputation loss makes it discouraging. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How does one connect to blockchain?&lt;/strong&gt; A node, a wallet or a bridge. 

&lt;ul&gt;
&lt;li&gt;Connecting as a node means downloading entire blockchain. &lt;/li&gt;
&lt;li&gt;Connecting with a wallet allows to make cryptocurrency transactions. &lt;/li&gt;
&lt;li&gt;Bridge allows apps to connect to the blockchain programmatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;P.S. - If you have doubts, comment it. Everyone can chip in and come on consensus. That's how we learn blockchain together.&lt;/p&gt;

</description>
      <category>blockchain</category>
    </item>
    <item>
      <title>AI Studio - 100% Vide Coded React app</title>
      <dc:creator>NP</dc:creator>
      <pubDate>Mon, 10 Nov 2025 21:29:28 +0000</pubDate>
      <link>https://forem.com/np_hacks_code/ai-studio-100-vide-coded-react-app-3d08</link>
      <guid>https://forem.com/np_hacks_code/ai-studio-100-vide-coded-react-app-3d08</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;I used &lt;a href="https://aistudio.google.com/" rel="noopener noreferrer"&gt;AI studio&lt;/a&gt; Build to create a React app from scratch. I challenged myself to make a fully AI-coded application, testing the limits of what’s possible.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  My Journey:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Attempt 1:
&lt;/h3&gt;

&lt;p&gt;I actually built the same project twice. My first attempt was tough because I tried to do too much in a single prompt. Although my initial prompt was detailed and seemingly accurate, it wasn’t particularly helpful. As I kept adding more details, the outputs became increasingly inconsistent and scattered.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a React + FastAPI + Firebase web application called "VoiceBeat" - a voice-driven drum machine where users vocalize drum patterns that get converted to actual drum sounds.

CORE FUNCTIONALITY:

1. INSTRUMENT SETUP SECTION:
- Allow users to create mappings for 5 drum instruments: Kick, Snare, Hi-hat, Clap, Tom
- For each instrument, user inputs a text label for their vocal sound (e.g., "boom" for Kick, "chuck" for Snare, "tss" for Hi-hat)
- Each instrument has a "Preview" button to hear the software drum sample
- Use clean, modern UI with instrument icons

2. RECORDING SECTION:
- Time signature selector (4/4, 3/4, 6/8)
- BPM input field (default 120 BPM)
- Metronome toggle (on/off) with visual click indicator
- Two recording options:
  a) "Record Voice" button - records audio in real-time from microphone
  b) "Upload Audio" button - allows uploading audio file (mp3, wav)
- Display recording timer and waveform visualization during recording
- Stop recording button

3. AUDIO PROCESSING:
- Use Web Speech API or Gemini API to transcribe the recorded/uploaded audio to text with timestamps
- Match transcribed words to user's defined instrument labels
- Preserve timing gaps between vocal sounds (this is critical for rhythm)
- Display detected pattern as a visual timeline with instrument hits marked

4. PLAYBACK SECTION:
- Visual timeline showing each detected drum hit with instrument name and timing
- Play button to hear the pattern with software drum samples
- Metronome option during playback
- Display current playback position
- Allow basic editing: add/remove/move individual hits on timeline

5. FIREBASE INTEGRATION:
- User authentication (Google sign-in)
- Save instrument mappings (vocal label → drum instrument)
- Save created patterns with name and metadata
- Load saved patterns
- Simple profile page showing user's saved patterns

6. TECHNICAL REQUIREMENTS:
- React frontend with modern hooks
- FastAPI backend for audio processing and Firebase integration
- Use Web Audio API for drum sample playback and metronome
- Include 5 high-quality drum samples (kick, snare, hi-hat, clap, tom)
- Responsive design, mobile-friendly
- Clean, minimalist UI with good UX

7. UI/UX:
- Single page app with clear sections
- Modern color scheme (suggest dark theme for music app)
- Clear visual feedback for all actions
- Loading states during processing
- Error handling with user-friendly messages

Start with a working prototype that focuses on the core flow: setup instruments → record voice → see detected pattern → play back with drum sounds.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Attempt 2:
&lt;/h3&gt;

&lt;p&gt;The second attempt was far more streamlined and produced much better results. This time, I abandoned the idea of combining multiple frameworks and tools and focused solely on building a clean, well-structured React application.&lt;/p&gt;

&lt;h4&gt;
  
  
  Setup
&lt;/h4&gt;

&lt;p&gt;I started with a prompt focused only on the UI—setting up a five-piece drum kit displayed as cards, defining both the layout and app structure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a React web application called "VoiceBeat" - a voice-driven drum machine.

For this first step, build ONLY the instrument setup section. No other features yet.

REQUIREMENTS:

1. CREATE INSTRUMENT SETUP SECTION:
- Display 5 drum instruments in a clean horizontal grid layout
- The 5 instruments are: Kick, Snare, Hi-hat, Clap, Tom

2. EACH INSTRUMENT CARD SHOWS:
- Instrument name as a heading
- A small icon or emoji representing the instrument (🥁 for Kick, 🎵 for Snare, etc.)
- A text input field labeled "Vocal Sound" with these default values:
  - Kick: "boom"
  - Snare: "ka"
  - Hi-hat: "tss"
  - Clap: "clap"
  - Tom: "dum"
- A "Preview" button (doesn't need to work yet, just display it)
- Color-coded accent (border or background):
  - Kick: red accent
  - Snare: blue accent
  - Hi-hat: yellow accent
  - Clap: green accent
  - Tom: purple accent

3. DESIGN REQUIREMENTS:
- Use indigo color theme for the overall app background and UI elements
- Modern, clean design with good spacing
- Responsive layout
- Cards should be visually distinct but consistent
- Use Tailwind CSS for styling

4. APP STRUCTURE:
- Simple single-page React app
- Clean component structure
- No backend needed for this step
- No other sections yet (we'll add timeline, controls, etc. in next steps)

Focus only on making the instrument setup section look polished and functional for user input. The preview buttons don't need to do anything yet.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, I placed all the drum cards in a left sidebar and built a sequencer for each of the five instruments. The implementation turned out neat and fully functional. You can check out the video below to see it in action.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/j0WwhW-jmSw"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h4&gt;
  
  
  Added controls
&lt;/h4&gt;

&lt;p&gt;After that, I worked on adding controls—Play, Stop, BPM, Metronome, Bars, and Time Signature. I spent some time resolving layout issues like scrolling and styling, and I fixed the metronome and time signature logic since they weren’t syncing properly at first. For each prompt, I focused on one to three small fixes or updates at a time. One of those prompts looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Fix two metronome issues:

1. Metronome should respect the selected time signature (currently always plays 4/4):
   - 4/4 = downbeat every 4 beats
   - 3/4 = downbeat every 3 beats
   - 6/8 = downbeat every 6 beats

2. When sequencer is already playing and user turns metronome ON, it should start immediately in sync with the current playback position (not wait for next loop).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Changed sequencer functioning
&lt;/h4&gt;

&lt;p&gt;Next, I improved the sequencer’s visual layout by introducing a proper timeline view instead of plain boxes. This made the bars and sub-beats visually distinct. I also added the ability for users to drag and reposition selected notes along the timeline.&lt;/p&gt;

&lt;h4&gt;
  
  
  Voice mapping
&lt;/h4&gt;

&lt;p&gt;This was the most crucial part—the Voice Mapping logic. Users can record or upload an audio clip of a rhythm they have in mind, such as “boom boom ka boom boom tss boom boom ka boom boom clap.” The app analyzes the audio using the Gemini API, identifies the sounds, and maps them to corresponding drum instruments to automatically generate a track. It’s essentially a lightweight version of a DAW combined with an intelligent pattern note-taker. The vocal mapping is editable, allowing users to assign specific words to particular instruments or notes.&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%2F384ahmxfcaui3z3vza2e.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%2F384ahmxfcaui3z3vza2e.png" alt="Instrument Voice mapping"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Midi export
&lt;/h4&gt;

&lt;p&gt;The final step was exporting the project as a MIDI file that can be used in any DAW. You can see this in the demo video. Initially, each instrument was exported on a separate track, so I refined it to consolidate everything into one track.&lt;/p&gt;

&lt;p&gt;

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


&lt;/p&gt;

&lt;p&gt;To wrap up, I also added piano and guitar instruments and mapped them accordingly.&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%2Fa6tcxsu8texq3ulrlzm9.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%2Fa6tcxsu8texq3ulrlzm9.png" alt="Final Voice Beats 1"&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%2Fwwpmzaaju80lfzat9fak.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%2Fwwpmzaaju80lfzat9fak.png" alt="Final Voice Beats 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pros:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Restoring a previous version of the project is as easy as clicking a button. If something goes wrong, you can instantly revert to an earlier state.&lt;/li&gt;
&lt;li&gt;Deployment is just as simple—after connecting your project to the Cloud Console, click Deploy in AI Studio, select the project, and you’re done. The Studio handles the rest and provides a live deployment link.&lt;/li&gt;
&lt;li&gt;Gemini API integration is seamless—it automatically creates an API key and connects it during development and deployment.&lt;/li&gt;
&lt;li&gt;You can define system instructions for the project, such as specific tools or knowledge it should use.&lt;/li&gt;
&lt;li&gt;The prompt supports file and voice uploads as inputs, adding a lot of flexibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Chat history isn’t saved after a session. You can continue the project later, but if you refresh the browser or revisit the project, you lose previous context.&lt;/li&gt;
&lt;li&gt;Each file has version control, but versions aren’t labeled clearly enough to identify changes easily.&lt;/li&gt;
&lt;li&gt;Since the app was built in React, AI Studio tends to put all code into a single App.tsx file, which becomes difficult to manage. I had to ask it to split it into multiple files after few prompts.&lt;/li&gt;
&lt;li&gt;The Auto Fix button appears when unresolved errors occur, but it doesn’t always provide enough details about what went wrong. In that case, I had to revert to the latest stable version.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  My recommendations:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep it simple.&lt;/strong&gt; Work on one major task or a few minor ones at a time. Avoid overloading prompts. If a task feels too big, break it into smaller checkpoints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revert early.&lt;/strong&gt; If multiple prompts or Auto Fix attempts make things worse, roll back to a stable version immediately and try a different approach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow flexibility.&lt;/strong&gt; The Studio produces better results when you give it some creative room rather than rigid instructions.&lt;/li&gt;
&lt;li&gt;Since chat history isn’t saved after a session, &lt;strong&gt;save your prompts in a separate file&lt;/strong&gt;. Alternatively, you could use system instructions to make the app save them automatically—something I didn’t try but would recommend experimenting with.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, AI Studio is a powerful tool for both non-developers who want to visualize their ideas in real life and experienced developers (like me) looking to speed up their workflow and reduce manual coding time.&lt;/p&gt;

</description>
      <category>learngoogleaistudio</category>
      <category>cloudrunhackathon</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>48 hours date with Kiro IDE</title>
      <dc:creator>NP</dc:creator>
      <pubDate>Wed, 29 Oct 2025 20:39:26 +0000</pubDate>
      <link>https://forem.com/np_hacks_code/48-hours-date-with-kiro-ide-20f7</link>
      <guid>https://forem.com/np_hacks_code/48-hours-date-with-kiro-ide-20f7</guid>
      <description>&lt;h2&gt;
  
  
  The Project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What my project was intended to be?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
The project aimed to create a Reddit game using the Devvit platform with the React framework. The game’s goal was to play drum beats accurately as they reached the play mark. If a player achieved over 90% accuracy, a challenge post would be generated for the community. The community would then create choreography for the beats using a 3D character model and its attached animations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What my final project became?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
The project successfully implemented the first phase. However, the challenge post concept evolved from choreography to a speed challenge (explained the pivot later). In the speed challenge, players replay the same beats as the original player but at a higher speed. If they complete the challenge with 90% accuracy or more, a new challenge post is created at an even faster tempo—continuing the chain.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;br&gt;
Built a Reddit rhythm game using the Devvit platform and React with help from Kiro IDE. Overcame major hurdles in UI, scoring, and 3D integration, eventually pivoting to a speed challenge format. Learned to trust AI collaboration, iterate faster, and balance creativity with technical precision throughout the journey.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  My Journey Sneak Peak
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Designing the app flow:&lt;/strong&gt; Built a high-level navigation structure connecting the main game’s tabs and pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrating drum beat audio:&lt;/strong&gt; Created a drum kit folder with various sound files for each drum piece and imported them into the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developing the main game logic (UI challenges):&lt;/strong&gt; Designed the game interface to display and detect drum hits as they reached the hit line, iterating through several UI adjustments along the way.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementing the scoring system:&lt;/strong&gt; Built the logic to detect hits, calculate scores, and measure player accuracy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Introducing the challenge post:&lt;/strong&gt; Players achieving over 90% accuracy would trigger a community challenge post—inviting others to choreograph a 3D character dance to the same beats.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overcoming roadblocks and pivoting:&lt;/strong&gt; When 3D models failed to load properly, the challenge concept evolved. The new version invited players to replay the same beats at a faster speed, competing for higher leaderboard scores.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Final touches and documentation:&lt;/strong&gt; Wrapped up with final fixes, polish, and thorough documentation of the entire project.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  My Background
&lt;/h2&gt;

&lt;p&gt;I’m primarily a Software Developer with a Bachelor’s degree in Software Engineering. Lately, I’ve been focusing my career on AI and Security—both individually and where they intersect. Over the past year, I’ve experimented with several of the new “vibe” coding tools that have entered the scene, each offering a unique experience. I’ve also worked with AWS Q, which integrates nicely with Visual Studio Code. It was solid—but when it comes to smoothness, Kiro takes the cake, the baker, and the whole bakery.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Kiro is better?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backed by Claude:&lt;/strong&gt; I recently started using Claude, and out of all the AI tools I’ve tried, it consistently gets the job done faster, smoother, and with fewer prompts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strong session management:&lt;/strong&gt; Kiro seems to handle conversation memory exceptionally well, maintaining context more effectively and making problem-solving feel structured and streamlined.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart session resets:&lt;/strong&gt; Of course, even good session management has limits. I really appreciate that Kiro can summarize an old session and start a new one with the previous context intact. I’m sometimes skeptical about whether all details carry over, so I double-check and let it ask clarifying questions—but so far, it hasn’t missed a beat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Autopilot mode:&lt;/strong&gt; I completed my entire project using Autopilot. Having used AWS Q before, I can say this feature works impressively well—especially coming from someone who usually doesn’t like others touching their code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Credit-friendly:&lt;/strong&gt; This one surprised me. Kiro’s credit usage is actually quite reasonable, which makes it easy to keep using without constantly worrying about limits.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  My Entire Journey in Detail...
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Designing the app flow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I started by setting up the Devvit project and opening it in the Kiro IDE. The first task I gave Kiro was to remove the default code in App.tsx and create four tabs: Home, Join Game, Leaderboard, and Tutorial. Later, I restructured the layout into three tabs by merging Home and Join Game into a single page for better flow. I also added navigation logic and back buttons to enable smooth, circular navigation across the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Integrating drum beat audio&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next, I created a dedicated drum kit folder containing multiple sound files for each drum piece and imported them into the app. I then built a form that allowed players to assign different sounds to each drum component and adjust them before starting the game.&lt;/p&gt;

&lt;p&gt;Initially, I placed the drum kit in the assets folder and asked Kiro to use it in the React app. What I didn’t realize was that assets was meant for backend (Express) code, not the React client. This led to repeated 401 and 404 errors. Kiro imeplemented the logic using the Web Audio API, but it didn’t provide the exact sounds I needed—and lacked variation among drum pieces.&lt;/p&gt;

&lt;p&gt;Then it clicked: the audio files needed to be in the src/client folder for React to access them properly. Once that was fixed, Kiro generated a complete sound customization form that worked perfectly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Developing the main game logic - UI Struggles and Changes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the foundations in place, it was time to build the main game logic. The core idea was simple: the player matches drum beats to a background track. Visually, I imagined an old film reel or gramophone-style animation, where the sound waves move as if a pin were playing them.&lt;/p&gt;

&lt;p&gt;Kiro and I tried several approaches. First, we attempted to simulate the motion using an audio wave image that updated every second. However, this approach distorted the image—compressing it instead of creating smooth movement. Then, we tried embedding a live waveform generated externally and animating it horizontally across a div. It initially looked promising, but responsiveness issues made it unreliable across different screen sizes. The animation moved inconsistently—sometimes too fast, sometimes too slow.&lt;/p&gt;

&lt;p&gt;After numerous iterations and plenty of “this doesn’t work” moments, Kiro suggested generating a live audio waveform using math functions. But that produced a random sine wave unrelated to the actual sound. Eventually, I decided to start over—keeping the same context but wiping all code clean. I explained my full game vision to Kiro and let it ask clarifying questions.&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%2Fkm00h4rubglo57vhve6x.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%2Fkm00h4rubglo57vhve6x.png" alt="Original Vision" width="374" height="638"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, I dropped my weapons. Luckily in retrospective view, we started new session with same context. I removed all the code from the file. I gave it a free reign. I explained my game to Kiro and allowed it question back to me.&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%2F6joy9ovlmtdcsvqdsvc1.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%2F6joy9ovlmtdcsvqdsvc1.png" alt="Kiro questioning back" width="734" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once it understood, Kiro implemented a new version from scratch. The first attempt was clunky—only background music played, and the visuals were overlapping. The beats initially moved horizontally, which didn’t work well across devices. I asked Kiro to make the beats fall vertically instead. The early results were jerky, but after several rounds of debugging and logic tuning, we finally achieved smooth, responsive beat animations.&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%2F1efb156is6y322ftldyp.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%2F1efb156is6y322ftldyp.png" alt="Final Vision" width="371" height="585"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Implementing the scoring system&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next came the scoring system — and with it, a few surprises. During testing, I noticed something odd: my game displayed Hits: 108/105 and Accuracy: 102.9%. Now, I know I’m good, but definitely not that good!&lt;/p&gt;

&lt;p&gt;This revealed a flaw in the original scoring logic. After several rounds of debugging and back-and-forth with Kiro, we finally fixed the calculation so that accuracy stayed realistic.&lt;/p&gt;

&lt;p&gt;However, a new issue emerged — saving scores triggered a 502 error, and fetching the leaderboard resulted in a 500 error. After a bit of investigation, Kiro discovered the culprit: Redis API changes. The latest documentation showed that some method names had been updated, for example: &lt;/p&gt;

&lt;p&gt;&lt;code&gt;redis.zadd()&lt;/code&gt; → &lt;code&gt;redis.zAdd()&lt;/code&gt;&lt;br&gt;
&lt;code&gt;redis.zrevrange()&lt;/code&gt; → &lt;code&gt;redis.zRevRangeWithScores()&lt;/code&gt;&lt;br&gt;
&lt;code&gt;redis.zremrangebyrank()&lt;/code&gt; → &lt;code&gt;redis.zRemRangeByRank()&lt;/code&gt;&lt;br&gt;
&lt;code&gt;redis.zcard()&lt;/code&gt; → &lt;code&gt;redis.zCard()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Also parameters and return formats were different: &lt;br&gt;
&lt;code&gt;redis.zadd(key, score, member)&lt;/code&gt; → &lt;code&gt;redis.zAdd(key, { score: score, member: member })&lt;/code&gt;&lt;br&gt;
&lt;code&gt;['member1', 'score1', 'member2', 'score2'] (flat array)&lt;/code&gt; → &lt;code&gt;[{member: 'member1', score: score1}, {member: 'member2', score: score2}] (object array)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Introducing the challenge post&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the core game logic complete, I decided to experiment with a challenge post feature. If it worked, great; if not, it could easily be removed. I asked Kiro for its opinion on the idea:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;What do you think about this idea in terms of implementation. If a user scores above 98% accuracy we use the beats (the original list that they had to play) and create a new reddit post. Here we share the user who played the beats and their accuracy and we play the beats and the bg. I have fbx characters with different dance animation which I have added. Meaning a character model can do different dance animations. Another user can now use this new dance beats and arrange the dance animations as they like. So we only create a list of naimtion that plays one after the other on the beats. I know it can be done using react three fiber, I have done it seperately before, but do you think this is good viable idea for reddit game and implemention it well.&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I already suspected it was a strong concept, and Kiro agreed—highlighting its potential for social gamification and adding a creative community layer. It also suggested an implementation plan involving beat saving, a dance choreography interface, and 3D character integration.&lt;/p&gt;

&lt;p&gt;Kiro first built the challenge post logic, including the necessary initial data structure for each post. My next task was to source 3D character models from the free, open-source platform Mixamo and blend multiple animations using Blender. Once the models were ready, I imported them into the app.&lt;/p&gt;

&lt;p&gt;Kiro attempted to render the three character models in a static pose—but the app failed to load entirely, running into multiple errors during startup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Overcoming roadblocks and pivoting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I took a short pause—but not a stop. I discussed the next steps with Kiro, aiming to pivot and brainstorm new directions for the challenge feature. The first few ideas leaned more toward data visualization than actual gameplay. But then, Kiro proposed three creative renditions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Simple Head-on Challenge – Other players replay the same beats and try to outscore the original player.&lt;/li&gt;
&lt;li&gt;Remix Battle – Players reuse the beat sequence but swap out drum sounds to create their own remix.&lt;/li&gt;
&lt;li&gt;Speed Run – Players replay the same beat pattern at an increased tempo.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The third idea instantly clicked with me. I extended it further—what if, every time a player successfully completed the challenge with high accuracy, the next version became even faster, forming an ongoing speed loop?&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%2Frkrt750kzjc3wl1iw4dh.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%2Frkrt750kzjc3wl1iw4dh.png" alt="Challenge Post" width="717" height="576"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After several rounds of iteration and debugging, Kiro and I got it working smoothly: each completed challenge now generates a new one with higher speed, keeping the gameplay endlessly engaging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Final touches and documentation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The last stage was all about polish and cleanup. I focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding loading indicators&lt;/li&gt;
&lt;li&gt;Adjusting color themes&lt;/li&gt;
&lt;li&gt;Commenting out all debug console logs&lt;/li&gt;
&lt;li&gt;Refining button sizes and layout&lt;/li&gt;
&lt;li&gt;Handling Git fixes&lt;/li&gt;
&lt;li&gt;Writing and organizing project documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These final touches brought everything together—transforming the prototype into a complete, playable Reddit game.&lt;/p&gt;




&lt;h2&gt;
  
  
  My learnings
&lt;/h2&gt;

&lt;p&gt;I realized that it’s often best to give free rein in the beginning. I tend to have a strong visual idea of what I want, which sometimes makes me dive too deep into details too early. But with an agentic IDE like Kiro, it’s far more effective to start broad—share the bigger vision first—and then refine together. Letting it explore freely at the start often led to results more creative and efficient than what I had in mind.&lt;/p&gt;




&lt;h2&gt;
  
  
  When did it win over me?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;When it out-designed me:&lt;/strong&gt; Kiro surprised me with a cleaner, smarter UI implementation than the one I had planned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When it became my brainstorming partner:&lt;/strong&gt; It didn’t just follow instructions—it actively helped me pivot and rethink the game flow when things weren’t working.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;When it tried to make me laugh:&lt;/strong&gt; In the middle of all the chaos, it actually tried to lighten the mood. That’s when I realized I wasn’t just coding with an IDE — I was collaborating with one.&lt;/li&gt;
&lt;/ol&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%2Fshg34yx2q7z7f319i82g.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%2Fshg34yx2q7z7f319i82g.png" alt="Joke" width="800" height="115"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Feedback
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;At one point it went crazy and started writing crazy stuff which may make sense to it but not me. If any of this made sense to you, let me know!&lt;/li&gt;
&lt;/ol&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%2F9g52r636gg1dotynlido.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%2F9g52r636gg1dotynlido.png" alt="Error" width="583" height="979"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Techstack
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Devvit:&lt;/strong&gt; Reddit's developer platform for building immersive apps that run natively in posts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React 19:&lt;/strong&gt; Modern UI framework with hooks, StrictMode, and TypeScript integration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Express 5:&lt;/strong&gt; Backend API server with RESTful endpoints and middleware support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redis:&lt;/strong&gt; Fast data persistence for leaderboards, beat sequences, and speed challenges (via Devvit)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS 4:&lt;/strong&gt; Utility-first styling framework with dark theme support&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TypeScript 5.8:&lt;/strong&gt; Type-safe development across client, server, and shared modules&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vite 6:&lt;/strong&gt; Fast build tool with hot module replacement and optimized production builds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Web Audio API:&lt;/strong&gt; Browser-native audio processing for drum sound playback and timing&lt;/li&gt;
&lt;/ol&gt;




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

&lt;p&gt;What started as a simple idea to create a rhythm-based Reddit game evolved into a full journey of experimentation, problem-solving, and creative discovery. Working with Kiro not only helped me bring the project to life but also changed how I approach development—less about controlling every detail and more about collaborating, iterating, and trusting the process.&lt;/p&gt;

&lt;p&gt;From designing the app flow to implementing the game logic, facing bugs, pivoting concepts, and finally polishing the experience, every step taught me something new—about code, creativity, and adaptability. In the end, the project became more than just a game; it became proof of how human imagination and AI-driven tools can create something truly dynamic together.&lt;/p&gt;




&lt;p&gt;P.S. - Looking forward to a version where audio commands will make the hands-free coding possible. That will give more time to explore more technologies.&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>react</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
