<?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: Jura</title>
    <description>The latest articles on DEV Community by Jura (@__c500e8ac9bc2).</description>
    <link>https://dev.to/__c500e8ac9bc2</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%2F1728609%2F0a2482f3-5a07-49de-b6f7-d76f4624fa51.jpg</url>
      <title>DEV Community: Jura</title>
      <link>https://dev.to/__c500e8ac9bc2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/__c500e8ac9bc2"/>
    <language>en</language>
    <item>
      <title>I Built Eventra in 6 Months (After My Day Job). Here's How.</title>
      <dc:creator>Jura</dc:creator>
      <pubDate>Fri, 10 Apr 2026 19:17:25 +0000</pubDate>
      <link>https://dev.to/__c500e8ac9bc2/i-built-eventra-in-6-months-after-my-day-job-heres-how-2j9</link>
      <guid>https://dev.to/__c500e8ac9bc2/i-built-eventra-in-6-months-after-my-day-job-heres-how-2j9</guid>
      <description>&lt;h1&gt;
  
  
  Building Eventra After Work: A 6-Month Solo Developer Journey
&lt;/h1&gt;

&lt;p&gt;For the past six months, I've been building &lt;strong&gt;Eventra&lt;/strong&gt; after work.&lt;/p&gt;

&lt;p&gt;I have a full-time job that pays the bills.&lt;br&gt;
Eventra is something I build in the evenings and on weekends.&lt;/p&gt;

&lt;p&gt;I didn’t start with a startup idea.&lt;br&gt;
I didn’t start with validation.&lt;br&gt;
I just wanted to build something properly.&lt;/p&gt;

&lt;p&gt;Not a weekend project.&lt;br&gt;
Not a demo.&lt;br&gt;
Something real.&lt;/p&gt;

&lt;p&gt;That eventually became &lt;strong&gt;Eventra&lt;/strong&gt; — a feature analytics platform focused on understanding which features users actually use.&lt;/p&gt;


&lt;h1&gt;
  
  
  Why I Started Building Eventra
&lt;/h1&gt;

&lt;p&gt;When you build products long enough, you accumulate features.&lt;/p&gt;

&lt;p&gt;Some are used every day.&lt;br&gt;
Some occasionally.&lt;br&gt;
Some… never.&lt;/p&gt;

&lt;p&gt;Over time, you lose visibility.&lt;/p&gt;

&lt;p&gt;You don't know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which features matter&lt;/li&gt;
&lt;li&gt;Which ones nobody uses&lt;/li&gt;
&lt;li&gt;What can be removed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Analytics helps — but only partially.&lt;/p&gt;

&lt;p&gt;Analytics shows what happened.&lt;br&gt;
But it doesn't show what &lt;strong&gt;exists but never happens&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That idea stuck with me.&lt;/p&gt;


&lt;h1&gt;
  
  
  Building After Work
&lt;/h1&gt;

&lt;p&gt;Building Eventra while working full-time wasn't easy.&lt;/p&gt;

&lt;p&gt;Some days I wrote code for 8 hours at work, then another 2–3 hours at night.&lt;/p&gt;

&lt;p&gt;Some weekends were spent debugging rollups instead of going outside.&lt;/p&gt;

&lt;p&gt;Progress wasn't fast — but it was steady.&lt;/p&gt;

&lt;p&gt;Over six months, Eventra slowly took shape.&lt;/p&gt;


&lt;h1&gt;
  
  
  Step 1 — Building the Core Platform
&lt;/h1&gt;

&lt;p&gt;I started with the core platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Workspaces&lt;/li&gt;
&lt;li&gt;Projects&lt;/li&gt;
&lt;li&gt;Events&lt;/li&gt;
&lt;li&gt;Feature adoption&lt;/li&gt;
&lt;li&gt;Dead feature detection&lt;/li&gt;
&lt;li&gt;Alerts&lt;/li&gt;
&lt;li&gt;API keys&lt;/li&gt;
&lt;li&gt;Operations dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was to build something complete — not just analytics, but a system focused on feature usage.&lt;/p&gt;


&lt;h1&gt;
  
  
  What the Dashboard Shows
&lt;/h1&gt;

&lt;p&gt;The main dashboard gives a quick overview of product usage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total events&lt;/li&gt;
&lt;li&gt;Unique users&lt;/li&gt;
&lt;li&gt;Active features&lt;/li&gt;
&lt;li&gt;Inactive features&lt;/li&gt;
&lt;li&gt;Usage over time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps quickly understand whether your product is actually being used and how feature adoption changes over time.&lt;/p&gt;


&lt;h1&gt;
  
  
  Feature Tracking
&lt;/h1&gt;

&lt;p&gt;Eventra tracks individual features and shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total usage&lt;/li&gt;
&lt;li&gt;Unique users&lt;/li&gt;
&lt;li&gt;First used&lt;/li&gt;
&lt;li&gt;Last used&lt;/li&gt;
&lt;li&gt;Usage timeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can open any feature and see its detailed analytics and adoption patterns.&lt;/p&gt;

&lt;p&gt;This makes it easier to understand which parts of your product matter.&lt;/p&gt;


&lt;h1&gt;
  
  
  Dead Feature Detection
&lt;/h1&gt;

&lt;p&gt;One of the core ideas behind Eventra is detecting unused functionality.&lt;/p&gt;

&lt;p&gt;Eventra automatically detects features that haven't been used recently and marks them as inactive.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Feature not used in 14 days&lt;/li&gt;
&lt;li&gt;Feature used once but never again&lt;/li&gt;
&lt;li&gt;Feature abandoned after release&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps identify functionality that might be safe to remove.&lt;/p&gt;


&lt;h1&gt;
  
  
  Events Explorer
&lt;/h1&gt;

&lt;p&gt;You can also inspect raw events.&lt;/p&gt;

&lt;p&gt;This helps when debugging or understanding how users interact with your application.&lt;/p&gt;

&lt;p&gt;You can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event name&lt;/li&gt;
&lt;li&gt;User&lt;/li&gt;
&lt;li&gt;Timestamp&lt;/li&gt;
&lt;li&gt;Usage patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it easier to understand what users actually do.&lt;/p&gt;


&lt;h1&gt;
  
  
  Workspaces and Projects
&lt;/h1&gt;

&lt;p&gt;Eventra supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple workspaces&lt;/li&gt;
&lt;li&gt;Multiple projects&lt;/li&gt;
&lt;li&gt;Team members&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows you to organize analytics across different products.&lt;/p&gt;


&lt;h1&gt;
  
  
  API Keys and SDK Integration
&lt;/h1&gt;

&lt;p&gt;Each project has API keys for event ingestion.&lt;/p&gt;

&lt;p&gt;You can rotate keys, create multiple keys, and track usage.&lt;/p&gt;

&lt;p&gt;This allows safe integration with SDKs and backend systems.&lt;/p&gt;


&lt;h1&gt;
  
  
  Operations Dashboard
&lt;/h1&gt;

&lt;p&gt;I also built an internal operations dashboard.&lt;/p&gt;

&lt;p&gt;It shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ingest throughput&lt;/li&gt;
&lt;li&gt;Buffer size&lt;/li&gt;
&lt;li&gt;Rollup lag&lt;/li&gt;
&lt;li&gt;Processing delay&lt;/li&gt;
&lt;li&gt;System health&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps monitor the analytics pipeline.&lt;/p&gt;


&lt;h1&gt;
  
  
  Interactive Demo
&lt;/h1&gt;

&lt;p&gt;There's an &lt;strong&gt;interactive demo&lt;/strong&gt; on the homepage:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eventra.dev" rel="noopener noreferrer"&gt;https://eventra.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can explore the UI, navigate between pages, and see how everything works.&lt;/p&gt;

&lt;p&gt;Some data is intentionally masked to avoid exposing real information.&lt;/p&gt;

&lt;p&gt;This makes it possible to explore the product without signing up.&lt;/p&gt;


&lt;h1&gt;
  
  
  Step 2 — The SDK
&lt;/h1&gt;

&lt;p&gt;Then I built the SDK.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Eventra&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@eventra_dev/eventra-sdk&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tracker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Eventra&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_PROJECT_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;tracker&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;track&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;feature_used&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user_123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;feature&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dashboard&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The SDK supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Batch sending&lt;/li&gt;
&lt;li&gt;Retry logic&lt;/li&gt;
&lt;li&gt;Browser / Node / Edge runtimes&lt;/li&gt;
&lt;li&gt;TypeScript-first API&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This worked well — but something was missing.&lt;/p&gt;

&lt;p&gt;The SDK only tracks events that actually happen.&lt;/p&gt;

&lt;p&gt;Which meant I still couldn't detect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Features that exist but aren't used&lt;/li&gt;
&lt;li&gt;Dead UI&lt;/li&gt;
&lt;li&gt;Forgotten code&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Step 3 — The CLI
&lt;/h1&gt;

&lt;p&gt;That's when I built the CLI.&lt;/p&gt;

&lt;p&gt;The CLI scans your codebase and finds all tracked events:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @eventra_dev/eventra-cli init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scans your project&lt;/li&gt;
&lt;li&gt;Finds track() calls&lt;/li&gt;
&lt;li&gt;Detects wrapper components&lt;/li&gt;
&lt;li&gt;Saves configuration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now Eventra can compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Events in code&lt;/li&gt;
&lt;li&gt;Events actually triggered&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And detect unused features.&lt;/p&gt;

&lt;p&gt;That's when Eventra became a complete product.&lt;/p&gt;




&lt;h1&gt;
  
  
  The Hardest Parts
&lt;/h1&gt;

&lt;p&gt;Each part had its own challenges:&lt;/p&gt;

&lt;p&gt;Backend — rollup engine&lt;br&gt;
Frontend — workspace/project architecture&lt;br&gt;
CLI — AST parsing and wrapper detection&lt;/p&gt;

&lt;p&gt;The CLI ended up being one of the hardest parts technically.&lt;/p&gt;




&lt;h1&gt;
  
  
  Current Status
&lt;/h1&gt;

&lt;p&gt;After 6 months:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dashboard — production-ready&lt;/li&gt;
&lt;li&gt;SDK — stable&lt;/li&gt;
&lt;li&gt;CLI — early version (0.0.4)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm still building this solo, after work.&lt;/p&gt;




&lt;h1&gt;
  
  
  Pricing
&lt;/h1&gt;

&lt;p&gt;I'm not trying to maximize revenue right now.&lt;/p&gt;

&lt;p&gt;The goal is validation and feedback.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://eventra.dev/pricing" rel="noopener noreferrer"&gt;https://eventra.dev/pricing&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Try It
&lt;/h1&gt;

&lt;p&gt;Website&lt;br&gt;
&lt;a href="https://eventra.dev" rel="noopener noreferrer"&gt;https://eventra.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Docs&lt;br&gt;
&lt;a href="https://eventra.dev/docs" rel="noopener noreferrer"&gt;https://eventra.dev/docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SDK&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/@eventra_dev/eventra-sdk" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@eventra_dev/eventra-sdk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CLI&lt;br&gt;
&lt;a href="https://www.npmjs.com/package/@eventra_dev/eventra-cli" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@eventra_dev/eventra-cli&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub&lt;br&gt;
&lt;a href="https://github.com/and-1991/eventra-sdk" rel="noopener noreferrer"&gt;https://github.com/and-1991/eventra-sdk&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/and-1991/eventra-cli" rel="noopener noreferrer"&gt;https://github.com/and-1991/eventra-cli&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Why I'm Sharing This
&lt;/h1&gt;

&lt;p&gt;I'm not trying to sell anything.&lt;/p&gt;

&lt;p&gt;I'm just building something useful after work.&lt;/p&gt;

&lt;p&gt;If you're also building something on the side — I'd love to hear about it.&lt;/p&gt;

&lt;p&gt;And if Eventra looks useful, I'd love your feedback.&lt;/p&gt;

</description>
      <category>node</category>
      <category>react</category>
      <category>typescript</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
