A comprehensive guide for setting up and administering the EasyScheduler appointment booking system.
├── frontend/ # Main website (port 5173)
│ ├── src/ # Main site source code
│ │ ├── admin/ # Admin panel (integrated)
│ │ │ ├── components/ # Admin UI components
│ │ │ ├── pages/ # Settings, Documentation
│ │ │ └── utils/ # API helpers
│ │ ├── components/ # Shared components (Navbar, Scheduler)
│ │ ├── pages_en/ # English pages
│ │ ├── pages_pl/ # Polish pages
│ │ ├── context/ # React context (Language)
│ │ └── config/ # API configuration
│ ├── public/ # Static assets
│ ├── index.html # HTML entry point
│ ├── package.json # Frontend dependencies
│ └── vite.config.js # Vite configuration
├── backend/ # API server (port 5000)
│ ├── src/
│ │ ├── database/ # Database queries and init
│ │ ├── routes/ # API endpoints
│ │ ├── middleware/ # Auth, rate limiting
│ │ ├── services/ # Business logic
│ │ ├── types/ # TypeScript types
│ │ └── server.ts # Express server
│ ├── database/
│ │ └── scheduler.db # SQLite database (created on init)
│ ├── package.json # Backend dependencies
│ └── tsconfig.json # TypeScript configuration
├── .env # Environment variables (create from .env.example)
├── .env.example # Example environment configuration
├── package.json # Root scripts
└── README.md # Project overview
- Node.js (v18 or higher)
- npm (comes with Node.js)
- Git - Download here
macOS/Linux:
# Install NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# Restart terminal or run:
source ~/.bashrc # or ~/.zshrc
# Install Node.js
nvm install 20
nvm use 20Windows:
- Download nvm-windows
- Install and run:
nvm install 20
nvm use 20Alternative: Download Node.js directly from nodejs.org
# Clone the repository
git clone https://github.com/gcclinux/EasyScheduler.git
cd EasyScheduler
# Install dependencies
npm run install:all
# Configure environment
cp .env.example .env
# Edit .env with your settings
# Initialize database
npm run db:init
# Start the application
npm run dev- Website: http://localhost:5173
- Admin Panel: http://localhost:5173/#/admin
- Scheduler: http://localhost:5173/#/easyscheduler
- API: http://localhost:5000
git clone https://github.com/gcclinux/EasyScheduler.git
cd EasySchedulerCopy the example environment file:
cp .env.example .envEdit .env and configure the following:
# Server Configuration
PORT=5000
NODE_ENV=development
# API Base URL
VITE_API_BASE_URL=http://localhost:5000
# Database
DB_PATH=./backend/database/scheduler.db
DB_TYPE=sqlite
# Security (CHANGE IN PRODUCTION!)
JWT_SECRET=REPLACE_WITH_STRONG_RANDOM_SECRET_KEY
# Admin Dev Mode (bypass authentication)
VITE_ADMIN_DEV_MODE=false
# Premium Features
PREMIUM_FEATURES_PURCHASE_URL=https://gumroad.com/easyscheduler
PREMIUM_FEATURES_ENCRYPTION=your-encryption-key-here
# MongoDB (only if DB_TYPE=mongodb)
MONGODB_URI=mongodb://your_user:your_password@your_host:27017
MONGO_DB_NAME=easyschedulernpm run install:allThis installs dependencies for root, frontend, and backend.
npm run db:initThis creates the SQLite database with all required tables.
npm run devThis will start:
- Frontend:
http://localhost:5173 - Admin Panel:
http://localhost:5173/#/admin - Scheduler:
http://localhost:5173/#/easyscheduler - Backend API:
http://localhost:5000
Navigate to: http://localhost:5173/#/admin
You'll be prompted to create the first admin account:
- First Name
- Last Name
- Username
- Password
After logging in, configure:
Settings → Home Page Content
- Customize the hero section, service tiles, and "Why Choose Us" section
- Content dynamically appears on your homepage
Settings → Home Page Header
- Set your site title/name (appears in navbar and browser tab)
- Customize the calendar header message
Settings → About Page Content
- Edit the About page content with title and body text
- Supports rich formatting
Settings → Appointment Page Content
- Create appointment types with:
- Name, Duration, Price, Currency
- Language (EN/PL)
- Description and Features
- These automatically appear on the Prices page
Settings → Site Theme
- Choose between Purple Gradient or Dark Green theme
Settings → Working Days & Hours
- Configure business hours and weekend availability
Settings → Customer Booking Limits
- Set daily and weekly appointment limits per customer
Settings → Email Configuration
- Configure SMTP settings for email notifications
- Test email delivery
Settings → Newsletter
- Create and send newsletters to all registered users
- Supports HTML formatting
- Home:
http://localhost:5173/#/ - Prices:
http://localhost:5173/#/prices - About:
http://localhost:5173/#/about - Contact:
http://localhost:5173/#/contact - Appointment:
http://localhost:5173/#/appointment
- Dashboard:
http://localhost:5173/#/admin - Settings:
http://localhost:5173/#/admin/settings - Documentation:
http://localhost:5173/#/admin/documentation
- Scheduler:
http://localhost:5173/#/easyscheduler
| Command | Description |
|---|---|
npm run dev |
Start all servers (frontend + backend) |
npm run dev:frontend |
Start frontend only |
npm run dev:backend |
Start backend only |
npm run build |
Build frontend for production |
npm run db:init |
Initialize database |
npm run install:all |
Install dependencies for all projects |
npm run lint |
Run ESLint |
- React 19
- Vite 7
- React Router 7
- i18next (Internationalization)
- Node.js
- Express
- SQLite (default) / MongoDB (optional)
- TypeScript
- Nodemailer
- React (integrated with main frontend)
- JWT Authentication
- Role-based access control
The site can be deployed to any Node.js hosting platform. For GitHub Pages deployment (static frontend only), changes pushed to the main branch are automatically deployed.