<?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: Lyra_TinyStrack</title>
    <description>The latest articles on DEV Community by Lyra_TinyStrack (@dd_aa_abaee26be1a34448721).</description>
    <link>https://dev.to/dd_aa_abaee26be1a34448721</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%2F3847617%2Fbd8861ae-273e-42bf-8322-26f32e6f274b.png</url>
      <title>DEV Community: Lyra_TinyStrack</title>
      <link>https://dev.to/dd_aa_abaee26be1a34448721</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dd_aa_abaee26be1a34448721"/>
    <language>en</language>
    <item>
      <title>My project was selected for the shortlist of the UN Global Hackathon on Using AI for Digital Trade Regulatory Analysis</title>
      <dc:creator>Lyra_TinyStrack</dc:creator>
      <pubDate>Wed, 03 Jun 2026 14:47:30 +0000</pubDate>
      <link>https://dev.to/dd_aa_abaee26be1a34448721/my-project-was-selected-for-the-shortlist-of-the-un-global-hackathon-on-using-ai-for-digital-trade-1mil</link>
      <guid>https://dev.to/dd_aa_abaee26be1a34448721/my-project-was-selected-for-the-shortlist-of-the-un-global-hackathon-on-using-ai-for-digital-trade-1mil</guid>
      <description>&lt;p&gt;On May 31, I received an email that meant a lot to me.&lt;/p&gt;

&lt;p&gt;My project was selected for the shortlist of the UN Global Hackathon on Using AI for Digital Trade Regulatory Analysis, among 129 teams from 30 countries.&lt;/p&gt;

&lt;p&gt;As a self-taught indie developer without a computer science degree or big-tech background, seeing that email was both exciting and surreal.&lt;/p&gt;

&lt;p&gt;But the real challenge started after the acceptance.&lt;/p&gt;

&lt;p&gt;Over the past few days, I've been studying the competition framework, regulatory datasets, and evaluation criteria while building an AI research agent that can crawl, parse, and analyze digital trade regulations across different jurisdictions.&lt;/p&gt;

&lt;p&gt;Today, after an entire day of debugging, I finally got the Singapore legislation pipeline running end-to-end.&lt;/p&gt;

&lt;p&gt;Along the way I discovered that:&lt;/p&gt;

&lt;p&gt;• The main legislation page doesn't contain the actual provision text&lt;br&gt;
• The real content is hidden behind a specific provision endpoint&lt;br&gt;
• Sections and subsections require custom parsing&lt;br&gt;
• Multiple date fields can break metadata extraction&lt;br&gt;
• A 200 OK response doesn't always mean you have valid content&lt;br&gt;
• Status pages can easily masquerade as real legislation pages&lt;/p&gt;

&lt;p&gt;The funny part is that a few months ago, I probably would have assumed:&lt;/p&gt;

&lt;p&gt;• My VPS was blocked&lt;br&gt;
• My IP was banned&lt;br&gt;
• I needed residential proxies&lt;br&gt;
• I needed Playwright and stealth tooling&lt;br&gt;
• I needed another dozen scraping libraries&lt;/p&gt;

&lt;p&gt;Instead, the solution turned out to be much simpler:&lt;/p&gt;

&lt;p&gt;A correct URL is often worth more than ten proxies.&lt;/p&gt;

&lt;p&gt;One lesson I've learned as a developer is that the biggest obstacle is rarely technical complexity itself — it's the wrong assumptions we make before investigating the problem.&lt;/p&gt;

&lt;p&gt;Back to building. More countries to support, more regulations to analyze, and a lot more work ahead.&lt;/p&gt;

</description>
      <category>python</category>
      <category>devops</category>
      <category>agents</category>
    </item>
    <item>
      <title>My site got indexed by Google in 3 days — and landed on page 1</title>
      <dc:creator>Lyra_TinyStrack</dc:creator>
      <pubDate>Wed, 22 Apr 2026 15:59:01 +0000</pubDate>
      <link>https://dev.to/dd_aa_abaee26be1a34448721/my-site-got-indexed-by-google-in-3-days-and-landed-on-page-1-3l4h</link>
      <guid>https://dev.to/dd_aa_abaee26be1a34448721/my-site-got-indexed-by-google-in-3-days-and-landed-on-page-1-3l4h</guid>
      <description>&lt;p&gt;After my server got hit by cryptomining malware, I spent 2 weeks rebuilding and migrating products instead of thinking about SEO.&lt;br&gt;
Finally submitted the sitemap on April 14. Google indexed it on April 17 — just 3 days. Homepage came in at position 10.2, right at the bottom of page 1.&lt;br&gt;
I'm a self-taught solo developer building a micro-SaaS portfolio at &lt;a href="https://saaslic.com" rel="noopener noreferrer"&gt;saaslic.com&lt;/a&gt;. No CS background, no SEO knowledge — just learning as I go.&lt;br&gt;
Two questions for the community:&lt;/p&gt;

&lt;p&gt;How do you push a new site from the bottom of page 1 into the top 5?&lt;br&gt;
Running multiple products under one domain — does that help or hurt SEO?&lt;/p&gt;

&lt;p&gt;Any advice welcome!&lt;br&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%2Fi0d6ci4p8ikoja9nug8u.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%2Fi0d6ci4p8ikoja9nug8u.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>I got confused by my own SaaS — here's what I'm fixing</title>
      <dc:creator>Lyra_TinyStrack</dc:creator>
      <pubDate>Thu, 16 Apr 2026 00:26:36 +0000</pubDate>
      <link>https://dev.to/dd_aa_abaee26be1a34448721/i-got-confused-by-my-own-saas-heres-what-im-fixing-40nl</link>
      <guid>https://dev.to/dd_aa_abaee26be1a34448721/i-got-confused-by-my-own-saas-heres-what-im-fixing-40nl</guid>
      <description>&lt;p&gt;I've been building LicenseKit, a software licensing system, for the past couple of months. Today I tried to use it to protect one of my own tools.&lt;br&gt;
I created a Project. Then I went to the Licenses page to grab a license key. Got "license not found." Tried again. Same result.&lt;br&gt;
Twenty minutes later I figured it out: the Projects page and the Licenses page are two completely separate silos. To actually generate a license, you have to create the project inside the Licenses flow — not in Projects. The Projects sidebar item exists mostly to configure webhooks.&lt;br&gt;
I built this thing and still got lost on first use.&lt;br&gt;
That's the clearest signal a UX is broken.&lt;br&gt;
The fix: rebuilding around a Project-centric model. Click into a project, see all its licenses, devices, verification trends, and webhook config — all in one place. No more jumping between pages.&lt;br&gt;
Shipping the update soon. Will post a follow-up when it's live.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>productivity</category>
      <category>security</category>
    </item>
    <item>
      <title>I Found 30+ Security Vulnerabilities Across My 11 SaaS Products</title>
      <dc:creator>Lyra_TinyStrack</dc:creator>
      <pubDate>Thu, 16 Apr 2026 00:13:01 +0000</pubDate>
      <link>https://dev.to/dd_aa_abaee26be1a34448721/i-found-30-security-vulnerabilities-across-my-11-saas-products-38m8</link>
      <guid>https://dev.to/dd_aa_abaee26be1a34448721/i-found-30-security-vulnerabilities-across-my-11-saas-products-38m8</guid>
      <description>&lt;p&gt;After reading a post about vibe coding risks, I did a full security audit across all 11 of my self-hosted SaaS products.&lt;br&gt;
Here's what I found and fixed:&lt;br&gt;
Authentication &amp;amp; Rate Limiting&lt;/p&gt;

&lt;p&gt;No rate limiting on register/login routes → added IP-based limiting&lt;/p&gt;

&lt;p&gt;Authorization&lt;/p&gt;

&lt;p&gt;Missing auth middleware on several API endpoints → patched&lt;/p&gt;

&lt;p&gt;Demo Mode&lt;/p&gt;

&lt;p&gt;Demo accounts could bypass restrictions → fixed permission checks&lt;/p&gt;

&lt;p&gt;Database&lt;/p&gt;

&lt;p&gt;Over-privileged DB users → tightened to minimum required permissions&lt;/p&gt;

&lt;p&gt;All running in production for 3 days before I caught this.&lt;br&gt;
If you're shipping fast with AI assistance, don't skip the security pass.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>security</category>
      <category>nextjs</category>
    </item>
    <item>
      <title>I shipped 8 new features across 2 SaaS products this week (and finally got payments working)</title>
      <dc:creator>Lyra_TinyStrack</dc:creator>
      <pubDate>Mon, 13 Apr 2026 23:17:52 +0000</pubDate>
      <link>https://dev.to/dd_aa_abaee26be1a34448721/i-shipped-8-new-features-across-2-saas-products-this-week-and-finally-got-payments-working-25m9</link>
      <guid>https://dev.to/dd_aa_abaee26be1a34448721/i-shipped-8-new-features-across-2-saas-products-this-week-and-finally-got-payments-working-25m9</guid>
      <description>&lt;p&gt;Been heads-down building this week. Here's what shipped:&lt;br&gt;
MailTrace — Email Tracking SaaS&lt;/p&gt;

&lt;p&gt;🐛 Fixed a embarrassing bug: the tracking pixel route /t/[trackId] existed as a directory but was completely empty 😅 It's actually tracking now&lt;br&gt;
🌍 Geolocation — see which country opened your email, with flag emoji&lt;br&gt;
🔔 Open notifications — get an email or Webhook fired when someone opens&lt;br&gt;
📥 CSV export for all open records&lt;br&gt;
✏️ Template variables with live preview — write {{name}} and see it replaced in real time&lt;/p&gt;

&lt;p&gt;TestimonialWall — Social Proof SaaS&lt;/p&gt;

&lt;p&gt;📧 Request testimonials via email directly from dashboard&lt;br&gt;
✨ AI polish for testimonials (Pro feature) — one click to clean up awkward phrasing&lt;br&gt;
📝 Approval workflow with internal notes — leave context when approving or rejecting&lt;/p&gt;

&lt;p&gt;The big one 🎉&lt;br&gt;
My payment processor (@creemhq) just got fully verified today after weeks of waiting. First time I can actually charge users properly.&lt;/p&gt;

&lt;p&gt;Both tools have demo mode — no signup needed, just click around.&lt;br&gt;
Would love feedback from this community — what would make these more useful?&lt;br&gt;
👉 mailtrace.saaslic.com&lt;br&gt;
👉 testimonialwall.saaslic.com&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>I got cryptomined 5 times in 10 days. Here's my story 🧵</title>
      <dc:creator>Lyra_TinyStrack</dc:creator>
      <pubDate>Fri, 10 Apr 2026 18:43:00 +0000</pubDate>
      <link>https://dev.to/dd_aa_abaee26be1a34448721/i-got-cryptomined-5-times-in-10-days-heres-my-story-48ab</link>
      <guid>https://dev.to/dd_aa_abaee26be1a34448721/i-got-cryptomined-5-times-in-10-days-heres-my-story-48ab</guid>
      <description>&lt;h2&gt;
  
  
  I got cryptomined 5 times in 10 days. Here's my story 🧵
&lt;/h2&gt;

&lt;p&gt;It started with my CPU suddenly hitting 100%.&lt;br&gt;
I had no idea what was happening. I asked Claude "why is my CPU maxing out?"&lt;/p&gt;

&lt;h2&gt;
  
  
  That's literally the first time I heard the word "cryptomining."
&lt;/h2&gt;

&lt;p&gt;Ok, easy fix. Just switch to my backup server, right?&lt;br&gt;
Got mined again.&lt;br&gt;
"Ok FINE. I'll just switch hosting providers."&lt;br&gt;
Migrated ALL my products. Took forever. Had to — I needed to keep everything online.&lt;br&gt;
Got mined again.&lt;br&gt;
This was my life for 10 days:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get mined&lt;/li&gt;
&lt;li&gt;Migrate all products to keep them live&lt;/li&gt;
&lt;li&gt;Rebuild the server from scratch&lt;/li&gt;
&lt;li&gt;Feel relieved&lt;/li&gt;
&lt;li&gt;Go to step 1
I did this 5 times. I am not a fast learner apparently. 😅
Finally I started to think maybe the problem isn't the servers.
I scanned my local machine.
Every single .exe file: infected. 🫠
The culprits? A cracked audio plugin. And one time I couldn't install Windows myself so I let a stranger remote into my PC.
Classic.
Fresh Windows install. Fresh servers. Hardened everything.
Ran clean for 2 whole days. I was so proud of myself.
Then I deployed a new project and installed one package.
You already know what happened.
The lowest point:
I woke up at 3am in a panic, jumped out of bed, sat down at my computer, and started frantically pressing keys.
The screen wouldn't turn on.
Because I was still asleep. It was a dream.
I have been dreaming about getting cryptomined for over a week straight.
"My therapist says this is normal. I don't have a therapist."
Anyway. Here's my "never again" checklist.
25 items. Each one is a scar.
🔒 Server hardening:
✅ Dedicated user, root login disabled
✅ Ed25519 key auth, password login off
✅ SSH on a non-standard port
✅ UFW firewall, only necessary ports open
✅ IP whitelist, only my fixed IP can connect
✅ Fail2ban against brute force
✅ Automatic security updates
📦 Deploy pipeline:
✅ npm install --ignore-scripts
✅ Review package.json for suspicious packages
✅ npm audit, fix all vulnerabilities
✅ Check for xmrig/scanner_linux and other malware
✅ npx tsc --noEmit
✅ npm run build
✅ pm2 restart
🗄️ Database:
✅ MySQL bound to 127.0.0.1 only
✅ Separate DB user per product
✅ Passwords hashed with bcrypt
🛡️ App:
✅ JWT auth (jose)
✅ Full HTTPS + wildcard cert
✅ Cloudflare proxy hiding real IP
✅ Docker container isolation
✅ PM2 process management
And yes, I back up to 2 external drives now.
Immediately after every deploy.
Don't @ me
---
Most security guides are written by people who read about attacks.
Mine was written by someone who lived through 5 of them in 10 days.
---
I'm a self-taught solo developer from Inner Mongolia.
Two months ago I didn't know what cryptomining was.
Now I've survived it 5 times and I'm still shipping.
Some days that's enough. 😅&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>How I run 10 SaaS products on $44/month (Nginx + PM2 + 2 VPS)</title>
      <dc:creator>Lyra_TinyStrack</dc:creator>
      <pubDate>Mon, 06 Apr 2026 11:42:58 +0000</pubDate>
      <link>https://dev.to/dd_aa_abaee26be1a34448721/how-i-run-10-saas-products-on-44month-nginx-pm2-2-vps-288l</link>
      <guid>https://dev.to/dd_aa_abaee26be1a34448721/how-i-run-10-saas-products-on-44month-nginx-pm2-2-vps-288l</guid>
      <description>&lt;p&gt;I'm a self-taught developer who shipped 10 SaaS products in 25 days. Here's the exact infrastructure setup that keeps my costs at $44/month.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;2 VPS servers (Hong Kong, ~$17/month total)&lt;/li&gt;
&lt;li&gt;Nginx reverse proxy&lt;/li&gt;
&lt;li&gt;PM2 process manager&lt;/li&gt;
&lt;li&gt;MySQL (Docker)&lt;/li&gt;
&lt;li&gt;Next.js 15 + TypeScript&lt;/li&gt;
&lt;li&gt;Claude subscription (~$20/month)&lt;/li&gt;
&lt;li&gt;3 domains (~$2.5/month)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  One Domain, 8 Products
&lt;/h2&gt;

&lt;p&gt;Instead of buying a domain per product, I use subdomains:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;testimonialwall&lt;/span&gt;.&lt;span class="n"&gt;saaslic&lt;/span&gt;.&lt;span class="n"&gt;com&lt;/span&gt; → &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="m"&gt;3004&lt;/span&gt;
&lt;span class="n"&gt;mailtrace&lt;/span&gt;.&lt;span class="n"&gt;saaslic&lt;/span&gt;.&lt;span class="n"&gt;com&lt;/span&gt; → &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="m"&gt;3001&lt;/span&gt;
&lt;span class="n"&gt;statuspulse&lt;/span&gt;.&lt;span class="n"&gt;saaslic&lt;/span&gt;.&lt;span class="n"&gt;com&lt;/span&gt; → &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="m"&gt;3002&lt;/span&gt;
&lt;span class="n"&gt;feedbackbox&lt;/span&gt;.&lt;span class="n"&gt;saaslic&lt;/span&gt;.&lt;span class="n"&gt;com&lt;/span&gt; → &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="m"&gt;3003&lt;/span&gt;
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nginx routes each subdomain to the right PM2 process. One SSL wildcard cert covers all of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  PM2 Config
&lt;/h2&gt;

&lt;p&gt;Each product runs as an independent PM2 process. If one crashes, others keep running.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pm2 start npm &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"testimonialwall"&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; start
pm2 start npm &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"mailtrace"&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; start
&lt;span class="c"&gt;# etc.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  MySQL in Docker
&lt;/h2&gt;

&lt;p&gt;One Docker container runs MySQL. Each product gets its own database and user. Isolated, easy to backup.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; mysql mysql &lt;span class="nt"&gt;-u&lt;/span&gt; root &lt;span class="nt"&gt;-p&lt;/span&gt;
CREATE DATABASE testimonialwall_db&lt;span class="p"&gt;;&lt;/span&gt;
CREATE USER &lt;span class="s1"&gt;'tw_user'&lt;/span&gt;@&lt;span class="s1"&gt;'localhost'&lt;/span&gt; IDENTIFIED BY &lt;span class="s1"&gt;'password'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
GRANT ALL ON testimonialwall_db.&lt;span class="k"&gt;*&lt;/span&gt; TO &lt;span class="s1"&gt;'tw_user'&lt;/span&gt;@&lt;span class="s1"&gt;'localhost'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Backup Script
&lt;/h2&gt;

&lt;p&gt;One script backs up all databases + code + SSL certs into a single tar.gz.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bash ~/scripts/backup.sh
&lt;span class="c"&gt;# Output: backup_2026-04-06.tar.gz (1.5G)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;You don't need Vercel + PlanetScale + Clerk + Resend. A $8/month VPS and some patience gets you further than you think.&lt;/p&gt;

&lt;p&gt;Total cost breakdown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2x VPS: $17/month&lt;/li&gt;
&lt;li&gt;Claude: $20/month
&lt;/li&gt;
&lt;li&gt;Domains: $2.5/month&lt;/li&gt;
&lt;li&gt;X Premium: $4/month&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total: $43.5/month&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;10 products. All live. All on this setup.&lt;/p&gt;

&lt;p&gt;tinystrack.com&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>buildinpublic</category>
      <category>startup</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
