Skip to content
Case study 05 · Private-markets research platform

Data explorers and profiles for a private-markets research platform.

For a subscription B2B platform, I scaffolded the Next.js app and built its data explorers, profile pages, entitlements and AWS delivery.

  • Next.js
  • TypeScript
  • AG Grid
  • AWS ECS
Role
Senior engineer, first commit to today
Timeline
Apr 2025 – Oct 2026
Stack
Next.js, TypeScript, AG Grid, AWS ECS
7
explorers
2
apps
106
columns

The problem

Analysts and investors needed to search and compare a very large set of companies, investors, funds and deals, filter them in ways a spreadsheet can’t, and export what they find. The business needed paid plans and free trials to control who sees which columns, and public profile pages that rank in search.

I made the first commit on the Next.js app and have worked on it since, alongside the client’s data and backend teams.

What I built

  1. 1. A Next.js app that renders on the server

    • Next.js App Router with React Server Components and TypeScript.
    • TanStack Query for data on the client, with the first rows fetched on the server so explorer pages load instantly.
    • A typed REST API client shared across the app, with filtering, sorting and CSV export for every list.
    • Caching per audience: public pages are cached at the CDN, and signed-in pages stay fresh and private.
  2. 2. Explorers for very large datasets

    I built the equity, debt and LP investor explorers, plus deals, companies, events and people, on AG Grid Enterprise.

    • Server-side row model with TanStack Query caching, so scrolling through very large tables stays fast.
    • Filters that map straight to the API, including tree filters for industries and deal types.
    • Saved layouts for column order, width and visibility, kept in Zustand.
    • CSV exports generated on the server, as a paid feature.
  3. 3. Profiles, plans and permissions

    • Profile pages for companies, investors, funds and deals, with cap tables, funding and valuation charts, financials and fund performance on AG Charts.
    • Paid plans and free trials tied to the billing platform, with hosted checkout and a billing portal.
    • Feature gating that shows or locks each paid feature the same way on the server and in the browser. Visitors who aren’t signed in see a preview with an upgrade prompt.
    • Hosted sign-in with smooth session refresh.
  4. 4. An internal tool for the data team

    In 2026 I joined the rebuild of the client’s internal data-operations tool, where staff create and curate the records behind the platform.

    • Next.js with ky for API calls, zod to validate every response and react-hook-form for forms.
    • Explorers and review flows for the data team, with tests that keep each column and filter in line with the agreed data model.
    • A reusable create form driven by a schema, so each new record type is mostly configuration.

Delivery, monitoring and SEO

The app runs in Docker on AWS ECS Fargate behind CloudFront, built and deployed with CodePipeline and CodeBuild. GitHub Actions run type checks, lint, Jest tests and a build on every pull request. Sentry monitors errors and performance with session replay, and Segment handles analytics. Public profile pages use structured data, canonical URLs and incremental static regeneration so they rank in search.

Client work. The client and product aren’t named, and details are described at a level the engagement allows.