Vivid is a comprehensive appointment booking and business management platform built with Next.js, featuring a modular architecture with advanced scheduling, communication, and customization capabilities.
- Appointment Booking System - Advanced scheduling with smart time slot management
- Customer Management - Complete customer profiles and communication history
- Multi-channel Communication - Email and text message notifications
- Payment Processing - Integrated payment solutions with refund capabilities
- Asset Management - File storage and management system
- Template System - Customizable email and SMS templates
- Visual builder - Visual drag-n-drop for pages (in progress) email templates
- Admin Dashboard - Comprehensive business management interface
- Modular Architecture - Monorepo with shared packages and services
- Real-time Updates - Live appointment notifications and status changes
- Internationalization - Multi-language support with i18n
- Responsive Design - Mobile-first approach with Tailwind CSS
- Type Safety - Full TypeScript implementation
- Advanced Logging - Structured logging with function-level context
Vivid is built as a monorepo using Turbo, with the following structure:
vivid/
βββ apps/
β βββ web/ # Main Next.js application
βββ packages/
β βββ app-store/ # Connected apps and integrations
β βββ builder/ # Page builder functionality
β βββ email-builder/ # Email template builder
β βββ logger/ # Structured logging system
β βββ rte/ # Rich text editor
β βββ services/ # Core business services
β βββ types/ # Shared TypeScript types
β βββ ui/ # Reusable UI components
β βββ utils/ # Utility functions
βββ migrations/ # Database migrations
- @vivid/web - Main Next.js application with admin dashboard and customer-facing pages
- @vivid/services - Core business logic and data access layer
- @vivid/ui - Reusable UI components built with Radix UI and Tailwind
- @vivid/app-store - Plugin system for third-party integrations
- @vivid/logger - Structured logging with module and function context
- @vivid/builder - Visual builder
- @vivid/email-builder - Drag-and-drop email template builder
- Next.js 15 - React framework with App Router
- React 19 - UI library
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- Radix UI - Accessible component primitives
- Lucide React - Icon library
- Node.js - Runtime environment
- MongoDB - NoSQL database
- NextAuth.js - Authentication system
- Luxon - Date/time manipulation
- Pino - High-performance logging
- Turbo - Monorepo build system
- ESLint - Code linting
- Prettier - Code formatting
- Docker - Containerization
- Node.js >= 21
- Yarn >= 1.22.22
- MongoDB (local or cloud instance)
- Docker (optional, for containerized deployment)
git clone <repository-url>
cd vivid
yarn install
Create a .env.local
file in the apps/web
directory:
# Database
MONGODB_URI=mongodb://localhost:27017/vivid
# Authentication
AUTH_SECRET=your-auth-secret-here
AUTH_PASSWORD=your-admin-password
AUTH_TRUST_HOST=http://localhost:3000
AUTH_URL=http://localhost:3000
# Scheduler
SCHEDULER_KEY=your-scheduler-key
# Timezone
TZ=America/New_York
Run database migrations:
yarn migration:up
yarn dev
The application will be available at http://localhost:3000
After starting the application, you'll need to complete the initial setup through the install page:
Navigate to http://localhost:3000/install
in your browser.
Fill out the installation form with your business information:
- Website Name - Your business name (minimum 3 characters)
- Website Title - The title that appears in browser tabs
- Email - Your business email address
- Website URL - Your website's URL address
The installer will automatically:
- β Set up your general business configuration
- β Create a default home page
- β Configure booking settings with default business hours (9 AM - 5 PM, Monday-Friday)
- β Set up schedule configuration
- β Configure header and footer settings
- β
Install essential connected apps:
- Reminders - Automated appointment reminders
- Follow-ups - Automated appointment follow-ups
- Customer Email Notifications - Email communication system
- Customer Text Message Notifications - SMS communication system
- File System Assets Storage - Local file storage system
- β Set up default app configurations
Once installation is complete, you can:
- Access the admin dashboard at
http://localhost:3000/admin
- Log in with the password you set in the
AUTH_PASSWORD
environment variable - Start customizing your appointment booking system
After installation, consider:
- Customizing Business Hours - Update your schedule in Settings β Schedule
- Setting Up Payment Processing - Configure payment methods in Settings β Appointments
- Customizing Templates - Create branded email and SMS templates
- Adding Connected Apps - Install additional integrations from the App Store
- Customizing Styling - Brand your booking pages with custom colors and styling
- Build the Docker image:
docker build -t vivid .
- Start the services:
docker-compose up -d
Update the docker-compose.yaml
file with your environment variables:
environment:
- MONGODB_URI=mongodb://your-mongodb-host:27017/vivid
- AUTH_SECRET=your-auth-secret
- AUTH_PASSWORD=your-admin-password
- SCHEDULER_KEY=your-scheduler-key
- web - Main Next.js application
src/app/
- Next.js App Router pagessrc/components/
- Application-specific componentssrc/middleware/
- Next.js middlewaresrc/utils/
- Application utilities
- services - Core business logic
- Database services
- Configuration management
- Communication services
- ui - Reusable UI components
- Form components
- Data tables
- Modals and dialogs
- app-store - Plugin system
- Connected apps
- Integration services
- logger - Structured logging
- Module and function context
- Error tracking
# Development
yarn dev # Start development server
yarn build # Build all packages
yarn start # Start production server
# Code Quality
yarn lint # Run ESLint
yarn format # Format code with Prettier
# Database
yarn migration # Run migrations
yarn migration:up # Apply migrations
yarn migration:down # Rollback migrations
- Create new pages in
apps/web/src/app/
- Add components in
apps/web/src/components/
- Create services in
packages/services/src/
- Add types in
packages/types/src/
- Update UI components in
packages/ui/src/components/
Vivid uses a structured logging system with function-level context:
import { getLoggerFactory } from "@vivid/logger";
// In a service class
protected readonly loggerFactory = getLoggerFactory("ServiceName");
// In a method
const logger = this.loggerFactory("methodName");
logger.info("Operation completed", { data });
logger.error("Operation failed", { error });
Vivid supports various integrations through its app store:
- User Notifications - Email / text message user notifications about appointments
- Customer Notifications - Automated customer communications via email / text message
- Google Calendar - Sync with Google Calendar
- Outlook Calendar - Microsoft Outlook integration
- CalDAV - Standard calendar protocol support
- ICS Export - Calendar events via ICS link
- File System Storage - Local file storage
- S3 Storage - Amazon S3 integration
- PayPal - PayPal payment integration
- Reminders - Automated reminder system
- Follow-ups - Automated follow-up system
- Log Cleanup - Automated communication log clean-up management
- Weekly Schedule - Custom per week schedule
- Busy events - Custom schedule blocking blocks
- Customize colors and themes in
packages/tailwind-config/
- Modify global styles in
apps/web/src/app/globals.css
- Use CSS variables for dynamic theming
- Create custom email templates using the email builder
- Build custom pages with the visual page builder
- Customize appointment booking forms
- Add new connected apps in
packages/app-store/src/apps/
- Implement custom services in
packages/services/src/
- Extend the UI component library in
packages/ui/src/components/
# Run all tests
yarn test
# Run tests in watch mode
yarn test:watch
# Run tests with coverage
yarn test:coverage
- Unit Tests - Test individual functions and components
- Integration Tests - Test service interactions
- E2E Tests - Test complete user workflows
# Build the application
yarn build
# Start production server
yarn start
Set up production environment variables:
NODE_ENV=production
MONGODB_URI=mongodb://your-production-mongodb
AUTH_SECRET=your-production-secret
AUTH_PASSWORD=your-production-password
SCHEDULER_KEY=your-production-scheduler-key
- Enable Next.js optimizations
- Configure CDN for static assets
- Set up database connection pooling
- Enable caching strategies
- 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
- Follow TypeScript best practices
- Write comprehensive tests
- Use the established logging patterns
- Follow the component design system
- Document new features and APIs
This project is licensed under the MIT License - see the LICENSE file for details.
- Check the documentation
- Search existing issues
- Create a new issue
- Ensure MongoDB is running and accessible
- Check connection string format
- Verify network connectivity
- Verify AUTH_SECRET is set correctly
- Check AUTH_TRUST_HOST configuration
- Ensure proper redirect URLs
- Clear node_modules and reinstall dependencies
- Check TypeScript compilation errors
- Verify package.json dependencies
See CHANGELOG.md for a detailed history of changes and releases.
Built with β€οΈ using Next.js, TypeScript, and modern web technologies.