<?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: Jexx</title>
    <description>The latest articles on DEV Community by Jexx (@jexx).</description>
    <link>https://dev.to/jexx</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%2F4078111%2Fedf20700-3929-4699-91fe-64e1ae38bbc8.png</url>
      <title>DEV Community: Jexx</title>
      <link>https://dev.to/jexx</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jexx"/>
    <language>en</language>
    <item>
      <title>AI Aimassist (Rivals)</title>
      <dc:creator>Jexx</dc:creator>
      <pubDate>Sat, 22 Aug 2026 18:57:13 +0000</pubDate>
      <link>https://dev.to/jexx/ai-aimassist-rivals-2a0j</link>
      <guid>https://dev.to/jexx/ai-aimassist-rivals-2a0j</guid>
      <description>&lt;p&gt;I made an AI that helps people to aim correctly using thousands of images, with a very high % of 98%&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/JexxDev/Kuroze/releases" rel="noopener noreferrer"&gt;https://github.com/JexxDev/Kuroze/releases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is here, you can try it, it's also free.&lt;/p&gt;

</description>
      <category>roblox</category>
      <category>ai</category>
      <category>rivals</category>
      <category>programming</category>
    </item>
    <item>
      <title>Designing a referral system that can't be gamed by throwaway accounts</title>
      <dc:creator>Jexx</dc:creator>
      <pubDate>Sun, 16 Aug 2026 21:15:45 +0000</pubDate>
      <link>https://dev.to/jexx/designing-a-referral-system-that-cant-be-gamed-by-throwaway-accounts-3dmn</link>
      <guid>https://dev.to/jexx/designing-a-referral-system-that-cant-be-gamed-by-throwaway-accounts-3dmn</guid>
      <description>&lt;p&gt;I just shipped a referral system for &lt;a href="https://adsyte.org" rel="noopener noreferrer"&gt;Adsyte&lt;/a&gt;, my free directory for indie projects, and the design decision behind it is worth sharing because it's a pattern that applies to any growth loop with a token reward attached.&lt;/p&gt;

&lt;h2&gt;
  
  
  The obvious version, and why it's broken
&lt;/h2&gt;

&lt;p&gt;The naive implementation: give the recruiter tokens the moment someone signs up through their link. Simple, but it has an exploit built in. Signing up costs nothing, and OAuth makes throwaway accounts trivial. Anyone can self-refer through five Discord accounts and walk away with free reward tokens without bringing a single real user to the platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did instead
&lt;/h2&gt;

&lt;p&gt;The payout only fires when the recruit publishes their first listing, not when they sign up.&lt;/p&gt;

&lt;p&gt;This one change closes the loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fake account costs nothing, but a real listing needs an actual project with a real URL&lt;/li&gt;
&lt;li&gt;The listing already has to pass duplicate-URL detection and hCaptcha, so faking one is meaningfully harder than faking a signup&lt;/li&gt;
&lt;li&gt;Every token paid out corresponds to a listing the directory actually gained, which is the metric that matters, not signups&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Referral code is an HMAC of the user's id, derived deterministically rather than stored as a random token, so there's nothing extra to generate or leak&lt;/li&gt;
&lt;li&gt;The code lives in a cookie set on landing (&lt;code&gt;?ref=CODE&lt;/code&gt;), read once at OAuth callback, and tied to the account via a Redis &lt;code&gt;SETNX&lt;/code&gt; so it can only ever be set once, self-referral excluded outright&lt;/li&gt;
&lt;li&gt;Payout uses &lt;code&gt;SETNX&lt;/code&gt; again on a per-recruit key so double-firing (retries, race conditions) can't double-pay&lt;/li&gt;
&lt;li&gt;A daily cap per recruiter stops a single compromised or bot-driven account from draining the reward pool in one sitting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing here is novel, it's the standard "pay for the outcome, not the action" principle, but I don't see it applied to referral systems as often as it should be. Most implementations I've seen reward signup because it's the easy event to hook into, and then bolt on fraud detection after the abuse shows up. Reward the outcome that actually costs the abuser something, and you don't need the fraud detection layer at all.&lt;/p&gt;

&lt;p&gt;Curious how others have handled this, especially the daily cap number. I picked 10 fairly arbitrarily.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>security</category>
      <category>architecture</category>
    </item>
    <item>
      <title>I built a free directory for indie sites, ranked by real traffic not who pays the most</title>
      <dc:creator>Jexx</dc:creator>
      <pubDate>Fri, 14 Aug 2026 19:09:27 +0000</pubDate>
      <link>https://dev.to/jexx/i-built-a-free-directory-for-indie-sites-ranked-by-real-traffic-not-who-pays-the-most-3fl</link>
      <guid>https://dev.to/jexx/i-built-a-free-directory-for-indie-sites-ranked-by-real-traffic-not-who-pays-the-most-3fl</guid>
      <description>&lt;p&gt;I kept shipping side projects that nobody ever saw, so I built something to fix that: &lt;a href="https://adsyte.org" rel="noopener noreferrer"&gt;Adsyte&lt;/a&gt;, a free directory for indie sites, apps and tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem I was trying to solve
&lt;/h2&gt;

&lt;p&gt;Most "submit your site" directories fall into one of two buckets: they're dead (last update three years ago), or they're pay-to-rank, where visibility has nothing to do with whether your project is actually good.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Publish your site for free, 1 listing forever, no catch&lt;/li&gt;
&lt;li&gt;Ranking is based on real visits and upvotes only, not who paid the most&lt;/li&gt;
&lt;li&gt;Visitors browse by category, or get a personalized "Recommended" feed based on what they've shown interest in&lt;/li&gt;
&lt;li&gt;Sign in with Google, GitHub or Discord, no password to manage&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Stack, if you're curious
&lt;/h2&gt;

&lt;p&gt;Static frontend, Vercel serverless functions, Upstash Redis for storage, Stripe for the optional paid tiers, hCaptcha to keep bot submissions out. Kept it deliberately simple since I'm building and maintaining this solo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it's at
&lt;/h2&gt;

&lt;p&gt;Early. Genuinely early, only a handful of listings so far, which honestly makes now a good time to add yours since early listings get more relative visibility than they will once it fills up.&lt;/p&gt;

&lt;p&gt;If you've got a side project sitting with zero traffic, I'd love for you to try it, and I'd love harsh feedback even more. First listing's free: &lt;a href="https://adsyte.org" rel="noopener noreferrer"&gt;https://adsyte.org&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>indiehackers</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
