<?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: Dan Oluwatunmibi</title>
    <description>The latest articles on DEV Community by Dan Oluwatunmibi (@dan_oluwatunmibi_3b16e68c).</description>
    <link>https://dev.to/dan_oluwatunmibi_3b16e68c</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%2F3710039%2Fa59672ba-b1d6-4d2d-b5ed-4994ae183667.jpg</url>
      <title>DEV Community: Dan Oluwatunmibi</title>
      <link>https://dev.to/dan_oluwatunmibi_3b16e68c</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dan_oluwatunmibi_3b16e68c"/>
    <language>en</language>
    <item>
      <title>I Built Full Source-Attributed Analytics for Indie Developers — No Third-Party Tools</title>
      <dc:creator>Dan Oluwatunmibi</dc:creator>
      <pubDate>Sat, 20 Jun 2026 17:59:00 +0000</pubDate>
      <link>https://dev.to/dan_oluwatunmibi_3b16e68c/i-built-full-source-attributed-analytics-for-indie-developers-no-third-party-tools-6h4</link>
      <guid>https://dev.to/dan_oluwatunmibi_3b16e68c/i-built-full-source-attributed-analytics-for-indie-developers-no-third-party-tools-6h4</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpe74mgx6q7zm1ax5ee3i.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpe74mgx6q7zm1ax5ee3i.png" alt="Rubies Unleashed Project Analytics Page" width="799" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I started building Rubies Unleashed — an open publishing platform for indie games, apps, and tools — I knew eventually I'd need analytics. Creators publishing their work deserve to understand how it's performing.&lt;/p&gt;

&lt;p&gt;What I didn't want to do was bolt on Google Analytics or Mixpanel. Not because of cost. Because they answer the wrong questions.&lt;/p&gt;

&lt;p&gt;GA tells you how many people visited a URL. I wanted to tell creators &lt;em&gt;why&lt;/em&gt; someone arrived — was it through the Explore page? A search result? Someone's public profile? A spotlight feature? An external link from another site?&lt;/p&gt;

&lt;p&gt;That's a fundamentally different question. And it requires building from scratch.&lt;/p&gt;

&lt;p&gt;Here's what I built, how it works, and what creators can now see on Rubies Unleashed.&lt;/p&gt;




&lt;h2&gt;
  
  
  The architecture
&lt;/h2&gt;

&lt;p&gt;Every view is tracked through a custom &lt;code&gt;track_project_view&lt;/code&gt; RPC in Postgres. It takes four arguments: project ID, a hashed visitor fingerprint, traffic source, and user type (authenticated or guest).&lt;/p&gt;

&lt;p&gt;The deduplication logic is simple: one view per visitor per day per project. The hash is derived from IP + user agent and never stored in plain text. No cookies. No persistent identifiers.&lt;/p&gt;

&lt;p&gt;Downloads work the same way — a separate &lt;code&gt;download_events&lt;/code&gt; table, same deduplication logic, same source attribution.&lt;/p&gt;

&lt;p&gt;View counts are incremented by a database trigger (&lt;code&gt;trg_view_count&lt;/code&gt;), not inside the RPC itself. That keeps the RPC fast and the count logic centralized.&lt;/p&gt;




&lt;h2&gt;
  
  
  Source detection
&lt;/h2&gt;

&lt;p&gt;The trickiest part was getting source attribution right across the platform.&lt;/p&gt;

&lt;p&gt;Every internal link that points to a project page gets a &lt;code&gt;?from=&lt;/code&gt; parameter injected at the point of navigation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explore page → &lt;code&gt;?from=explore&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Search results → &lt;code&gt;?from=search&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;A creator's profile → &lt;code&gt;?from=profile&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The homepage feed → &lt;code&gt;?from=feed&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The weekly digest email → &lt;code&gt;?from=editors_choice&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;A spotlight feature → &lt;code&gt;?from=spotlight&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the project page, a &lt;code&gt;sourceDetector.js&lt;/code&gt; utility reads &lt;code&gt;?from=&lt;/code&gt; first, then falls back to &lt;code&gt;document.referrer&lt;/code&gt; for external traffic. After capturing the source, the URL is cleaned via &lt;code&gt;window.history.replaceState&lt;/code&gt; so the parameter doesn't persist in the user's browser history.&lt;/p&gt;

&lt;p&gt;Eight sources in total: &lt;code&gt;explore&lt;/code&gt;, &lt;code&gt;profile&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, &lt;code&gt;direct&lt;/code&gt;, &lt;code&gt;external&lt;/code&gt;, &lt;code&gt;feed&lt;/code&gt;, &lt;code&gt;spotlight&lt;/code&gt;, &lt;code&gt;editors_choice&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  What creators can see
&lt;/h2&gt;

&lt;p&gt;Every published project now has a dedicated analytics page at &lt;code&gt;/{username}/dashboard/project/{id}/analytics&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stat cards&lt;/strong&gt; — views, downloads, wishlists, average rating, conversion rate (views → downloads). Period toggle: 7 days, 30 days, all time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sparkline charts&lt;/strong&gt; — SVG charts showing daily views and downloads. 7-day view shows Sun–Sat with today highlighted and future days dimmed. 30-day view shows six 5-day buckets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traffic sources&lt;/strong&gt; — horizontal bar chart showing what percentage of views came from each of the 8 sources. This is the data I find most useful as a builder: knowing that 60% of your views are coming from the Explore page vs 30% from external links tells you something very different about how people are finding your work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audience section&lt;/strong&gt; — authenticated users vs guests, unique viewer count, total views, views per unique user ratio. Tells you if you have a small loyal audience or broad shallow reach.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engagement funnel&lt;/strong&gt; — views → wishlists → downloads. Horizontal funnel showing the conversion at each stage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reviews section&lt;/strong&gt; — average rating, per-star distribution bars, total review count.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reports section&lt;/strong&gt; — if your project has been flagged by the community, you see it here. Flagged reason, status, date. Full transparency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recognition section&lt;/strong&gt; — whether your project has Editor's Choice status, your save rate (wishlists / views), your download conversion rate.&lt;/p&gt;




&lt;h2&gt;
  
  
  Creator overview
&lt;/h2&gt;

&lt;p&gt;Beyond per-project analytics, every creator has an overview page at &lt;code&gt;/{username}/analytics&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Aggregate stats across all published projects. Combined sparklines for total views and downloads this week. Traffic sources and audience split for the last 30 days across all your projects. And a sortable breakdown table — click any row to jump straight to that project's analytics.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's not tracked (intentionally)
&lt;/h2&gt;

&lt;p&gt;Downloads from trusted external platforms — Steam, Google Play, App Store — skip the warning modal and therefore skip download tracking. This is a known gap. Users clicking to a trusted platform don't need a safety warning, but that means we lose the click data. I'll fix this with a lightweight beacon instead of the modal, but it's not done yet.&lt;/p&gt;

&lt;p&gt;HTML5 embeds aren't tracked as downloads either. Also on the list.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I built it this way
&lt;/h2&gt;

&lt;p&gt;The alternative was Plausible, Fathom, or just Google Analytics. Fast to set up. Zero maintenance.&lt;/p&gt;

&lt;p&gt;But I wanted creators to have source-level data that third-party tools can't provide, because third-party tools don't know the internal structure of the platform. They don't know that a view came from the Editor's Choice spotlight vs a search result. They just see a pageview.&lt;/p&gt;

&lt;p&gt;Building it in Postgres means the analytics data lives next to the content data. Joins are free. The &lt;code&gt;project_analytics&lt;/code&gt; view aggregates everything — total views, 7d/30d breakdowns, source distribution, audience split — in a single query. The API route checks ownership before returning anything.&lt;/p&gt;

&lt;p&gt;It's more work. But it's the right kind of data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Current state
&lt;/h2&gt;

&lt;p&gt;80 projects live. 67 creators. Every single one of them now has per-project analytics and a creator overview dashboard.&lt;/p&gt;

&lt;p&gt;No paywalls. No tiers. No "analytics is a Pro feature."&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://rubiesunleashed.app" rel="noopener noreferrer"&gt;rubiesunleashed.app&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Daniel Oluwatunmibi — Founder, Rubies Unleashed. Building open infrastructure for indie creators.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>postgres</category>
      <category>analytics</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>We Just Added Wishlists, Reviews, a Community Hub, and Weekly Emails to Our Open Publishing Platform</title>
      <dc:creator>Dan Oluwatunmibi</dc:creator>
      <pubDate>Thu, 18 Jun 2026 03:54:53 +0000</pubDate>
      <link>https://dev.to/dan_oluwatunmibi_3b16e68c/we-just-added-wishlists-reviews-a-community-hub-and-weekly-emails-to-our-open-publishing-platform-2032</link>
      <guid>https://dev.to/dan_oluwatunmibi_3b16e68c/we-just-added-wishlists-reviews-a-community-hub-and-weekly-emails-to-our-open-publishing-platform-2032</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyo8rydx89krph1uoe4wf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyo8rydx89krph1uoe4wf.png" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;`I've been building Rubies Unleashed — an open publishing platform for indie games, apps, and digital projects — for about six months now. It started as a simple way to surface cool things people are building. Then it grew into something I didn't fully anticipate: a platform where creators and their audiences actually needed tools to connect.&lt;/p&gt;

&lt;p&gt;So we built them.&lt;/p&gt;

&lt;p&gt;Here's what's new for everyone who uses the platform — not as a creator, but as a visitor, a fan, a collector, or just someone curious about what indie builders are shipping.&lt;/p&gt;




&lt;h2&gt;
  
  
  Wishlists — save what matters to you
&lt;/h2&gt;

&lt;p&gt;You can now wishlist any project on Rubies Unleashed. Games, apps, tools — anything published on the platform.&lt;/p&gt;

&lt;p&gt;It's not just a bookmark. Your wishlist is public (or private, your call in settings). Other people can browse it. Creators can see how many people have saved their work. It feeds into the platform's discovery engine — the more a project gets wishlisted, the more it surfaces in trending and Editor's Choice.&lt;/p&gt;

&lt;p&gt;And it means something to creators. When someone wishlists your project at 2am, you know it landed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Reviews — real feedback with developer replies
&lt;/h2&gt;

&lt;p&gt;Every published project now has a review section. Star rating (1–5), written review, and here's the part I'm particularly proud of: &lt;strong&gt;developers can reply directly to reviews&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's rare on platforms like this. Usually reviews disappear into a void. Here, a creator can respond to criticism, thank someone for kind words, or clarify something that confused a reviewer. It turns reviews into actual conversations.&lt;/p&gt;

&lt;p&gt;A few other details worth knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reviews are tied to your account, so they're real — no anonymous pile-ons&lt;/li&gt;
&lt;li&gt;Rating distribution chart shows on every project page (so you can see at a glance if a 4.2 average has one outlier or a genuine split)&lt;/li&gt;
&lt;li&gt;Your review notifications link directly to the anchor on the page — click and it scrolls you straight to your review&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Community Hub — see the whole platform alive
&lt;/h2&gt;

&lt;p&gt;This is the one I'm most excited about.&lt;/p&gt;

&lt;p&gt;We built a dedicated &lt;code&gt;/community&lt;/code&gt; page that shows everything happening on Rubies Unleashed in real time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live Activity Feed&lt;/strong&gt; — every publish, update, review, wishlist, and changelog event from across the platform. It refreshes every 30 seconds. You can genuinely watch the platform breathe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hall of Fame&lt;/strong&gt; — dynamically computed from real engagement data, updated daily:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Top Publisher&lt;/li&gt;
&lt;li&gt;Top Rated Creator&lt;/li&gt;
&lt;li&gt;Top Critic (most reviews written)&lt;/li&gt;
&lt;li&gt;Top Collector (most wishlisted)&lt;/li&gt;
&lt;li&gt;Top Curator&lt;/li&gt;
&lt;li&gt;Most Wishlisted Project&lt;/li&gt;
&lt;li&gt;Most Viewed Project&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are manually curated. They're earned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weekly Digest&lt;/strong&gt; — Editor's Choice picks of the week, recent project changelogs, and automatic milestones. When a project hits a meaningful threshold — 100 wishlists, 1,000 views, a rating milestone — it shows up here without anyone having to manually announce it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discord announcements on the site&lt;/strong&gt; — our Discord announcements channel pulls directly into the community page via API. If you're not on Discord but want to know what's happening with the platform, it's all right there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Platform stats&lt;/strong&gt; — total projects, registered users, wishlist saves, and reviews. Filtered to real, published, active content only. No inflated numbers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Emails — platform updates that are actually worth opening
&lt;/h2&gt;

&lt;p&gt;We built a full email system around these features.&lt;/p&gt;

&lt;p&gt;When you join, you get a welcome email. When your password changes, you get notified. But the two worth calling out:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weekly digest&lt;/strong&gt; — Editor's Choice projects, recent activity highlights, and platform milestones. Sent weekly to users who opt in. Not a marketing email. An actual digest of what's happening on the platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monthly recap&lt;/strong&gt; — a summary of what shipped in the past month. Good for people who don't check in every week but want to stay in the loop.&lt;/p&gt;

&lt;p&gt;You can unsubscribe from any of these independently. We're not going to spam you.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where things stand
&lt;/h2&gt;

&lt;p&gt;80 projects live on the platform. 67 registered creators. All of this — wishlists, reviews, the community hub, the email system — is free, with no ads.&lt;/p&gt;

&lt;p&gt;Rubies Unleashed is an open platform. Anyone can publish. Anyone can discover. The goal was always to give indie projects the infrastructure that only big studios used to have access to.&lt;/p&gt;

&lt;p&gt;We're getting there.&lt;/p&gt;

&lt;p&gt;→ &lt;a href="https://rubiesunleashed.app/community" rel="noopener noreferrer"&gt;rubiesunleashed.app/community&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Daniel Oluwatunmibi — Founder, Rubies Unleashed. Solo builder working on open infrastructure for indie creators.&lt;/em&gt;&lt;br&gt;
`&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>indiedev</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Rubies Unleashed: An Open Publishing Platform for Indie Digital Projects</title>
      <dc:creator>Dan Oluwatunmibi</dc:creator>
      <pubDate>Wed, 14 Jan 2026 02:35:17 +0000</pubDate>
      <link>https://dev.to/dan_oluwatunmibi_3b16e68c/rubies-unleashed-a-curated-haven-for-indie-creators-in-the-shadow-of-giants-556</link>
      <guid>https://dev.to/dan_oluwatunmibi_3b16e68c/rubies-unleashed-a-curated-haven-for-indie-creators-in-the-shadow-of-giants-556</guid>
      <description>&lt;p&gt;In a digital landscape filled with massive storefronts and content platforms, independent creators often struggle to find visibility for their work. Rubies Unleashed is an early-stage open publishing platform designed to help creators share games, apps, software tools, and experimental digital projects while making discovery easier for users.&lt;/p&gt;

&lt;p&gt;Developed by Tkprobix and founded by Daniel Oluwatunmibi (DanTunmibi), Rubies Unleashed evolved from RubyApks and continues its mission of supporting independent digital creators through accessible publishing and community-driven discovery.&lt;/p&gt;

&lt;p&gt;From RubyApks to Rubies Unleashed&lt;/p&gt;

&lt;p&gt;RubyApks began as an indie-focused project directory that helped users discover games and software from independent developers. Over time, the platform expanded beyond a simple catalog and evolved into Rubies Unleashed.&lt;/p&gt;

&lt;p&gt;Today, Rubies Unleashed provides creator accounts, publishing tools, project management features, wishlists, profiles, and community discovery systems that help connect creators with users.&lt;/p&gt;

&lt;p&gt;How It Works&lt;/p&gt;

&lt;p&gt;Rubies Unleashed follows an open publishing model. Creators can publish projects directly to the platform without lengthy approval processes, making it easier to share new releases, prototypes, software tools, and experimental ideas.&lt;/p&gt;

&lt;p&gt;Project pages can include:&lt;/p&gt;

&lt;p&gt;Descriptions and screenshots&lt;br&gt;
Platform information&lt;br&gt;
Version details&lt;br&gt;
External download links&lt;br&gt;
Storefront links&lt;br&gt;
Playable build links when available&lt;/p&gt;

&lt;p&gt;Downloads and playable builds may be hosted externally by creators, with Rubies Unleashed serving as a platform for publishing and discovery.&lt;/p&gt;

&lt;p&gt;To help maintain platform quality, content is subject to post-publication moderation aimed at reducing spam, abuse, and harmful submissions.&lt;/p&gt;

&lt;p&gt;Community Discovery&lt;/p&gt;

&lt;p&gt;Users can discover projects through tags, profiles, wishlists, featured sections, and the public project catalog.&lt;/p&gt;

&lt;p&gt;The platform also includes an Archetype system that personalizes the browsing experience:&lt;/p&gt;

&lt;p&gt;Hunter — Focused on discovering games and new releases.&lt;br&gt;
Netrunner — Prioritizes software tools, utilities, and applications.&lt;br&gt;
Curator — Highlights notable projects and community favorites.&lt;br&gt;
Phantom — Encourages exploration of unconventional and lesser-known projects.&lt;/p&gt;

&lt;p&gt;Users can change Archetypes at any time, allowing them to customize how they explore the platform.&lt;/p&gt;

&lt;p&gt;Featured Projects&lt;/p&gt;

&lt;p&gt;The platform hosts a growing collection of indie games, software utilities, productivity tools, and experimental digital projects from independent creators.&lt;/p&gt;

&lt;p&gt;Projects range from games and simulations to educational software, creative tools, and productivity applications, reflecting the diversity of the indie development community.&lt;/p&gt;

&lt;p&gt;Looking Ahead&lt;/p&gt;

&lt;p&gt;As Rubies Unleashed continues to evolve, its focus remains on making publishing accessible while helping users discover independent digital creations.&lt;/p&gt;

&lt;p&gt;By combining open publishing, community discovery, creator tools, and transparent moderation, the platform aims to provide a welcoming space for creators and users alike.&lt;/p&gt;

&lt;p&gt;Explore the platform at &lt;a href="https://rubiesunleashed.app" rel="noopener noreferrer"&gt;https://rubiesunleashed.app&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
