DEV Community

kulman Lab
kulman Lab

Posted on

From 0 to 500 DAU with Zero Marketing Budget: 4 Months Building a Web-Based 2D CAD

Hey dev.to community! 👋

I'm Volodymyr, a Java Engineer with over 12 years of experience in coding and building distributed backend systems.

For the past 3+ years, alongside my full-time job, I've been building a side project called KulmanLab. It is a completely free, browser-based, offline-first 2D CAD editor for technical drawings built with Angular, TypeScript, and HTML5 Canvas.

A few months ago, I rolled out the core foundation. Today, I want to share an honest, transparent breakdown of what happened next: the architectural decisions, performance challenges, AI workflows, failed marketing experiments, and real user metrics.

If you are a developer looking to push a complex side project into production, building a micro-SaaS, or working with heavy client-side Canvas rendering, this is for you.


🏗 The Architecture: Why a Backend Developer Built a Serverless Web App

Here is the irony: Despite 12+ years specializing in Java, Spring, microservices, and databases, I deliberately chose a 100% Client-Side Only / Serverless architecture for KulmanLab.

I know firsthand how much maintenance, infrastructure, and operational effort backend services require. For a side project, I wanted zero server overhead.

Core Architecture Principles:

  • No Server Calculations: All geometry calculations, 2D vector pathing, state management, and rendering happen strictly in the browser.
  • Offline-First Storage: User project files and drawing history persist locally via IndexedDB.
  • Zero Onboarding Friction: No registration, no email verification, no trial paywalls. Users open the app and instantly start drawing.
  • Interoperability: Native import/export for CAD standards, including .dxf format support.

🛠 Features & Engineering Milestones

In the last four months alone, the project evolved from a basic line renderer to a capable technical drawing tool:

  1. Rich Text Engine (MTEXT / TEXT): Handled parsing and rendering formatted CAD typography natively onto the HTML5 Canvas.
  2. Vector Hatching Patterns (HATCH): Generates and fills complex closed boundaries with repeating vector patterns.
  3. Dynamic Dimension Lines: Auto-calculates linear, angular, and radial dimensions with real-time vector alignment.
  4. Layouts & Paper Space: Printing setup, view scaling, and readying blueprints for export.
  5. AI-Assisted Iteration: Using tools like Claude Code accelerated feature shipping by up to 10x, though much of the day-to-day still comes down to deep code inspection, edge-case fixes, and Canvas performance optimization.

📊 Real Growth Metrics (No Fluff)

Initial user traction started in early May, but organic growth accelerated significantly through the summer:

  • Monthly Active Users (MAU): ~7,000 unique users / 30 days
  • Peak Daily Active Users (DAU): 520 DAU
  • Average Session Duration: 13–15 minutes (A critical engagement metric showing users actually complete technical drawings rather than bouncing).
  • Traffic Quality: 100% organic without paid ads.

Key Traffic Insights:

  • Organic Search (SEO): Moving the web application from the main domain root to app.kulmanlab.com and building a dedicated static landing page on kulmanlab.com provided the single biggest SEO boost.
  • Global Distribution: Broad global usage with steady engagement across Europe, North America, and Asia.
  • OS & Browsers: Heavily dominated by desktop Chrome and Edge users, fitting the B2B/engineering user persona.


📣 Marketing Experiments: What Worked vs. What Failed

As a solo engineer without a marketing budget, getting the word out was pure experimentation.

❌ What Didn't Work

  • Engineering & CNC Forums: Low reach, high risk of instant bans for self-promotion.
  • Cold Pitching Reviewers/Bloggers: Near 0% response rate.
  • Product Hunt: "Unfeatured" launch yielded virtually zero traffic or SEO indexation benefit.
  • Student Discord Servers & Social Media (X/Facebook): High time investment with minimal conversion for a specialized B2B tool.

✅ What Actually Worked

  1. SEO Optimization & Landing Page Separation: Separating the landing marketing site from the functional app (app.kulmanlab.com) drastically improved Google indexing for CAD queries.
  2. Building in Public & Developer Communities: Sharing genuine technical challenges, changelogs, and honest post-mortems on developer platforms created authentic organic word-of-mouth.

💡 Key Takeaways for Developers

  1. Embrace Constraints: Eliminating the backend forced me to solve complex state and rendering logic on the client side, keeping infrastructure costs at $0 while delivering instant speed to users.
  2. Focus on Time-to-Value: Removing logins, sign-ups, and paywalls created frictionless trial loops.
  3. Listen to Local Storage: Using IndexedDB enabled an offline-first experience that users in low-connectivity environments deeply appreciate.

Try it out & feedback welcome!

You can test the app directly in your browser without creating an account:
🌐 Web App: kulmanlab.com

I'd love to hear your thoughts on building complex Canvas-based applications in Angular! How do you handle heavy client-side state and rendering performance in your own projects? Let's discuss in the comments below! 👇

Top comments (0)