Overview
Independent stores need their own products, categories and orders on a shared platform — without their data ever leaking into another tenant's workspace.
My role
Full stack development: frontend, API, database model and deployment setup.
Stack
- Next.js
- NestJS
- Prisma
- PostgreSQL
- S3-compatible storage
- RabbitMQ
- Redis
Architecture
Next.js frontend, NestJS API, PostgreSQL with tenant-scoped data through Prisma, S3-compatible storage for product media, RabbitMQ for background jobs and Redis for caching.
Key features
- /001/Tenant-aware login
- /002/Owner vs platform-admin roles
- /003/Product and category management
- /004/Dynamic product attributes
- /005/Status and marketing flags
- /006/Sales chart
- /007/Low-stock alerts
- /008/Light/dark theme
The hard problem
The hard problem
Product attributes differ from store to store, so a fixed schema would break quickly.
Solution
Dynamic product attributes are stored per tenant and validated at the API layer, so each store defines its own fields without database migrations.