A comprehensive multi-tenant SaaS platform for pet services businesses (grooming, walking, daycare, boarding).
- Framework: Next.js 16 (App Router)
- Authentication: NextAuth.js v5
- Database: PostgreSQL with Drizzle ORM
- UI Components: Shadcn/ui
- Styling: TailwindCSS
- Email: Resend
- Code Quality: Biome (linting & formatting)
- Additional Services: Twilio (SMS), Meta WhatsApp Cloud API (optional)
This project follows a well-organized structure with centralized configuration. See PROJECT_STRUCTURE.md for detailed documentation.
- ✅ Multi-tenant Architecture: Isolated data per business
- ✅ Role-Based Access Control: Admin, Staff, and Customer roles
- ✅ Comprehensive Configuration: Centralized config files in
/src/config - ✅ Type Safety: Full TypeScript support with strict mode
- ✅ Modern Stack: Next.js 16, Server Actions, App Router
- ✅ Beautiful UI: Shadcn/ui components with TailwindCSS
- Node.js 18+
- PostgreSQL database
- npm or yarn
- Clone the repository:
git clone <repository-url>
cd pet-services- Install dependencies:
npm install- Set up environment variables:
cp .env.example .env.localEdit .env.local with your configuration:
- Database connection string
- NextAuth secret (generate a secure random string)
- Resend API key
- Other service API keys (optional)
- Set up the database:
npm run db:generate # Generate migrations
npm run db:migrate # Run migrations- Run the development server:
npm run devOpen http://localhost:3000 in your browser.
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run Biome linternpm run lint:fix- Fix linting issuesnpm run format- Format code with Biomenpm run type-check- Run TypeScript type checkingnpm run db:generate- Generate Drizzle migrationsnpm run db:migrate- Run database migrationsnpm run db:studio- Open Drizzle Studionpm run db:push- Push schema changes to database
All configuration is centralized in /src/config:
env.ts: Environment variable validationroutes.ts: Route definitions and navigationconstants.ts: Roles, permissions, statuses, enumsdatabase.ts: Database connection setupapp.ts: App settings and feature flagsapi.ts: API configuration
See src/config/README.md for detailed documentation.
The platform supports multiple pet service businesses, each with:
- Isolated data (customers, pets, appointments)
- Custom branding and settings
- Subscription-based access
- Role-based permissions
- NextAuth.js v5 for authentication
- Role-based access control (RBAC)
- Tenant isolation middleware
- Protected routes and API endpoints
- PostgreSQL with Drizzle ORM
- Row-level security for multi-tenancy
- Migrations managed with Drizzle Kit
- Type-safe queries
- Project Plan - Detailed implementation plan
- Project Structure - Directory structure and organization
- Configuration Guide - Config files documentation
This project is in active development. See plan.md for the implementation roadmap.
[Add your license here]
[Add contribution guidelines here]