Self-hosted meeting scheduler, appointment booking system, and calendar management platform. A free, open-source Calendly alternative with enterprise-grade features.
Keywords: scheduling software appointment booking calendly alternative meeting scheduler self-hosted open source calendar booking time management online scheduling booking system calendar integration video conferencing timezone scheduling
Looking for a Calendly alternative? MeetLink is the open-source solution you've been searching for!
| Feature | MeetLink | Calendly | Cal.com |
|---|---|---|---|
| Self-hosted | ✅ Full control | ❌ Cloud only | ✅ Self-host |
| Free forever | ✅ 100% free | 💰 $8-16/mo | ✅ Free tier |
| Unlimited bookings | ✅ No limits | 💰 Paid only | ✅ No limits |
| Data ownership | ✅ Your server | ❌ Their servers | ✅ Your server |
| Custom themes | ✅ 6 themes | 💰 Paid only | ✅ Customizable |
| API access | ✅ Full API | 💰 Paid only | ✅ Full API |
| Calendar sync | ✅ Google, Outlook | ✅ Yes | ✅ Yes |
| Video conferencing | ✅ Zoom, Teams | ✅ Yes | ✅ Yes |
| Team scheduling | ✅ Coming soon | ✅ Yes | ✅ Yes |
| Enterprise security | ✅ RLS, Audit logs | 💰 Enterprise | ✅ Yes |
- Overview
- Features
- Quick Start (1-Click Deploy)
- Installation Methods
- Database Configuration
- PowerShell Deployment
- Configuration
- Versioning & Updates
- API Documentation
- Troubleshooting
- Frequently Asked Questions (FAQ)
- Contributing
- License
MeetLink is a fully-featured, self-hosted scheduling application that replicates and extends Calendly's core functionality. Built with modern technologies and designed for enterprises requiring complete data sovereignty.
| Component | Technology |
|---|---|
| Frontend | Next.js 16, React 19, TypeScript |
| Styling | Tailwind CSS 4, shadcn/ui |
| Backend | Next.js API Routes |
| Database | PostgreSQL 15+ (Prisma ORM) |
| Cache | Redis 7+ |
| Deployment | Docker, Docker Compose |
| Web Server | Nginx (SSL, Rate Limiting) |
- Event Types: Create unlimited event types with custom durations, buffers, and availability
- Booking Calendar: Month, week, and day views with real-time availability
- Timezone Support: Automatic timezone detection and conversion
- Recurring Events: Daily, weekly, and custom recurrence patterns
- Contact Database: Full CRM-style contact management
- Contact Groups: Organize contacts into groups for targeted scheduling
- CardDAV Integration: Sync contacts from external sources
- Tags & Notes: Rich contact metadata
- Multiple Schedules: Create separate availability for different event types
- Schedule Overrides: Temporary availability changes
- Buffer Times: Configure buffers before/after meetings
- Meeting Limits: Daily and weekly meeting caps
- Calendar Sync: Google Calendar, Outlook, CalDAV support
- Video Conferencing: Zoom, Google Meet, Microsoft Teams
- Webhooks: Real-time event notifications
- Workflows: Automated email sequences and reminders
- Row-Level Security (RLS): Multi-tenant data isolation
- Audit Logging: Splunk-compatible audit trails
- SSO Ready: SAML 2.0, OAuth 2.0 support
- API Keys: Secure API access management
- 6 Built-in Themes: Light, Dark, Classy, Sunset, Mocha, Forest
- Custom Themes: Create your own color schemes
- Real-time Preview: See changes instantly
Main dashboard with statistics and quick actions
Manage your meeting types with custom durations and settings
Booking calendar with multiple view options
Contact management with groups and search
Configure your availability schedules
Switch between 6 beautiful themes
Dark mode for reduced eye strain
Warm and vibrant orange-pink theme
Fully responsive design for all devices
- Docker Desktop installed and running
- PowerShell 5.1+ (Windows) or Bash (Linux/macOS)
- 4GB RAM minimum, 8GB recommended
- 10GB disk space minimum
# Download and run the 1-click installer
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/141stfighterwing-collab/meetlink/main/download/deploy-meetlink.ps1" -OutFile "deploy-meetlink.ps1"
.\deploy-meetlink.ps1# Download and run the 1-click installer
curl -fsSL https://raw.githubusercontent.com/141stfighterwing-collab/meetlink/main/download/deploy-meetlink.sh | bashThe 1-click installer will:
- ✅ Check system prerequisites
- ✅ Clone the repository
- ✅ Set up PostgreSQL database
- ✅ Configure environment variables
- ✅ Build and start Docker containers
- ✅ Run database migrations
- ✅ Seed initial data
- ✅ Display access URLs
Docker is the recommended deployment method for production environments.
git clone https://github.com/141stfighterwing-collab/meetlink.git
cd meetlink# Copy example environment file
cp .env.example .env
# Edit environment variables
nano .env# Start all services
docker-compose up -d
# Check status
docker-compose ps
# View logs
docker-compose logs -f- Application: http://localhost:3132
- PostgreSQL: localhost:5432
- Redis: localhost:6379
For development or custom deployments without Docker.
- Node.js 20+
- PostgreSQL 15+
- Redis 7+ (optional, for caching)
# Clone repository
git clone https://github.com/141stfighterwing-collab/meetlink.git
cd meetlink
# Install dependencies
npm install
# Configure environment
cp .env.example .env
# Edit .env with your database credentials
# Generate Prisma client
npx prisma generate
# Run database migrations
npx prisma migrate deploy
# Seed initial data (optional)
npm run seed
# Start development server
npm run dev
# Or build for production
npm run build
npm startMeetLink can be deployed to various cloud platforms:
# Using AWS ECS with Fargate
# See: docs/deployment/aws.md# Using Cloud Run with Cloud SQL
# See: docs/deployment/gcp.md# Using Azure Container Apps with Azure Database for PostgreSQL
# See: docs/deployment/azure.md# Note: Requires external PostgreSQL and Redis
vercel deployFor on-premises deployments, we recommend PostgreSQL 15 or higher.
| Environment | CPU | RAM | Storage | Connections |
|---|---|---|---|---|
| Development | 2 cores | 2GB | 10GB | 20 |
| Staging | 4 cores | 4GB | 50GB | 50 |
| Production | 8 cores | 16GB | 100GB+ | 100+ |
# postgresql.conf optimizations for production
max_connections = 200
shared_buffers = 4GB
effective_cache_size = 12GB
maintenance_work_mem = 1GB
checkpoint_completion_target = 0.9
wal_buffers = 16MB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 20MB
min_wal_size = 1GB
max_wal_size = 4GBSupabase provides managed PostgreSQL with built-in authentication and real-time features.
DATABASE_URL="postgresql://postgres:[PASSWORD]@db.[PROJECT-REF].supabase.co:5432/postgres"Pros:
- Free tier available (500MB)
- Automatic backups
- Built-in authentication
- Real-time subscriptions
- Dashboard and SQL editor
Cons:
- Connection pooling required for serverless
- Limited customization
Neon is a serverless PostgreSQL platform with automatic scaling.
DATABASE_URL="postgresql://[USER]:[PASSWORD]@[ENDPOINT].neon.tech/neondb?sslmode=require"Pros:
- Serverless scaling
- Branching for development
- Generous free tier
- Auto-suspend when inactive
Cons:
- Cold start latency
- Limited regions
Enterprise-grade managed PostgreSQL on AWS.
DATABASE_URL="postgresql://meetlink:[PASSWORD]@[RDS-ENDPOINT]:5432/meetlink"Pros:
- Enterprise SLA
- Multi-AZ availability
- Point-in-time recovery
- Integration with AWS services
Cons:
- Higher cost
- AWS knowledge required
Fully managed PostgreSQL on Microsoft Azure.
DATABASE_URL="postgresql://meetlink@[SERVER]@[SERVER].postgres.database.azure.com:5432/meetlink?sslmode=require"Managed PostgreSQL on Google Cloud Platform.
DATABASE_URL="postgresql://meetlink:[PASSWORD]@/meetlink?host=/cloudsql/[PROJECT]:[REGION]:[INSTANCE]"| Use Case | Recommended | Reason |
|---|---|---|
| Development | Local PostgreSQL or Supabase Free | Zero cost, easy setup |
| Small Team (< 10 users) | Supabase Pro or Neon | Managed, cost-effective |
| Medium Team (10-50 users) | AWS RDS or Azure PostgreSQL | Reliability, support |
| Enterprise (50+ users) | AWS RDS Multi-AZ or Self-hosted | Control, compliance |
| Self-Hosted Production | PostgreSQL 15+ on dedicated server | Full control, data sovereignty |
The PowerShell deployment script provides automated, logged deployment with progress tracking.
# Download the latest script
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/141stfighterwing-collab/meetlink/main/download/setup-meetlink.ps1" -OutFile "setup-meetlink.ps1"# Run with default settings (interactive prompts)
.\setup-meetlink.ps1
# Run with specific parameters
.\setup-meetlink.ps1 -InstallPath "C:\MeetLink" -DatabaseHost "localhost" -DatabasePort 5432
# Run silently with all parameters specified
.\setup-meetlink.ps1 `
-InstallPath "C:\MeetLink" `
-DatabaseHost "localhost" `
-DatabasePort 5432 `
-DatabaseName "meetlink" `
-DatabaseUser "meetlink_admin" `
-DatabasePassword "YourSecurePassword123!" `
-AdminEmail "admin@company.com" `
-AdminPassword "AdminSecurePass456!" `
-Silent| Parameter | Description | Default |
|---|---|---|
-InstallPath |
Installation directory | C:\MeetLink |
-DatabaseHost |
PostgreSQL host | localhost |
-DatabasePort |
PostgreSQL port | 5432 |
-DatabaseName |
Database name | meetlink |
-DatabaseUser |
Database username | Prompt |
-DatabasePassword |
Database password | Prompt |
-AdminEmail |
Admin user email | Prompt |
-AdminPassword |
Admin user password | Prompt |
-Silent |
Run without prompts | false |
-SkipDocker |
Skip Docker installation | false |
-LogLevel |
Log verbosity (Quiet/Normal/Detailed) | Normal |
All deployment activities are logged with timestamps and progress percentages:
[2025-01-15 10:30:45] [INFO] ========== MeetLink Deployment Started ==========
[2025-01-15 10:30:45] [INFO] PowerShell Version: 5.1.19041.4648
[2025-01-15 10:30:45] [INFO] OS: Microsoft Windows 10 Pro
[2025-01-15 10:30:45] [INFO] ========================================
[2025-01-15 10:30:46] [PROGRESS] 5% - Checking prerequisites...
[2025-01-15 10:30:47] [INFO] Docker Desktop is installed and running
[2025-01-15 10:30:48] [SUCCESS] All prerequisites met
[2025-01-15 10:30:48] [PROGRESS] 10% - Creating installation directory...
...
[2025-01-15 10:35:22] [PROGRESS] 95% - Verifying deployment...
[2025-01-15 10:35:25] [SUCCESS] MeetLink is running at http://localhost:3132
[2025-01-15 10:35:25] [PROGRESS] 100% - Deployment complete!
Log files are saved to:
- Windows:
C:\MeetLink\logs\deploy-YYYYMMDD-HHMMSS.log - Linux/macOS:
/var/log/meetlink/deploy-YYYYMMDD-HHMMSS.log
The script includes comprehensive error handling:
# Example error log entry
[2025-01-15 10:30:50] [ERROR] Failed to connect to PostgreSQL
[2025-01-15 10:30:50] [ERROR] Details: Connection refused - Is PostgreSQL running?
[2025-01-15 10:30:50] [INFO] Attempting recovery: Starting PostgreSQL container...
[2025-01-15 10:30:55] [SUCCESS] PostgreSQL started successfully
[2025-01-15 10:30:55] [INFO] Retrying database connection...Create a .env file in the root directory:
# Application
NODE_ENV=production
NEXT_PUBLIC_APP_URL=https://meetlink.yourcompany.com
NEXT_PUBLIC_APP_NAME=MeetLink
# Database
DATABASE_URL=postgresql://meetlink:password@localhost:5432/meetlink?schema=public
# Redis (optional, for caching)
REDIS_URL=redis://localhost:6379
# Authentication
NEXTAUTH_SECRET=your-super-secret-key-change-in-production
NEXTAUTH_URL=https://meetlink.yourcompany.com
# Email (SMTP)
SMTP_HOST=smtp.sendgrid.net
SMTP_PORT=587
SMTP_USER=apikey
SMTP_PASS=your-sendgrid-api-key
EMAIL_FROM=noreply@yourcompany.com
# Calendar Integrations
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
MICROSOFT_CLIENT_ID=your-microsoft-client-id
MICROSOFT_CLIENT_SECRET=your-microsoft-client-secret
ZOOM_CLIENT_ID=your-zoom-client-id
ZOOM_CLIENT_SECRET=your-zoom-client-secret
# Security
CORS_ORIGINS=https://meetlink.yourcompany.com
RATE_LIMIT_MAX=100
RATE_LIMIT_WINDOW_MS=60000
# Logging
LOG_LEVEL=info
AUDIT_LOG_ENABLED=trueThe docker-compose.yml file includes:
services:
app:
build: .
ports:
- "3132:3132"
environment:
- DATABASE_URL=postgresql://meetlink:${DB_PASSWORD}@postgres:5432/meetlink
depends_on:
- postgres
- redis
postgres:
image: postgres:15-alpine
environment:
POSTGRES_DB: meetlink
POSTGRES_USER: meetlink
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/nginx/ssl
volumes:
postgres_data:
redis_data:MeetLink follows Semantic Versioning:
MAJOR.MINOR.PATCH
Examples:
1.0.0 - Initial release
1.1.0 - New features (backward compatible)
1.1.1 - Bug fixes
2.0.0 - Breaking changes
| Version | Release Date | Status |
|---|---|---|
| 1.1.0 | 2025-01-15 | Current (Stable) |
| 1.0.0 | 2025-01-15 | Initial Release |
# Check installed version
npm run version
# Or check package.json
cat package.json | grep '"version"'# Pull latest patch version
git pull origin main
docker-compose build --no-cache
docker-compose up -d
# Run any pending migrations
npx prisma migrate deploy# Pull latest minor version
git fetch --tags
git checkout $(git describe --tags `git rev-list --tags --max-count=1`)
# Rebuild and restart
docker-compose down
docker-compose build --no-cache
docker-compose up -d
# Run migrations
npx prisma migrate deploy# 1. Backup database
pg_dump -U meetlink -d meetlink > backup-$(date +%Y%m%d).sql
# 2. Backup environment
cp .env .env.backup
# 3. Pull new version
git fetch --tags
git checkout v2.0.0
# 4. Review migration notes
cat docs/migrations/v2.0.0.md
# 5. Update configuration
# ... follow migration guide ...
# 6. Rebuild and deploy
docker-compose down
docker-compose build --no-cache
docker-compose up -d
# 7. Run migrations
npx prisma migrate deploy
# 8. Verify deployment
npm run health-checkSubscribe to release notifications:
- GitHub Watch: Watch the repository for releases
- RSS Feed:
https://github.com/141stfighterwing-collab/meetlink/releases.atom - Webhook: Configure webhook for automated update checks
All changes are documented in CHANGELOG.md.
| Endpoint | Method | Description |
|---|---|---|
/api/event-types |
GET, POST | Manage event types |
/api/bookings |
GET, POST | Manage bookings |
/api/contacts |
GET, POST, PUT, DELETE | Contact management |
/api/availabilities |
GET, POST | Availability settings |
/api/calendars |
GET, POST | Calendar integrations |
/api/workflows |
GET, POST | Workflow automation |
/api/dashboard |
GET | Dashboard statistics |
API requests require authentication via Bearer token:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://meetlink.yourcompany.com/api/bookings| Plan | Requests/minute | Requests/day |
|---|---|---|
| Free | 60 | 1,000 |
| Pro | 300 | 10,000 |
| Enterprise | Unlimited | Unlimited |
Error: Connection refused to database
Solution:
- Verify PostgreSQL is running:
docker-compose ps postgres - Check connection string in
.env - Verify network connectivity:
docker-compose exec app ping postgres
Error: Container exits immediately
Solution:
- Check logs:
docker-compose logs app - Verify environment variables
- Check port conflicts:
netstat -tlnp | grep 3000
Error: Migration failed
Solution:
- Check database permissions
- Run:
npx prisma migrate reset(⚠️ deletes data) - Restore from backup if needed
# Application health
curl http://localhost:3132/api/health
# Database health
docker-compose exec postgres pg_isready
# Redis health
docker-compose exec redis redis-cli ping| Component | Log Location |
|---|---|
| Application | /var/log/meetlink/app.log |
| PostgreSQL | /var/log/meetlink/postgres.log |
| Nginx | /var/log/meetlink/nginx/ |
| Deployment | C:\MeetLink\logs\ (Windows) |
- Documentation: Check this README and
/docsfolder - Issues: GitHub Issues
- Discussions: GitHub Discussions
MeetLink is a self-hosted scheduling platform similar to Calendly. It allows users to create booking pages, manage appointments, and integrate with various calendar services. Unlike Calendly, MeetLink gives you complete control over your data as it runs on your own infrastructure.
Yes! MeetLink is open-source and free to use under the MIT license. You only pay for your own hosting infrastructure (server, database, etc.).
| Feature | MeetLink | Calendly |
|---|---|---|
| Self-hosted | ✅ Yes | ❌ No |
| Data ownership | ✅ Full control | ❌ Stored on Calendly servers |
| Custom branding | ✅ Full customization | 💰 Paid plans only |
| API access | ✅ Free | 💰 Paid plans only |
| Unlimited events | ✅ Yes | 💰 Paid plans only |
| Cost | Free (hosting only) | $8-$16/user/month |
- CPU: 2 cores minimum, 4+ recommended
- RAM: 4GB minimum, 8GB+ recommended
- Storage: 10GB minimum, 50GB+ for production
- Software: Docker & Docker Compose, or Node.js 20+
Yes, you can run MeetLink manually with:
- Node.js 20+
- PostgreSQL 15+
- Redis 7+ (optional)
See Manual Installation for details.
No, the PowerShell script requires PowerShell 5.1+ which comes with Windows 10/11 and Windows Server 2016+. For older systems, use the manual installation method.
Administrator privileges are needed to:
- Create installation directories in protected paths
- Configure Windows Firewall rules
- Install Docker if not present
You can run without admin rights by specifying a user-writable -InstallPath.
Modify your .env file:
APP_PORT=8080Or in docker-compose.yml:
services:
app:
ports:
- "8080:3132" # Maps host port 8080 to container port 3132MeetLink is designed for PostgreSQL 15+. Other databases (MySQL, SQLite) are not officially supported.
| Scenario | Recommendation |
|---|---|
| Development/Testing | Local PostgreSQL in Docker |
| Small Team (< 10 users) | Supabase or Neon (free tiers) |
| Medium Team (10-50) | AWS RDS or Azure PostgreSQL |
| Enterprise (50+ users) | Self-hosted PostgreSQL or AWS RDS Multi-AZ |
| Compliance requirements | Self-hosted PostgreSQL |
-
Export data:
pg_dump -U meetlink -d meetlink > backup.sql -
Update DATABASE_URL in
.env -
Run migrations:
npx prisma migrate deploy
-
Import data:
psql -U meetlink -d meetlink < backup.sql
Manual backup:
# PostgreSQL
pg_dump -U meetlink -d meetlink > backup-$(date +%Y%m%d).sql
# Docker volume backup
docker run --rm -v meetlink_postgres_data:/data -v $(pwd):/backup alpine tar czf /backup/postgres-backup.tar.gz /dataAutomated backup script:
#!/bin/bash
# Add to cron: 0 2 * * * /path/to/backup.sh
BACKUP_DIR="/backups/meetlink"
mkdir -p $BACKUP_DIR
pg_dump -U meetlink -d meetlink | gzip > $BACKUP_DIR/meetlink-$(date +%Y%m%d-%H%M%S).sql.gz
# Keep only last 30 days
find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete-
Check logs:
docker-compose logs -f
-
Verify environment:
cat .env # Ensure all required variables are set -
Check port conflicts:
# Windows netstat -ano | findstr :3132 # Linux/macOS lsof -i :3132
-
Reset containers:
docker-compose down -v # Removes volumes too docker-compose up -d --build
cd meetlink
git pull origin main
docker-compose down
docker-compose up -d --build
npx prisma migrate deploySee Versioning & Updates for detailed instructions.
Yes! MeetLink works well behind Nginx, Traefik, or Caddy:
Nginx example:
server {
listen 80;
server_name meetlink.yourdomain.com;
location / {
proxy_pass http://localhost:3132;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}Using Let's Encrypt with Certbot:
# Install certbot
sudo apt install certbot python3-certbot-nginx
# Get certificate
sudo certbot --nginx -d meetlink.yourdomain.com
# Auto-renewal
sudo systemctl enable certbot.timerUsing Docker with Caddy:
# docker-compose.yml addition
caddy:
image: caddy:2
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data# Linux/macOS
sudo chown -R $USER:$USER /opt/meetlink
chmod -R 755 /opt/meetlink
# Windows (run as Administrator)
icacls "C:\MeetLink" /grant Users:F /T# Reset database (WARNING: deletes all data)
npx prisma migrate reset
# Or manually fix:
npx prisma migrate resolve --applied <migration_name>
npx prisma migrate deploy- Check browser console for JavaScript errors
- Verify
NEXT_PUBLIC_APP_URLmatches your actual URL - Clear browser cache and rebuild:
rm -rf .next npm run build
# Temporarily allow script execution
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# Or run with bypass
powershell -ExecutionPolicy Bypass -File .\deploy-meetlink.ps1# Find what's using port 3132
# Windows
netstat -ano | findstr :3132
# Linux/macOS
lsof -i :3132
# Kill the process or change MeetLink's port in .env
APP_PORT=3001Yes! MeetLink supports:
- Custom themes (6 built-in themes)
- Custom colors via CSS variables
- Custom branding (logo, company name)
- Custom email templates
Yes, MeetLink supports:
- Multiple users with individual calendars
- Team event types (round-robin coming soon)
- Shared availability
- Team member management
- Create a Google Cloud project
- Enable Google Calendar API
- Configure OAuth credentials
- Add to
.env:GOOGLE_CLIENT_ID=your_client_id GOOGLE_CLIENT_SECRET=your_client_secret
- Restart MeetLink
MeetLink is a Progressive Web App (PWA) that works on mobile browsers. You can add it to your home screen for an app-like experience. Native mobile apps are on the roadmap.
MeetLink includes several security features:
- Row-Level Security (RLS) for multi-tenant isolation
- Audit logging (Splunk-compatible)
- Encrypted sessions and tokens
- HTTPS enforcement
- Rate limiting
- Input validation and sanitization
- Go to Settings → Security
- Click "Enable 2FA"
- Scan QR code with your authenticator app
- Enter verification code
Passwords are hashed using bcrypt and stored in the PostgreSQL database. They are never stored in plain text or logs.
- Go to Settings → Security → API Keys
- Click "Generate New API Key"
- Update your integrations with the new key
- Revoke the old key after verification
- Documentation: This README and
/docsfolder - FAQ: This section
- GitHub Issues: Report bugs
- Discussions: Ask questions
- Check existing issues first
- Create a new issue with:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Environment details (OS, Node.js version, etc.)
- Logs (redact sensitive info)
Yes! Open a GitHub issue with the "enhancement" label and describe:
- The feature you want
- Why it would be useful
- Any implementation ideas
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
# Fork and clone
git clone https://github.com/YOUR-USERNAME/meetlink.git
cd meetlink
# Install dependencies
npm install
# Create feature branch
git checkout -b feature/my-feature
# Run development server
npm run dev
# Run tests
npm test
# Submit pull requestMIT License - See LICENSE for details.
MeetLink - Self-hosted scheduling, your data, your control.