Catalin Pinte

Catalin Pinte

I'm a full-stack engineer, mostly TypeScript: Next.js and React on the front, NestJS and PostgreSQL behind.

For the last three years I built Publi, a publishing platform for digital magazines, in a team of three. My part was the design studio, the editor, the reader sites and the analytics.

Before that I was a Solutions Engineer at Vercel and worked on the Shopify integration for Next.js Commerce. I've been building for the web since 2010.

Portrait of Catalin Pinte
Writing code since
2010
Previously
Publi LLC, Vercel and others
Based in
Romania

Selected work

The client code is private, so each project comes with a small working model of the idea. I'm happy to walk through the real thing on a call.

Design tool · SaaSPubli, 2023 – 2026

Design Studio

A no-code studio for reusable page sections, with a responsive styling engine shared by the studio and the editor.

The problem

Designers needed to build branded page sections once and let editors reuse them anywhere, on every screen size, without breaking the design.

What I built

  • Studio for heroes, tables of contents, authors, charts, sliders, headers and footers, from scratch or from 38 ready-made designs.
  • 40+ element panels with separate desktop, tablet and mobile values for typography, colour, spacing, borders, shadow, size and layout.
  • Every override tracked against its design, so editors can adjust a section and restore the original at any time.
  • A Swiper-based slider engine with 10 templates: slides per view, arrows, pagination, autoplay, transitions, aspect ratio, focal point and overlays.
  • Role-checked design endpoints in NestJS, so only the right people change shared designs.
  • Next.js
  • React
  • TypeScript
  • Jotai
  • Slate
  • NestJS
  • PostgreSQL
Preview on
Title size
56px40px28px
Columns
321
Padding
64px40px20px
Align
leftleftcenter
One section, three breakpoints. Switch the device and the values change, the way they do in the studio's settings panel.

Performance · PublishingPubli, 2023 – 2026

Reader sites & publishing

A React Server Components renderer that ships only the JavaScript a page needs, with a publish pipeline and real-time analytics behind it.

The problem

Reader pages rendered the whole Slate editor tree on the client. Pages were heavy, and editors needed fresh content and live numbers on every publish.

What I built

  • Custom React Server Components renderer on the Next.js App Router; charts, carousels, gates and search load on demand.
  • Branding compiled to CSS variables; responsive Cloudinary images.
  • Drafts with revisions, signed draft-mode previews, background jobs that refresh cached pages and the Meilisearch index on publish.
  • Redis in middleware resolves the publication and member access on every request.
  • Per-publication analytics on Tinybird (ClickHouse): live visitors, trends, top pages, sources and devices.
  • Upgraded the platform to Next.js 16 and React 19.
  • Next.js 16
  • React 19
  • RSC
  • Redis
  • Meilisearch
  • Tinybird
  • Cloudinary
A reader page. Only the outlined parts load JavaScript, and only when someone needs them.

Open source · CommerceVercel, 2021 – 2023

Next.js Commerce

The Shopify integration for Vercel's open-source Next.js Commerce.

The problem

Next.js Commerce v1 was one storefront with pluggable commerce providers. The Shopify provider had to be complete, fast and kept current with the Shopify API and Next.js. After the App Router, Vercel replaced the unified platform with one template per provider.

What I built

  • Shopify provider updates; checkout created on add to cart; product description HTML.
  • Blocking fallback for pages, dynamic API routes, improved error handling.
  • Shopify API version updates, the Next.js 13 upgrade and the pnpm migration.
  • BigCommerce and Commerce.js provider work in the same codebase.
  • Next.js
  • React
  • TypeScript
  • Shopify
  • pnpm
Some of my merged pull requests in vercel/commerce. The cart button is a toy; #432 is the real one.

SaaS · Field salesHVAC company, 2021 – 2024

HVAC estimating platform

Installers price a job on the spot: pick the system, see equipment, hours and price, hand the client a PDF.

The problem

Installers and sellers needed to price jobs at the customer's door, and the office needed those estimates to flow into jobs, purchase orders and installations.

What I built

  • Estimate calculator with kits, multipliers and billable hours.
  • Equipment catalogue with brands, vendors and categories; Algolia and Meilisearch search.
  • Estimate versions and archive, PDF quotes (Puppeteer), customer portal.
  • Job flow: purchase orders, dispatch, installation, payments and warranty; roles and permissions.
  • Turborepo monorepo with four apps, about 450 commits and 28 PRs.
  • Next.js
  • tRPC
  • Prisma
  • PostgreSQL
  • Supabase
  • NextAuth
  • Jotai
Kit
Equipment$7,360
Labour at $95/h$1,330
Total$8,690
A toy version of the estimate calculator. The prices are made up.

CRM · Event-drivenMachinery dealer, 2015 – 2019, 2023

Machinery CRM

An event-driven quote-to-invoice CRM for a seller of injection-molding machines, with accounting sync.

The problem

Website and seller-created offers had to become PDF quotes, follow-ups and invoices, without polluting the accounting system.

What I built

  • Laravel API and AngularJS CRM with lifecycle events, listeners, queues and scheduled expiry reminders.
  • Quote-to-invoice, shipping and carriers, catalogue with manufacturers, vendors and categories, PDF generation.
  • QuickBooks integration (OAuth, SDK): the CRM is the system of record and pushes only clean records.
  • Public website and inventory browser; Ionic PWA; a Next.js storefront in 2023.
  • Laravel
  • AngularJS
  • MySQL
  • Redis
  • QuickBooks
  • Next.js
  1. New quotefrom the website or a seller
  2. Prepareditems, costs, files
  3. Sent to clientPDF by email
  4. Expiry reminderscheduled job
  5. Order requestedclient accepts
  6. Invoicerequested, then paid
  7. QuickBooksclean record pushed
A quote's life in the CRM, from the first request to the accounting system.

Data model · CRMTax practice, 2015 – 2017

Practice management

A bilingual practice-management system for a tax firm, built on a data model I designed.

The problem

A tax and business-services firm needed clients, companies, service orders, invoices and staff in one place, in Portuguese and English.

What I built

  • Party model: a person specialised into individual and company, with typed addresses, phones and identity records.
  • Staff permission groups with exceptions; service orders with statuses, notes and a full audit log.
  • Client portal, calendar, invoicing, a 160-service catalogue, Stripe payments, QuickBooks sync, Twilio SMS and voice.
  • Laravel API with Redis queues; Angular app packaged with Electron.
  • Laravel
  • Angular
  • Electron
  • Redis
  • Stripe
  • Twilio

AlsoOn the side: Naveta, a personal live-transit tracker for Cluj-Napoca, built in Rust with AI coding agents.

Experience

  1. Mar 2023 – Oct 2026

    Publi

    Full-stack engineer (contract). Publishing platform for digital magazines.

    Built the platform from prototype to production in a team of three. I owned the design tools, editor extensions, reader sites and analytics end to end: Next.js, React and TypeScript on the front; NestJS and PostgreSQL behind.

    More about this roleShow less
    • No-code Design Studio. Tool for creating reusable page sections (hero, table of contents, author, chart, slider, header, footer), from scratch or from 38 ready-made designs. Editors drop them into any page or article, adjust them and restore the original at any time. Latest: a Swiper-based slider with 10 templates.
    • Responsive styling engine. Settings package shared by the studio and the editor: 40+ element panels with desktop, tablet and mobile values for typography, colour, spacing, borders, shadow, size and layout (grid, flex). Every override is tracked against its design and can be reset.
    • Rich-text editor. 30+ custom Slate.js blocks, many powered by studio designs: sliders filled from linked articles (sorted automatically or by hand), galleries, tables of contents, content gates and charts.
    • No-code charts. Editors build interactive charts without code: pick one of 9 Recharts chart types, enter the data in a built-in table and apply a chart design made in the Design Studio. Charts load on demand on reader pages.
    • Reader sites. Custom React Server Components renderer on the Next.js App Router, replacing read-only Slate rendering, so pages ship only the JavaScript they need. Branding compiles to CSS variables, images are responsive Cloudinary. Upgraded to Next.js 16 and React 19.
    • Publishing pipeline. Drafts with revisions, signed Next.js draft-mode previews, background jobs that refresh cached pages and the Meilisearch index on publish; Redis in middleware for publication and member access checks.
    • Lead capture & membership. Drag-and-drop form builder (React, Jotai) with submissions; content gates that unlock issues and PDFs in exchange for a form; members-only publications with email and domain allowlists and passwordless login (magic link, one-time code, Better Auth).
    • Real-time analytics. Per-publication analytics built from scratch on Tinybird (ClickHouse): live visitors, traffic trends, top pages, sources and devices, filterable by issue. Google Tag Manager and Adobe Analytics.
    • API & quality. NestJS/TypeORM/PostgreSQL modules, role-based access control on design endpoints, Paddle billing, issue duplication across publications, export/import between environments. Wrote most of the Playwright end-to-end suite; code review and on-call.
    • Next.js
    • React
    • TypeScript
    • NestJS
    • PostgreSQL
    • TypeORM
    • Slate
    • Jotai
    • Tinybird
    • Meilisearch
    • Redis
    • Better Auth
    • Paddle
    • Playwright
    • Tailwind
    • React Aria
    • Sentry
    • Google Cloud
  2. Jun 2022 – Jan 2023

    Vercel

    Solutions Engineer. The company behind Next.js.

    Developed and maintained the Shopify integration for Next.js Commerce, and helped enterprise account teams with their customers' Next.js questions.

    More about this roleShow less
    • Next.js Commerce. Built the Shopify integration (also BigCommerce and Commerce.js providers) in the open-source vercel/commerce repo, 74 commits.
    • Shipped in the open. Checkout created on add to cart, product description HTML, blocking fallback pages, dynamic API routes, Shopify API version updates, better error handling, the Next.js 13 upgrade and the pnpm migration.
    • Enterprise support. Resolved customers' Next.js and Vercel questions for enterprise account teams, proposed solutions that fit each customer and audited their Next.js sites. Code review and on-call.
    • Next.js
    • React
    • TypeScript
    • Shopify
    • Vercel
    github.com/vercel/commerce ↗
  3. May 2021 – 2024

    HVAC company

    Full-stack engineer (contract). Estimating and job platform.

    Built the platform first, then extended it on client requests through 2024: a Next.js cost estimator that grew into a Turborepo monorepo with four apps.

    More about this roleShow less
    • Estimate calculator. Kits with multipliers and billable hours, an equipment and item catalogue with brands and vendors, estimate versions and archive, PDF quotes.
    • Customer portal & job flow. Customer portal, job flow from purchase order to installation and payment, roles and permissions, service-hours settings.
    • Scale of work. About 450 commits and 28 PRs in the monorepo, after an earlier 274-commit Next.js cost estimator.
    • Next.js
    • TypeScript
    • tRPC
    • Prisma
    • NextAuth
    • PostgreSQL
    • Supabase
    • Jotai
    • Algolia
    • Meilisearch
    • SendGrid
    • Zapier
  4. 2015 – 2019, 2023

    Machinery dealer

    Full-stack engineer (contract). Injection-molding machines and parts.

    Built the CRM behind the sales team, the public website, and later modernised the storefront on Next.js.

    More about this roleShow less
    • Event-driven CRM. Laravel API and AngularJS CRM: quote lifecycle with events, listeners, queues and scheduled expiry reminders, quote-to-invoice, shipping and carriers, PDF generation.
    • Accounting sync. QuickBooks integration (OAuth, SDK). The CRM stays the system of record and pushes only clean records.
    • Website & apps. Public website, inventory browser and quote requests (PHP, WordPress, AngularJS); Ionic PWA. In 2023, a new storefront on Next.js.
    • PHP
    • Laravel
    • AngularJS
    • MySQL
    • Redis
    • QuickBooks
    • WordPress
    • Ionic
    • Next.js
  5. 2015 – 2017

    Tax practice

    Full-stack engineer (contract). Practice management for a tax firm.

    Designed the data model and built a bilingual (Portuguese/English) practice-management system for a tax and business-services firm.

    More about this roleShow less
    • Data model. Party model (person specialised into individual and company), permission groups with exceptions, service orders with statuses and a full audit log, invoices. I designed it, following the lead's naming convention.
    • Product. Client portal, calendar, invoicing, staff tasks, a 160-service catalogue in 7 groups, Stripe payments, QuickBooks sync, Twilio SMS and voice, Dropbox files.
    • Stack. Laravel API with Redis queues; Angular app packaged with Electron.
    • PHP
    • Laravel
    • Angular
    • Electron
    • Redis
    • Stripe
    • QuickBooks
    • Twilio
  6. 2010 – 2020

    Earlier client work

    Full-stack developer. Charities, restaurants and local businesses.

    Websites, APIs and mobile apps for charities and local businesses, mostly on Laravel, Vue and WordPress.

    More about this roleShow less
    • Food-bank charity. Statamic/Laravel/Vue site, Laravel API, Ionic/Cordova app, Stripe donations.
    • Restaurant. Menu with instant search, orders and reservations (Statamic, Laravel, Vue).
    • Church and car wash. WordPress custom plugins; an AngularJS ordering app with time slots.
    • Charity donation platform. WordPress and Authorize.net, later Stripe: one-time and recurring donations, donor history, email receipts.
    • PHP
    • Laravel
    • Vue
    • WordPress
    • Ionic
    • Stripe
    • AngularJS
  7. 2006 – 2009

    Babeș-Bolyai University, Cluj-Napoca

    Economic Informatics, Faculty of Economics and Business Administration (coursework completed, no degree).

    Languages: Romanian (native), English.

Tools, and where I used them

Frontend

  • ReactPubli, Vercel
  • Next.jsPubli, Vercel, HVAC company, Machinery dealer
  • TypeScriptPubli, Vercel, HVAC company
  • TailwindPubli
  • JotaiPubli, HVAC company
  • SlatePubli
  • React AriaPubli
  • VueEarlier client work
  • AngularTax practice
  • AngularJSMachinery dealer, Earlier client work
  • Flutter

Backend

  • Node.js
  • NestJSPubli
  • tRPCHVAC company
  • REST APIs
  • Better AuthPubli
  • NextAuthHVAC company
  • Firebase Auth
  • PHPMachinery dealer, Tax practice, Earlier client work
  • LaravelMachinery dealer, Tax practice, Earlier client work

Data

  • PostgreSQLPubli, HVAC company
  • SupabaseHVAC company
  • MySQLMachinery dealer
  • TinybirdPubli
  • PrismaHVAC company
  • TypeORMPubli
  • RedisPubli, Machinery dealer, Tax practice
  • MeilisearchPubli, HVAC company
  • AlgoliaHVAC company

Commerce & integrations

  • StripeTax practice, Earlier client work
  • PaddlePubli
  • ShopifyVercel
  • QuickBooksMachinery dealer, Tax practice
  • TwilioTax practice
  • SendGridHVAC company
  • ZapierHVAC company

Testing & infra

  • PlaywrightPubli
  • Vitest
  • GitHub Actions
  • Docker
  • Caddy
  • VercelVercel
  • Google CloudPubli
  • Cloudflare Workers
  • SentryPubli

How I work

  1. Understand

    I start from the problem and the data: what people do, and what the system must keep true. On the tax-practice CRM I designed the data model before the first screen.

  2. Design

    From Figma or from scratch. At Publi I built the first settings panels from a teammate's Figma designs, then designed later tools myself.

  3. Build

    Test-first, with Playwright end-to-end suites and Vitest. AI-assisted with a Claude Code planner, executor and reviewer loop; nothing is committed until checks pass.

  4. Ship & own

    Ship to main behind feature flags and enable later. Code review, on-call, Sentry and Google Cloud logs when something breaks.

Write to me

If you're hiring, or have a project in mind, I'd like to hear about it. Open to remote contract and full-time roles.