From an empty machine to the storefront, admin dashboard, API and docs running locally.
BabyMart is a pnpm workspace driven by Turborepo. You install once at
the repository root, build the shared packages, add your environment files
and start every web app with one command. The mobile app
is the exception. It sits outside the workspace and is installed on its own.
These docs describe the Turbo Monorepo edition of BabyMart — all four
apps, the shared packages and the Turborepo setup. Pick a plan, pay once, and
the download is available right after checkout.
Best value · these docs
Turbo Monorepo
The complete BabyMart monorepo documented on this site — mobile app included.
$99.99one-time
React Native mobile app for iOS and Android included
Open the project folder. If you bought the source, this is the folder
you unzipped in After you buy. If your team keeps it in
a private Git repository, clone that instead:
Terminal window
gitclone<your-private-repo-url>turbo-babymart
cdturbo-babymart
Install every workspace package from the root. This installs the
storefront, admin, API, docs and the three shared packages together.
Terminal window
pnpminstall
Build the shared packages.@babyshop/types and @babyshop/config
compile to dist/, and the apps import that output.
Terminal window
pnpmbuild:packages
pnpm run setup runs steps 2 and 3 together. Type run: plain pnpm setup
is a built-in pnpm command that does something else.
Create the environment files. Only the storefront ships an example
file. Create the others by hand, using the tables on
Environment variables.
Terminal window
cpapps/web/.env.exampleapps/web/.env
touchapps/api/.envapps/admin/.env
At minimum the API needs MONGO_URI and JWT_SECRET, the storefront needs
NEXT_PUBLIC_API_URL, and the admin needs VITE_NEXT_PUBLIC_API_URL and
the VITE_FIREBASE_* keys.
(Optional) Load the demo catalogue, so the store has products,
categories and banners. See Demo data.
Terminal window
nodescripts/seed-data.js
Start everything.
Terminal window
pnpmdev
Turborepo starts the storefront, admin, API and docs in parallel.
Paid orders are only marked paid when a Stripe webhook arrives. To test
that locally, sign in with stripe login and forward events:
Terminal window
# Storefront Checkout Sessions → the storefront's webhook route
pnpmwebhook:web
# PaymentIntents (mobile app) → the API's webhook route
pnpmwebhook:api
Copy the whsec_… signing secret that stripe listen prints into
STRIPE_WEBHOOK_SECRET for the app that receives the events. The full flow is
on Payments.
pnpm-workspace.yaml excludes apps/mobile (!apps/mobile). The mobile app
uses npm and its own package-lock.json:
Terminal window
cdapps/mobile
npminstall# or, from the root: pnpm mobile:install
bundleinstall# CocoaPods from the Gemfile (macOS only)
cdios && bundleexecpodinstall && cd..
npmstart# Metro bundler
npmrunios# or: npm run android
In development the app calls http://localhost:8000/api on iOS and
http://10.0.2.2:8000/api on the Android emulator, so start the API first.
Details are on Mobile app.