# InkLoop CRM

A multi-tenant SaaS CRM platform built for tattoo studios. Manage appointments, clients, invoicing, payroll, marketing, and more — all from one place.

## Tech Stack

- **Backend:** Laravel 12 / PHP 8.2+
- **Frontend:** Tailwind CSS 4, Alpine.js, Vite
- **Admin:** Filament 3
- **Multi-tenancy:** Spatie Laravel Multitenancy (per-tenant databases)
- **Real-time:** Laravel Reverb (WebSockets)
- **Payments:** Stripe
- **Comms:** Twilio (SMS/WhatsApp), Mailchimp
- **Accounting:** QuickBooks, Xero
- **PDF:** DomPDF | **Images:** Intervention Image

## Features

- **Appointment Management** — scheduling, calendar view, WhatsApp/SMS reminders, sketch tool
- **3D Body Mapping** — interactive Three.js body model with zone tracking and heatmap analytics
- **Client Management** — profiles, history, recommendations, lifetime value tracking
- **Invoicing & Deposits** — create/send invoices, track payments, deposit management
- **Digital Consent Forms** — e-signatures with PDF download
- **Tattoo Projects** — multi-session project planning with reference images
- **Payroll** — artist payout tracking and approval
- **Marketing Automation** — campaigns, segments, triggers, email templates
- **Review Management** — collect, display, and respond to client reviews
- **Analytics & Reporting** — revenue, body part heatmaps, client analytics, CSV export
- **Team Management** — role-based access (Owner, Artist) with per-feature permissions
- **Public Booking** — per-studio booking pages with slug-based URLs
- **Subscription Billing** — Stripe Checkout, trial periods, feature flags per tier
- **Demo Instance** — auto-login demo with seeded data
- **White Label Support** — customizable branding per studio

## Multi-Tenancy

Each studio gets its own tenant with isolated database, cache prefix, and tenant-aware queues. Tenants are identified by domain. Subscription tiers control feature access via middleware-based feature flags and usage limits.

## Getting Started

```bash
composer install
npm install && npm run build
cp .env.example .env
php artisan key:generate
php artisan migrate --seed
php artisan serve
```

## Environment

See `.env.example` for all configuration options including Stripe keys, Twilio credentials, and production overrides.

## License

Proprietary. All rights reserved.
