BabyMart is TypeScript from end to end. React 19 runs the storefront, the admin
dashboard and the mobile app; Express and MongoDB run the API; Turborepo and
pnpm tie it all together. The versions below are the ranges declared in each
app’s package.json.
flowchart LR
subgraph Clients
W["Storefront<br/>Next.js 16"]
A["Admin<br/>Vite 8 + React 19"]
M["Mobile<br/>React Native 0.88"]
end
API["API<br/>Express 5 + Mongoose 9"]
DB[("MongoDB")]
W --> API
A --> API
M --> API
API --> DB
API --> S["Stripe · SSLCommerz"]
API --> C["Cloudinary · S3"]
API --> E["SMTP email"]
| Tool |
Version |
Where it is set |
| Node.js |
>=22.12.0 |
root package.json → engines |
| pnpm |
9.15.9 |
root package.json → packageManager |
| Turborepo |
^2.11.10 |
root package.json |
| TypeScript |
^6.0.3 |
every app (TypeScript 7 is out, but typescript-eslint and @astrojs/check do not support it yet) |
| ESLint |
^10.14.0 |
root and every web app (the mobile app uses ^8.57.1, as React Native’s ESLint config expects) |
| Prettier |
^3.9.10 |
root |
📄package.json
| Package |
Version |
Used for |
next |
^16.4.5 |
App Router, server components, route handlers |
react, react-dom |
^19.3.1 |
UI |
tailwindcss |
^4.3.4 |
Styling, with shadcn-style Radix components |
zustand |
^5.0.16 |
Cart, wishlist, user, compare and currency stores |
stripe / @stripe/stripe-js |
^23.1.0 / ^10.2.1 |
Checkout Sessions and webhook |
firebase |
^13.2.0 |
Google and GitHub sign-in popups |
react-hook-form + zod |
^7.91.0 / ^4.6.7 |
Forms and validation |
motion |
^14.9.1 |
Animation |
recharts |
^3.10.1 |
Customer analytics charts |
next-sitemap |
^4.2.3 |
Sitemap |
vitest |
^5.1.0 |
Tests |
📄apps/web/package.json
| Package |
Version |
Used for |
vite |
^8.3.6 |
Dev server and build |
react, react-dom |
^19.3.1 |
UI |
react-router |
^8.5.1 |
Routing (lazy-loaded pages) |
tailwindcss |
^4.3.4 |
Styling |
zustand |
^5.0.16 |
Auth and settings stores |
axios |
^1.21.0 |
API client with interceptors |
recharts |
^3.10.1 |
Dashboard charts |
firebase |
^13.2.0 |
Google and GitHub sign-in |
xlsx |
0.20.3 (SheetJS CDN) |
Bulk product upload |
react-hook-form + zod |
^7.91.0 / ^4.6.7 |
Forms |
vitest |
^5.1.0 |
Tests |
📄apps/admin/package.json
| Package |
Version |
Used for |
express |
^5.3.0 |
HTTP server |
mongoose |
^9.12.0 |
MongoDB models |
zod |
^4.6.7 |
Env and request validation |
jsonwebtoken / jose |
^9.0.3 / ^6.2.15 |
Issuing JWTs / verifying Google and Firebase ID tokens |
bcryptjs |
^3.0.3 |
Password hashing |
helmet |
^8.3.0 |
Security headers (with rate limiting and mongo-sanitize) |
stripe |
^23.1.0 |
Payment intents and webhooks |
cloudinary / @aws-sdk/client-s3 |
^2.11.0 / ^3.1162.0 |
Image storage |
multer / sharp |
^2.5.0 / ^0.35.5 |
Uploads and image search |
nodemailer |
^10.3.1 |
Order, invoice and password-reset email |
swagger-ui-express |
^5.0.1 |
API explorer at /api/docs (not in production) |
tsx / vitest |
^4.23.15 / ^5.1.0 |
Running TypeScript / tests |
📄apps/api/package.json
| Package |
Version |
Used for |
react-native |
0.88.1 |
iOS and Android |
react |
19.3.0 |
UI (pinned to the version React Native 0.88 is built against) |
@react-navigation/* |
^7.x |
Stack + bottom tabs |
zustand + AsyncStorage |
^5.0.16 / ^3.1.1 |
Persisted user, cart, order and wishlist stores |
@stripe/stripe-react-native |
^0.85.0 |
PaymentSheet |
@react-native-google-signin/google-signin |
^17.0.0 |
Google sign-in |
react-native-webview |
^14.0.1 |
SSLCommerz payment page |
@callstack/liquid-glass |
^0.8.2 |
iOS 26 Liquid Glass bottom navigation |
typescript / jest |
^6.0.3 / ^29.7.0 |
Types / tests |
📄apps/mobile/package.json
| Service |
What BabyMart uses it for |
Needed to start? |
| MongoDB (local or Atlas) |
Every piece of data |
Yes |
| Stripe |
Card payments, webhook confirmation |
Only for card checkout |
| SSLCommerz |
Payments in BDT (sandbox or live) |
No |
| Firebase Auth |
Google and GitHub sign-in on web and admin |
Admin needs the config to load |
| Cloudinary or AWS S3 |
Product, banner and avatar images |
Only for uploads |
| SMTP (Gmail by default) |
Order confirmation, invoices, password reset |
No |
The exact variable names for each service are on
Environment variables.