All projects
2026LiveFullstack Engineer — design, schema, security, edge functions, web & mobile

PepCycle

All-in-one peptide research companion — calculators, library, protocol tracking, inventory & shared vials

A bilingual web and native mobile app for peptide research. Combines a free toolkit of calculators and a curated peptide library with paid power-user features like unlimited protocols, auto-deducting inventory, shared vials, advanced half-life tracking and data export. Ships as a PWA and as native iOS/Android apps via Capacitor, monetized with Stripe on web and RevenueCat on mobile.

30+
Peptide profiles
4
Calculators
3
Platforms (Web · iOS · Android)
2
Languages (DE/EN)
01

Overview

PepCycle is a peptide research companion built as a single TypeScript codebase that ships to the web as a PWA and to iOS and Android as native apps via Capacitor.

The free tier covers the core toolkit: reconstitution, unit-conversion, half-life and nasal-spray calculators, a curated peptide library with verified studies, and limited protocol and inventory tracking.

The Pro tier unlocks unlimited protocols and inventory, auto-deduction of consumed peptide from stock, shared vials between two users, advanced half-life visualization, PDF export and a one-click GDPR data export.

Monetization is handled by Stripe Checkout and Customer Portal on the web and by native in-app purchases through RevenueCat on mobile, with promo codes, expiration warnings and an in-app support inbox on top.

02

Architecture

React + Capacitor clients → Backend (Auth · Postgres + RLS · Storage) → Edge Functions → Stripe & RevenueCat

Clients
Web PWA · iOS · Android (Capacitor)
L1
CalculatorsPeptide libraryProtocolsInventoryShared vialsNotificationsAdmin consolei18n (DE/EN)
Backend
Auth · Storage · Postgres client
L2
Email/password + OAuth (PKCE)Native auth bridgePrivate storage bucketsRealtime updates
Postgres + Row Level Security
Per-user data isolation
L3
profiles & rolespeptides & studiesprotocols & logsinventory & alertsshared vialsentitlementspromo codessupport ticketsnotifications
Edge Functions & Integrations
Server-side workflows · Stripe · RevenueCat
L4
Stripe webhookIAP webhook (RevenueCat)Promo redemptionShared-vial invitationsVial consumption splitAdmin actionsSupport inboxGDPR data export
03

Tech stack

Frontend
React 18TypeScriptViteTailwind CSSshadcn/uiFramer MotionLucide icons
State, Routing & i18n
TanStack React QueryReact Router v6i18next (DE/EN)
Mobile & PWA
Capacitor (iOS & Android)vite-plugin-pwaService worker with update banner
Backend
PostgreSQLRow Level SecurityEdge FunctionsPrivate storage buckets
Payments
Stripe CheckoutStripe Customer PortalRevenueCat native IAPPromo codes
Auth & Security
Email/passwordOAuth with PKCEStrong password policyRoles via dedicated tableReactMarkdown sanitization
Tooling
VitestjsPDFDark/light mode & themes
05

MVP features

Reconstitution calculator

Computes water volume, dose in IU and a syringe-scale visualization from vial size and target dose.

Unit converter

Bidirectional conversion between mg, mcg, ml and IU for fast in-context calculations.

Half-life tracker

Visualizes peptide concentration over time, with an advanced view available to Pro users.

Nasal spray simulator

Helps plan nasal-spray dosing with per-puff math and total-dose projection.

Peptide library

30+ curated peptide profiles with dosing, side effects, interactions and verified studies linked to PubMed.

Protocol tracking

Scheduling, injection-site rotation, dose splitting and titration. Free tier supports up to 5 active protocols; Pro is unlimited.

Inventory management

Tracks products with expiration dates and low-stock alerts. Free tier supports up to 5 products; Pro is unlimited and adds auto-deduction on logged doses.

Shared vials

Two users can sync a single vial via invitation, with consumption split securely on the server so neither side can over-draw.

Guides

In-app reconstitution and buying guides, including partner content, edited through a dedicated guide editor.

Bilingual UI & theming

Full DE/EN translations with persisted language preference, plus light/dark mode and selectable color themes.

PWA & mobile apps

Installable PWA with skip-waiting service worker and update banner, plus native iOS and Android builds via Capacitor.

Subscriptions & IAP

Stripe Checkout and Customer Portal on web with a graceful cancel flow, and RevenueCat-driven in-app purchases on iOS and Android.

Promo codes

Redeemable promo codes with 7-day and 1-day expiration warnings surfaced in-app.

Support inbox

In-app ticketing with row-level security, plus an admin inbox to triage and respond.

Admin tools

Role-based admin console with proactive messaging, user growth stats and partner click tracking.

Data export

Client-side peptide PDF export and a one-click GDPR JSON export covering 12+ tables.

06

Workflows

Onboarding & first dose

  1. 1

    User signs up via email/password or OAuth and lands in a short onboarding tour.

  2. 2

    They pick a peptide from the library and run the reconstitution calculator to determine water volume and dose.

  3. 3

    They create a protocol with schedule, injection-site rotation and optional titration.

  4. 4

    They add the product to inventory with an expiration date; future logged doses can auto-deduct from stock on Pro.

Shared vial

  1. 1

    A Pro user creates a vial and invites a second user by email.

  2. 2

    The invitee accepts the invitation and the vial appears in both accounts.

  3. 3

    Each logged dose is sent through a server-side split that updates the shared remaining volume atomically.

  4. 4

    Both users see real-time updates and low-stock alerts on the same vial.

Upgrade to Pro

  1. 1

    On web, the user goes through Stripe Checkout; on mobile, they purchase via the native App Store / Play Store flow handled by RevenueCat.

  2. 2

    A server-side webhook validates the event and updates the user's entitlement.

  3. 3

    Pro features (unlimited protocols/inventory, auto-deduction, shared vials, advanced half-life, exports) unlock immediately in the UI.

  4. 4

    Cancellation is handled through the Stripe Customer Portal or the native store, with an in-app 'expires on' indicator until the period ends.

Support & admin

  1. 1

    User opens a support ticket from inside the app; the ticket is scoped to them via row-level security.

  2. 2

    An admin sees the ticket in the admin inbox and can reply, with the conversation surfaced back to the user via the in-app notification bell.

  3. 3

    Admins can send proactive broadcast messages, monitor user growth and track partner referral clicks from the admin console.

07

Security

  • Roles stored in a dedicated table and checked through a security-definer helper, so client code cannot escalate privileges.
  • Row Level Security enforced on every user-owned table — entitlements, inventory, protocols, shared vials and support tickets.
  • OAuth flows use PKCE; passwords enforce a strong policy.
  • Shared-vial consumption goes through a server-side routine so neither participant can over-draw or tamper with the remaining volume.
  • Stripe and RevenueCat webhooks validated server-side before entitlements are updated.
  • User-generated markdown is sanitized before rendering.
  • Private storage buckets, accessed through short-lived signed URLs.
  • Account deletion cascades through related data so no orphaned personal records remain.