dpaternina.com

Where I’ve worked, what’s come out of it

Three projects I’d show first, then every role I’ve had.

The whole record

2015 — now

Every project hangs off the job it came from. Open a role for the context, open a shipped thing for the full story — as many at once as you like.

RolesShippedFanxie Lab
Fanxie LabCTO — Co-Founder2016 — now
Role

I run Fanxie Lab, building full-stack applications for clients on Vue.js, React, Laravel, and Node.js, plus dashboards on React, TypeScript, Tailwind, and Supabase. I also built the SEO infrastructure inside Fanxie Cloud, our internal client-management platform, handling automated sitemap submission and site-health diagnostics across every client site we run. On the side I'm building Kiveo, a native iOS reading tracker in Swift and SwiftUI, while keeping the whole client stack on AWS and DigitalOcean at 99.9% uptime.

LARAVEL · NESTJS · SWIFTUI · DIGITALOCEAN · CLOUDFLARE
Kiveo2025 — Now
Shipped · 2025 — Now

Native iOS reading tracker and journal app 

Reading tracker and journal app, iOS native.
Designed for intentional readers. Users can track their books, save quotes, and create reflections.

  • No account required to use the app.
  • Private by default: no leaderboards, no social feeds.
My role
Everything
Stack
Swift · SwiftUI · CloudKit · NestJs
SwiftExample
struct LibraryView: View {
    @Query(
        sort: \Book.dateAdded, order: .reverse
    )
    var books: [Book]
    // ...
}
1800+
Reading Sessions logged to date
Agency Platform & Ops2026 — Now
Shipped · 2026 — Now

The plumbing a small agency runs on.

API design, transactional email, R2 storage, server provisioning, and the operational tooling that keeps partner infrastructure boring.

  • One-click client site creation: droplet, DNS, TLS, storage, mail.
  • Built so a two-person team can run real infrastructure without an ops hire.
My role
CTO
Stack
NestJs · Railway · Cloudflare · R2
TypeScriptExample
async create(
    serverId: string | null,
    dto: CreateSiteDto,
    userId: string,
  ): Promise {
    // Check if domain already exists (excluding deleted sites)
    const existingSite = await this.sitesRepository.findOne({
      where: {
        domain: dto.domain,
        status: Not(SiteStatus.DELETED),
      },
    });

    // ...
}
10+
Sites Running
Awesome Motive
Developer Team Lead2024 — 2026
Role

I led the development team behind MonsterInsights, shipping plugins with 2M+ combined active installs and owning the architecture for our next-gen AI analytics assistant: a natural-language interface over Google Analytics data built on Python, LangSmith, and Gemini. I drove the Laravel migration and the Vue 3 rewrite, cut feature development time by 30%, and pushed the team onto an AI-native workflow with coding agents, directing and reviewing about 90% of shipped code.

Along the way, a cross-sell plugin I designed pulled a 25% take rate on Black Friday.

PHP · WordPress · VueJs · React · Python · REST API · LangSmith · GCP · AWS
Natural Language Queries2026
Shipped · 2026

Ask your analytics a question.

AI-powered natural language queries that let site owners ask about their traffic in plain English instead of learning a reporting UI.

  • Ships inside a plugin that updates unattended on 3M+ sites: no breaking changes allowed.
  • Answers have to be simple and true at once; a confident wrong number is worse than no answer.
My role
Dev. Team Lead
Stack
PHP · VueJs · Python · LangSmith · GCP
QUERY → ANSWERExample
> which posts grew last month?

/blog/getting-started   +23%
/blog/wp-cli-tricks     +18%
/pricing                +15%
3M+
Active installs
Swipe the track →

Dates and titles only get you so far. What these years actually felt like is in the writing.

Let’s build something.

Product work, agency projects. Or if you just want to say hi, pick my brain, or just chat.
All welcome.