Skip to content
All work

Case study · Design & development

empeeryal.com

One site for a person and a company: portfolio, writing, a newsletter, memberships, a shop and an admin dashboard — designed and built from scratch.

Client
EMPEERYAL LLC
Stack
Next.js, TypeScript, Tailwind CSS, Postgres, Stripe

The brief

Two domains, one person. peery.me had been my personal address for years and empeeryal.com belonged to the LLC. Maintaining two sites meant neither was ever finished. The brief I gave myself:

  • One site that works as a portfolio, a publication and a storefront.
  • One name that matches every profile I have.
  • No lock-in — content in files I own, code I can read, services I can swap.

Decisions

empeeryal.com is home. Every social handle is empeeryal and the LLC carries the name, so that is where the site lives. peery.me forwards to it.

Two pillars, not ten menus. Everything I do is either building (web) or money (markets and side income). The navigation says exactly that.

Content lives in the repository. Posts, notes and case studies are MDX files, checked for mistakes at build time. Publishing is a commit.

Dark first, with a ticker accent. Editorial type, lots of space, and a monospace detail that nods to the trading side without pretending to be a terminal.

What is under the hood

ConcernChoice
FrameworkNext.js App Router, React, TypeScript
StylingTailwind CSS, Motion
DataPostgres on Neon with Drizzle ORM
AccountsBetter Auth
PaymentsStripe Checkout and Customer Portal
EmailResend
HostingVercel

Every change runs through linting, type checking, unit tests and browser tests before it ships, and releases are tagged with a generated changelog.