Skip to content
All work

Lab catalog, CMS and member app

Peptex

I led the build with the Admix Lab team: a rebuilt catalog website, an admin CMS where the lab's team edits every page, product and app text, and a member app where clients book video consultations, browse the catalog, message the lab and follow a community feed. The app installs from the browser on iPhone and Android, or as a signed Android APK, with no app store in between. One Next.js app serves the website, the admin and the API behind the app.

Client
Peptex Lab, Atlanta, GA
Year
2026
Role
Product and engineering lead, Admix Lab
Status
Live
Platforms
Website, Admin CMS, Member app
Peptex website home page on desktop: a dark hero over a lab photo, with a large headline, a catalog button and a photo of sealed glass vials, under a header with catalog search and category menus
Peptex home page on a phone: logo and menu button, the hero headline and catalog button, then the start of the catalog section

Buyers and prospective members. A rebuild of the lab's catalog website in which every text, image and list comes from the database, so the team updates it from the admin. A Get the app page walks iPhone and Android visitors through installing the member app.

  • Every page of the website and every text in the app editable from the admin CMS
  • Installable web app and a signed Android APK, built from one React codebase with Capacitor
  • Passkey sign-in with Face ID, Touch ID or a fingerprint
  • Consultation booking in the clinic's time zone, with clash checks and an automatic video room

Challenge

Peptex Lab in Atlanta had a catalog website. It wanted a site its own team could edit without a developer, and a member app where clients book video consultations, enroll in the lab's online course, message the lab and follow a community feed.

The app had to reach iPhone and Android users without App Store or Google Play accounts. Everything had to run on Vercel's serverless platform, which has no persistent disk, and members' identities had to stay private from one another.

Approach

With the Admix Lab team, I set up a pnpm monorepo with two apps. A Next.js 16 app serves the website, the 13 admin screens and 74 API route handlers on Prisma and PostgreSQL (Neon, 28 data models). The member app is a Vite and React 19 PWA, and Capacitor 8 packages the same code as a signed Android APK. Photos are compressed on the phone before upload, and uploads are stored in Postgres, because Vercel has no persistent disk.

Every text, image and list on the site and in the app, along with the catalog, the team and the consultation slots, lives in the database and is edited from the admin. Scoped API keys, stored only as hashes and never accepted by member endpoints, open the same operations to other systems.

Members sign in with a password or a passkey, and the Android app adds native biometric unlock. Each booking is checked in the clinic's time zone inside a serializable transaction, so two members cannot take the same slot, and gets its own Jitsi room with a hard-to-guess link, which the team can swap for a Meet or Zoom link. Course enrollment runs on bank transfers that the team marks as paid; Stripe Checkout with webhook confirmation is built and stays switched off until the lab adds its keys.

Impact

The website, the admin CMS and the installable web app are live on Vercel, and Android APK v1.2.0 downloads from the website. Fourteen production deployments shipped between 27 September and 7 October 2026; the first went out two weeks after the design handoff on 13 September.

Clients can install the app on iPhone or Android without an app store, guided by the Get the app page and the in-app install sheet. The lab's team changes any text, product or consultation setting without a developer, and follows each member's bookings, messages and payments from one console.

Buyers and prospective members

Website

A rebuild of the lab's catalog website in which every text, image and list comes from the database, so the team updates it from the admin. A Get the app page walks iPhone and Android visitors through installing the member app.

  • Catalog with search, category filter and sort
  • Product pages with photo galleries and specifications, fed by the admin catalog
  • Get the app page: open the web app or download the signed Android APK, with install steps for iPhone and Android
  • Responsive from phone to desktop, with SEO settings and a generated sitemap
Catalog page: a search box, category filter and sort control on the left, beside a grid of product cards with photos and short descriptions
Catalog with search, category filter and sort.
Get the app page: the heading "Install Peptex on your phone", buttons to open the web app or download the Android APK v1.2.0, and install steps for iPhone and Android
Install steps for iPhone (Add to Home Screen) and Android (Chrome or the signed APK).

The lab's team

Admin CMS

The lab's team runs the website and the app from 13 admin screens, including content for every page and app section, the catalog, members, messages, bookings, payments and the community feed.

  • Content editor for every website page and app section, including the header, footer, home, catalog, about, how to order, contact, legal pages, SEO and FAQ
  • Product editor with main-image and gallery uploads and an in-stock setting
  • Member records with profile edits, password resets and targeted in-app notifications, plus broadcasts to all members
  • API keys for other systems: shown once, stored only as a hash, read or write scope, revocable
Admin product editor: Basics fields (name, slug, subtitle, category, form, sort order), an availability checkbox, and main-image and gallery uploads
Product editor. The website and the app read the same catalog.Data anonymized
Admin member record under a placeholder name: profile fields for name, email and role, a sharing checkbox, password reset and a send-notification form, beside a list of dated check-ins with sample values
Member record in the admin. Placeholder name and sample data.Data anonymized

Members

Member app

One React app that installs from the browser on iPhone and Android, and also ships as a signed Android APK. Members book video consultations, browse the catalog, message the lab and follow the community feed without going through an app store.

  • Consultation booking across the next 7 days in the clinic's time zone, with server-side clash checks and a video room for every booking
  • Sign-in with a password or a passkey (Face ID, Touch ID or fingerprint); the Android app locks again behind native biometrics after a minute in the background
  • Products tab that reads the same catalog the team edits in the admin
  • Other members only ever see a first or middle name, never a full name or email
Install Peptex sheet over the sign-in screen, with three numbered iPhone steps: tap Share, choose Add to Home Screen, then tap Add
The app's own iPhone install guide, opened from the sign-in screen.

Stack

  • TypeScript
  • Next.js 16
  • React 19
  • Prisma 6
  • PostgreSQL (Neon)
  • Vite 8
  • Capacitor 8
  • SimpleWebAuthn
  • zod 4
  • pnpm workspaces
  • Vercel

Integrations

  • Jitsi Meet
  • WebAuthn passkeys
  • Android biometrics
  • Google Calendar and .ics