Empowering artisans with professional e-commerce solutions
Build and launch your online store without technical complexity
ArtisanBase is a full-stack multi-tenant SaaS platform that enables independent artisans and craftspeople to launch professional online storefronts. Built with enterprise-grade architecture, it provides secure, isolated environments for each creator while maintaining simplicity and ease of use.
|
For Artisans |
For Developers |
| ποΈ Customer Storefront | βοΈ Admin Dashboard |
|---|---|
| Browse products, shopping cart, mobile responsive | Analytics, inventory management, customization |
| artisan-base-storefront.vercel.app | artisan-base-dashboard.vercel.app |
π Documentation β’ π Report Issues β’ π¬ Discussions
|
|
Next.js 14+ App Router, SSR, modern React patterns
TypeScript Type safety across the stack
Tailwind CSS Utility-first styling
shadcn/ui Beautiful, accessible components
React Hook Form Performant form validation
TanStack Query Server state management
Zod Runtime type validation
NestJS Scalable Node.js framework
Prisma ORM Type-safe database access
Passport.js Authentication middleware
PostgreSQL Robust relational database
pnpm Workspaces Monorepo package management
Turborepo Build optimization and caching
Supabase Managed PostgreSQL hosting
Vercel Edge deployment platform
Revolutionary data isolation where each store gets its own PostgreSQL schema (tenant_[storeId]):
tenant_001.products
tenant_001.orders
tenant_002.products
tenant_002.orders
Benefits:
- β Maximum security through complete data isolation
- β Independent scaling per tenant
- β Simplified compliance with data regulations
Request-scoped database connections with automatic tenant detection:
const tenantPrisma = await this.tenantPrismaService.getTenantClient(storeId);
const products = await tenantPrisma.product.findMany();- Next.js proxies API requests (no CORS issues)
- Hot reloading across the entire stack
- Shared types and schemas between frontend and backend
- Node.js 18+
- pnpm package manager
- PostgreSQL database (Supabase recommended)
# Clone repository
git clone https://github.com/Arnoldsteve/artisan-base.git
cd artisan-base
# Install dependencies
pnpm install
# Setup environment
cd packages/api
cp .env.example .env
# Edit .env with your configuration
# Setup database
pnpm exec prisma migrate dev
pnpm exec prisma generate
# Start development servers
cd ../..
pnpm devπ You're ready!
- Storefront:
http://localhost:3000 - Dashboard:
http://localhost:3001 - API:
http://localhost:4000
artisan-base/
β
βββ packages/
β β
β βββ api/ # NestJS Backend Server
β β βββ src/
β β β βββ auth/ # Authentication & authorization
β β β βββ store/ # Store management
β β β βββ product/ # Product CRUD operations
β β β βββ tenant/ # Multi-tenancy logic
β β βββ prisma/ # Database schemas & migrations
β β
β βββ dashboard/ # Admin Dashboard (Next.js)
β β βββ app/ # App Router pages
β β βββ components/ # Admin UI components
β β βββ lib/ # Utilities & configurations
β β
β βββ storefront/ # Customer Storefront (Next.js)
β β βββ app/ # App Router pages
β β βββ components/ # Storefront UI components
β β βββ lib/ # Utilities & configurations
β β
β βββ common/ # Shared Resources
β βββ types/ # TypeScript type definitions
β βββ schemas/ # Zod validation schemas
β βββ utils/ # Helper functions
β
βββ turbo.json # Turborepo configuration
βββ package.json # Workspace configuration
|
|
We welcome contributions from the community!
Getting Started:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
This project is licensed under the MIT License β see LICENSE for details.
Free for personal and commercial use.
Built with β€οΈ for the artisan community.
Special thanks to all the open-source projects and contributors who make this possible.