<?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: 王龙</title>
    <description>The latest articles on DEV Community by 王龙 (@_df88eb1337eb23b75c94ba).</description>
    <link>https://dev.to/_df88eb1337eb23b75c94ba</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3546238%2F8cdf4a41-fd81-4706-984e-7ee0d2571f5c.jpg</url>
      <title>DEV Community: 王龙</title>
      <link>https://dev.to/_df88eb1337eb23b75c94ba</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_df88eb1337eb23b75c94ba"/>
    <language>en</language>
    <item>
      <title>I Built a Privacy-First QR Code Generator for Print-Ready Batch Workflows</title>
      <dc:creator>王龙</dc:creator>
      <pubDate>Tue, 30 Jun 2026 16:29:07 +0000</pubDate>
      <link>https://dev.to/_df88eb1337eb23b75c94ba/i-built-a-privacy-first-qr-code-generator-for-print-ready-batch-workflows-4pp</link>
      <guid>https://dev.to/_df88eb1337eb23b75c94ba/i-built-a-privacy-first-qr-code-generator-for-print-ready-batch-workflows-4pp</guid>
      <description>&lt;p&gt;I recently built QRForge, a QR code generator focused less on tracking dashboards and more on print-ready workflows.&lt;/p&gt;

&lt;p&gt;Most QR tools I found fell into two buckets: simple one-off generators, or dynamic QR platforms that route scans through their own tracking URLs. I wanted something more boring but useful: direct static QR codes, CSV batch generation, clear previews, and export files that are ready for labels, badges, packaging, or menus.&lt;/p&gt;

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

&lt;p&gt;QRForge currently supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Static URL QR generation without signup&lt;/li&gt;
&lt;li&gt;CSV upload for batch QR projects&lt;/li&gt;
&lt;li&gt;First-row previews before export&lt;/li&gt;
&lt;li&gt;Named PNG and SVG outputs&lt;/li&gt;
&lt;li&gt;Manifest and error report files&lt;/li&gt;
&lt;li&gt;PDF project summary&lt;/li&gt;
&lt;li&gt;ZIP delivery for print workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main idea is that a user should know what they are about to print before they generate hundreds of QR codes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why static QR codes?
&lt;/h2&gt;

&lt;p&gt;Dynamic QR codes are useful, but they also introduce a dependency: the QR provider has to keep redirecting scans forever.&lt;/p&gt;

&lt;p&gt;For printed materials, that tradeoff matters. A static QR code points directly to the destination URL. Once printed, it does not depend on my app staying online.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;The project is built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;React&lt;/li&gt;
&lt;li&gt;Cloudflare Workers&lt;/li&gt;
&lt;li&gt;Stripe Checkout for one-time batch exports&lt;/li&gt;
&lt;li&gt;Server-side ZIP generation for print packs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I am still figuring out
&lt;/h2&gt;

&lt;p&gt;The biggest question is positioning.&lt;/p&gt;

&lt;p&gt;I am testing whether “Verified Print Pack” clearly communicates the value: preview the CSV, catch obvious problems, then export a print-ready bundle.&lt;/p&gt;

&lt;p&gt;I’d love feedback from builders, designers, or anyone who has had to generate QR codes for real-world print materials.&lt;/p&gt;

&lt;p&gt;Project: &lt;a href="https://qrcodegenerator.page" rel="noopener noreferrer"&gt;https://qrcodegenerator.page&lt;/a&gt;&lt;/p&gt;

</description>
      <category>sideprojects</category>
      <category>saas</category>
      <category>webdev</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>I revived a small Mayan Tzolk'in calendar calculator and found real user demand</title>
      <dc:creator>王龙</dc:creator>
      <pubDate>Wed, 17 Jun 2026 13:54:27 +0000</pubDate>
      <link>https://dev.to/_df88eb1337eb23b75c94ba/i-revived-a-small-mayan-tzolkin-calendar-calculator-and-found-real-user-demand-i48</link>
      <guid>https://dev.to/_df88eb1337eb23b75c94ba/i-revived-a-small-mayan-tzolkin-calendar-calculator-and-found-real-user-demand-i48</guid>
      <description>&lt;p&gt;I recently revived a small niche web tool I had left untouched for months:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mayanastrologycalculator.com/utm_source=dev.to"&gt;Mayan Astrology Calculator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It converts a Gregorian birth date into a Mayan Tzolk'in calendar reading.&lt;/p&gt;

&lt;p&gt;The Tzolk'in is a 260-day sacred calendar cycle made from 20 day signs and 13 tones. The tool calculates a user's Nawal day sign, Galactic Tone, and a short reflective interpretation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I came back to it
&lt;/h2&gt;

&lt;p&gt;The project had been quiet for a while, but Google Search Console showed that people were still finding it through search.&lt;/p&gt;

&lt;p&gt;Queries like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mayan astrology calculator&lt;/li&gt;
&lt;li&gt;mayan zodiac sign calculator&lt;/li&gt;
&lt;li&gt;mayan birth chart&lt;/li&gt;
&lt;li&gt;mayan calendar calculator&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;were still getting impressions and clicks.&lt;/p&gt;

&lt;p&gt;That was enough of a signal to make me revisit the project instead of abandoning it.&lt;/p&gt;

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

&lt;p&gt;The original version was mostly a single calculator. I expanded it into a more complete static tool site:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Mayan astrology birth date calculator&lt;/li&gt;
&lt;li&gt;A result page with Nawal and Galactic Tone interpretation&lt;/li&gt;
&lt;li&gt;Today's Mayan date&lt;/li&gt;
&lt;li&gt;A compatibility calculator&lt;/li&gt;
&lt;li&gt;A guide to the 20 Nawal day signs&lt;/li&gt;
&lt;li&gt;A guide to the 13 Galactic Tones&lt;/li&gt;
&lt;li&gt;SEO pages for related search intents&lt;/li&gt;
&lt;li&gt;A simple waitlist for deeper personalized PDF reports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The site is built with Next.js and exported as a static site.&lt;/p&gt;

&lt;h2&gt;
  
  
  The interesting part: waitlist validation
&lt;/h2&gt;

&lt;p&gt;I wanted to test whether this could become more than an ad-supported content site.&lt;/p&gt;

&lt;p&gt;Instead of building payments, accounts, and PDF generation immediately, I added a lightweight waitlist CTA on the result page:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Want a deeper personalized Mayan birth chart report?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When users click it, they are invited to email us if they want early access.&lt;/p&gt;

&lt;p&gt;This is intentionally higher friction than a normal email input. If someone actually opens their email client and sends their birth date and result, that is a stronger signal than a passive signup.&lt;/p&gt;

&lt;p&gt;Within a short time, a couple of users actually emailed us with their birth dates and Mayan signatures.&lt;/p&gt;

&lt;p&gt;That changed the question from:&lt;/p&gt;

&lt;p&gt;"Is this just a fun niche calculator?"&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;"Is there enough intent here to justify a paid personalized report?"&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I did not build payments first
&lt;/h2&gt;

&lt;p&gt;It would be tempting to add Stripe immediately.&lt;/p&gt;

&lt;p&gt;But for a niche tool, I think that would be premature.&lt;/p&gt;

&lt;p&gt;Before building a full payment flow, I want to validate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do users want deeper reports?&lt;/li&gt;
&lt;li&gt;Would they pay for them?&lt;/li&gt;
&lt;li&gt;What kind of report feels valuable?&lt;/li&gt;
&lt;li&gt;Does a PDF report feel trustworthy enough?&lt;/li&gt;
&lt;li&gt;What methodology explanation is needed?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the next step is manual delivery: generate a few early-access PDF reports, send them to interested users, and ask for feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credibility matters
&lt;/h2&gt;

&lt;p&gt;For a tool like this, trust is important.&lt;/p&gt;

&lt;p&gt;The calculator part is deterministic: it converts a Gregorian date into a Tzolk'in signature.&lt;/p&gt;

&lt;p&gt;The interpretation part is reflective. It is not scientific, medical, legal, or psychological advice.&lt;/p&gt;

&lt;p&gt;For the PDF reports, I am adding:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A methodology section&lt;/li&gt;
&lt;li&gt;A cultural note&lt;/li&gt;
&lt;li&gt;A clear distinction between calculation and interpretation&lt;/li&gt;
&lt;li&gt;A disclaimer&lt;/li&gt;
&lt;li&gt;A sample report structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think this matters, especially when working with cultural or spiritual systems. The goal is to be useful and respectful, not to pretend to be an official authority.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;p&gt;The current stack is intentionally simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;Static export&lt;/li&gt;
&lt;li&gt;Cloudflare Pages&lt;/li&gt;
&lt;li&gt;Google Search Console&lt;/li&gt;
&lt;li&gt;Google Analytics&lt;/li&gt;
&lt;li&gt;Plain HTML/PDF templates for early report samples&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No database yet. No payment integration yet. No account system.&lt;/p&gt;

&lt;p&gt;The project is still in the validation stage.&lt;/p&gt;

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

&lt;p&gt;A few takeaways from this small experiment:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Old niche projects may still have search demand.&lt;/li&gt;
&lt;li&gt;Google Search Console can reveal what users actually want.&lt;/li&gt;
&lt;li&gt;A calculator can be more valuable than a blog post because the result is personal.&lt;/li&gt;
&lt;li&gt;High-friction waitlists can be useful when you want stronger intent signals.&lt;/li&gt;
&lt;li&gt;Paid product development should probably start manually before becoming automated.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;I'd love feedback on the tool and the approach:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mayanastrologycalculator.com/utm_source=dev.to"&gt;Mayan Astrology Calculator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the calculator flow clear?&lt;/li&gt;
&lt;li&gt;Does the result page feel useful?&lt;/li&gt;
&lt;li&gt;Would a paid PDF report make sense here?&lt;/li&gt;
&lt;li&gt;How would you improve trust and credibility for a niche spiritual/calendar tool?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>indiehackers</category>
      <category>seo</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built a Color-Memory Game with Next.js + Cloudflare: Making "Guess the Hue from Memory" Fun and Fair</title>
      <dc:creator>王龙</dc:creator>
      <pubDate>Tue, 09 Jun 2026 16:49:00 +0000</pubDate>
      <link>https://dev.to/_df88eb1337eb23b75c94ba/i-built-a-color-memory-game-with-nextjs-cloudflare-making-guess-the-hue-from-memory-fun-and-392k</link>
      <guid>https://dev.to/_df88eb1337eb23b75c94ba/i-built-a-color-memory-game-with-nextjs-cloudflare-making-guess-the-hue-from-memory-fun-and-392k</guid>
      <description>&lt;p&gt;Hey everyone — I'm Potter, the solo developer behind &lt;a href="https://toon-tone.net/?utm_sorce=https://dev.to/"&gt;Toon Tone&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;💡 The Pitch in One Sentence&lt;br&gt;
You are given the name of an iconic cartoon character and a specific part of them, but only a solid white block is displayed — you must drag the H/S/B (Hue, Saturation, Brightness) sliders to recreate the exact color from your memory. Five rounds, scored from 0–10 based on how close your color is to the target.&lt;/p&gt;

&lt;p&gt;🎨 Why This Exists&lt;br&gt;
We all think we perfectly "remember" pop culture colors — SpongeBob's signature yellow, Pikachu's rosy cheeks, or Mario's red cap.&lt;/p&gt;

&lt;p&gt;But the moment you lose the visual context of the character's lines and shapes, and find yourself staring at a blank color picker, you realize a shocking truth: your visual memory and the actual RGB values are separated by a massive, humbling gulf. That exact psychological gap — the "I know I know this, but I'm completely guessing right now" feeling — is where the fun of &lt;a href="https://toon-tone.net/?utm_sorce=https://dev.to/"&gt;Toon Tone&lt;/a&gt; lives.&lt;/p&gt;

&lt;p&gt;🛠️ Two Core UX and Architectural Decisions&lt;br&gt;
As a solo project, making a simple "guess the color" mechanic feel both intuitive and mathematically fair required some deep thought into the details:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;HSB Sliders Instead of RGB
In daily web development, we are used to dealing with RGB or Hex codes. However, in game design, RGB sliders are an absolute UX nightmare.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When the human brain wants to make a color "a bit more red" or "a lighter blue," we don’t naturally calculate how much to push the Red axis or subtract from the Green axis. We perceive color in a sequence: first we identify what the color is, then how vivid it is, and finally how bright it is.&lt;/p&gt;

&lt;p&gt;Because of this, I strictly went with the HSB (Hue, Saturation, Brightness) model for the sliders:&lt;/p&gt;

&lt;p&gt;Hue helps players anchor "which color" it actually is.&lt;/p&gt;

&lt;p&gt;Saturation controls the vividness and intensity.&lt;/p&gt;

&lt;p&gt;Brightness dictates the light and shadow.&lt;/p&gt;

&lt;p&gt;Player feedback has proved this right: people instinctively set the hue first, then fine-tune the saturation and brightness, perfectly mirroring how the brain extracts visual memories.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scoring System: Brutally Rigid sRGB Euclidean Distance
In color science, using a perceptually uniform algorithm like CIEDE2000 is technically more accurate to how the human eye registers different spectrums. However, during early prototype testing, complex perceptual math just ended up confusing players. People would get frustrated, saying, "I feel like these two colors look almost identical, why did the game dock so many points?"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, I made a very deliberate, hardcore engineering choice: calculating scores based strictly on standard sRGB space Euclidean distance.&lt;/p&gt;

&lt;p&gt;While it might not be a perfect representation of human biology, it brings three massive wins to the table:&lt;/p&gt;

&lt;p&gt;Brutal Fairness: There are no gray areas or hand-waving. Every unit of RGB deviation costs you points, pure and simple.&lt;/p&gt;

&lt;p&gt;High Predictability: Players learn the exact "temperament" of the scoring model within two rounds.&lt;/p&gt;

&lt;p&gt;Instant Performance: The calculation executes in roughly 0.0001ms, meaning zero rendering lag.&lt;/p&gt;

&lt;p&gt;📈 Surprises &amp;amp; Insights from the Game&lt;br&gt;
Content Cadence: I am currently keeping a rhythm of adding 1–2 new character colors every single Friday to steadily grow the pool.&lt;/p&gt;

&lt;p&gt;The Charm of "Blind Color Guessing": Because the game renders only a solid color block without any surrounding illustrations or outlines, it acts as a pure, stripped-down test of isolated visual memory.&lt;/p&gt;

&lt;p&gt;Polarized Difficulty: The hardest color to nail so far is SpongeBob's yellow (almost everyone oversaturates it and gets penalized heavily). On the flip side, the easiest to score high on is Pikachu (those two red cheeks are so deeply burned into collective human DNA that people's memory holds strong).&lt;/p&gt;

&lt;p&gt;The Decay of Memory: The biggest predictor of a high score isn't whether someone has art training — it's whether they have watched or interacted with that specific show recently. "Nostalgia memory" decays at a wildly different rate than "recent recognition memory." This has actually shifted my weekly curation strategy; I now actively look out for what old anime are getting remakes or what's trending on streaming platforms to catch players at the peak of their cultural memory.&lt;/p&gt;

&lt;p&gt;💻 The Ultra-Lean Stack (Next.js + Cloudflare Workers)&lt;br&gt;
As an indie hacker, my top priority for this project was keeping maintenance costs at zero, rendering fast, and eliminating bloat. To achieve that, I built the entire architecture around the Cloudflare ecosystem:&lt;/p&gt;

&lt;p&gt;Framework: Powered entirely by Next.js, which ensures a fantastic developer experience and clean code organization.&lt;/p&gt;

&lt;p&gt;Compute &amp;amp; Deployment: Utilizing Cloudflare's official @cloudflare/next-on-pages, the entire Next.js project is deployed directly on Cloudflare Workers, taking advantage of ultra-low latency edge nodes globally.&lt;/p&gt;

&lt;p&gt;Storage: Combined with Cloudflare KV / D1 to read and store core game configuration and data at maximum performance and near-zero cost.&lt;/p&gt;

&lt;p&gt;Thanks to Cloudflare's edge network, the site loads incredibly fast across the globe. On a standard 4G mobile connection, the initial page load clocks in at around 200ms, delivering a frictionless, instant-play experience.&lt;/p&gt;

&lt;p&gt;🎮 Test Your Own Color Memory!&lt;br&gt;
The site is fully live in English with a clean, distraction-free UI. There are no signups, no paywalls, and no installations required — a full 5-round game takes less than 3 minutes.&lt;/p&gt;

&lt;p&gt;Give it a spin here: &lt;a href="https://toon-tone.net/?utm_sorce=https://dev.to/"&gt;https://toon-tone.net/?utm_sorce=https://dev.to/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you finish a run, drop a screenshot of your scorecard in the comments, or let me know: which character's color made you completely question your own memory?&lt;/p&gt;

</description>
      <category>indiedev</category>
      <category>nextjs</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
