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
- Live
- empeeryal.com
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
| Concern | Choice |
|---|---|
| Framework | Next.js App Router, React, TypeScript |
| Styling | Tailwind CSS, Motion |
| Data | Postgres on Neon with Drizzle ORM |
| Accounts | Better Auth |
| Payments | Stripe Checkout and Customer Portal |
| Resend | |
| Hosting | Vercel |
Every change runs through linting, type checking, unit tests and browser tests before it ships, and releases are tagged with a generated changelog.