Frequently Asked Questions

SureBooking — FAQ

Common questions about installation, configuration, features, and troubleshooting.

🚀Installation & Setup

Q

What are the minimum server requirements?

A
  • PHP: 8.4 or higher
  • MySQL: 5.7+ or 8.0+, MariaDB 10.3+
  • RAM: Minimum 512 MB (1 GB+ recommended)
  • Disk: 500 MB minimum
  • PHP Extensions: curl, gd, imagick, json, zip, mbstring, xml, pdo, pdo_mysql, bcmath, tokenizer

See requirements.txt for the complete checklist.

Q

What is the fastest way to test the application?

A
Use Docker — it bundles PHP, MySQL, and Nginx pre-configured:
docker-compose up -d
# Then open: http://localhost:9059/install
The web installer wizard guides you through database setup, site info, and admin account creation. No manual .env editing required.
Q

Can I install this on shared hosting?

A
Yes, as long as the host meets the requirements:
  • PHP 8.4+ with all required extensions
  • MySQL database access
  • SSH access (recommended for queue workers)
  • Ability to set up cron jobs
Without SSH, use a cron job to periodically run php artisan queue:work --queue=high,default.
Q

How do I get the admin login credentials?

A
Admin credentials are created during the web installer wizard:
  1. Open /install in your browser
  2. Complete Steps 1–4 (requirements, permissions, database, site info)
  3. On Step 5 — Admin Account, enter your desired admin name, email, and password
  4. After installation completes, click Go to Admin Panel on the Finish screen and log in with those credentials
There are no auto-generated credentials — you choose them yourself during the installer.
Q

Do I need to compile frontend assets (npm)?

A
No — pre-compiled assets are included in the package. Run npm run production only if you:
  • Modify CSS/JS source files
  • Customize the theme assets

⚙️Configuration

Q

How do I configure email sending (SMTP)?

A
Mail can be configured directly through the Admin Panel — no need to edit .env:
  1. Login to /admin
  2. Go to Settings → Email Configuration
  3. Enter SMTP details (host, port, username, password, encryption)
  4. For Gmail: use an App Password, not your regular password
  5. Use the built-in Send Test Email to verify
Q

What are queue workers and why do I need them?

A
Queue workers process background jobs asynchronously:
  • Email notifications (appointment confirmations, status updates, password reset)
  • Image optimization after upload
  • Background report generation
Local testing: run php artisan queue:work --queue=high,default in a separate terminal.
Production: use Supervisord (see install.html).
Q

How do I set up queue workers in production?

A
  1. Install Supervisor: sudo apt-get install supervisor
  2. Copy config: cp supervisord.ini.example supervisord.ini
  3. Edit paths in supervisord.ini (update command and stdout_logfile paths)
  4. Deploy: sudo cp supervisord.ini /etc/supervisor/conf.d/surebooking-worker.conf
  5. Start: sudo supervisorctl reread && sudo supervisorctl update
See the Queue Worker section in install.html for full details.
Q

Can I use Redis for caching and queues?

A
Yes — Redis improves performance significantly for high-traffic sites:
  1. Install Redis on your server
  2. Install the PHP Redis extension: php-redis
  3. Update .env:
    CACHE_DRIVER=redis
    QUEUE_CONNECTION=redis
    REDIS_HOST=127.0.0.1
    REDIS_PORT=6379
  4. Clear cache: php artisan cache:clear
Q

How do I change the domain/URL after installation?

A
  1. Update APP_URL in .env
  2. Clear config cache: php artisan config:clear
  3. Clear app cache: php artisan cache:clear
  4. Restart queue workers: sudo supervisorctl restart surebooking-worker:*
Q

How do I configure payment methods?

A
Payment methods are provided by separate packages (PayPal, Stripe, VNPay, etc.) and injected via the hook system:
  1. Install the relevant payment package
  2. Go to Admin → Settings → Payment Methods
  3. Enable and configure each gateway (API keys, webhook URLs, etc.)
Payment transactions are tracked at Admin → Payments.

Features & Usage

Q

How do I manage appointments?

A
  1. Go to Admin → Service Booking → Appointments
  2. Use filters (status, branch, date range) to find appointments
  3. Click an appointment to view full details: customer, services, employee, payment
  4. Use the Update Status button to transition: New → Accepted → Success / Cancel
  5. Every status change is logged in the appointment history and triggers a customer email notification
See user-guide.html for the full appointment workflow.
Q

How do I set up branches and services?

A
  1. Branches: Admin → Service Booking → Branches → Add New. Fill in name, address, phone, and working hours
  2. Service Categories: Admin → Service Booking → Service Categories — organize services into groups
  3. Services: Admin → Service Booking → Services → Add New. Set price, duration, and assign to branches
  4. Employees: Admin → Service Booking → Employees — add staff, set working hours and service assignments per branch
Q

How does the coupon / discount system work?

A
  • Create coupons at Admin → Service Booking → Coupons
  • Set discount type: fixed amount or percentage (with optional max cap)
  • Configure scope: all customers, specific customer, service category, service, or branch
  • Set date window, per-user usage limit, total quantity cap, and minimum booking amount
  • Customers enter the coupon code on the booking form before confirming
  • Coupon is rolled back automatically if the appointment is cancelled
Q

Can I export appointment data?

A
Yes — export is available throughout the admin:
  • Appointments: Admin → Appointments → Export button (respects current filters)
  • Customers: Admin → Customers → Export
  • Coupon usage: Admin → Coupons → Usage History → Export
  • Redirect rules: Admin → Sync Links → Export
Q

How does the online booking flow work?

A
The frontend booking flow guides customers through these steps:
  1. Select service(s): Customer picks one or more services from the frontend
  2. Choose branch & employee: Select preferred location and staff member
  3. Pick date & time: Real-time availability calendar shows open slots
  4. Confirm: Review booking summary, optionally apply a coupon code, and submit
  5. Notification: Confirmation email sent to customer; admin notified of new appointment
  6. Admin workflow: Staff reviews (New → Accepted), delivers service (Accepted → Success)
Q

How do I manage redirects (sync-links)?

A
  • Go to Admin → Sync Links
  • Add rules: Source URL (old path) → Target URL (new path)
  • Choose redirect type: 301 (permanent, good for SEO) or 302 (temporary)
  • Enable/disable individual rules
  • Import from Excel for bulk setup; export to back up or audit
Use 301 redirects when permanently changing URL structure to preserve SEO value.

🔎Troubleshooting

Q

500 Internal Server Error after installation

A
Check these in order:
  1. File permissions:
    chmod -R 755 storage bootstrap/cache
  2. Check error logs:
    cat storage/logs/laravel.log
  3. Ensure .env exists and has correct database credentials
  4. Verify all required PHP extensions are installed: php -m | grep -E 'curl|gd|imagick|zip|mbstring'
  5. Clear caches:
    php artisan optimize:clear
Q

Background tasks not processing (imports, emails)

A
Check if queue worker is running:
sudo supervisorctl status
# Should show: surebooking-worker:surebooking-worker_00   RUNNING
If not running:
  1. Reload config:
    sudo supervisorctl reread && sudo supervisorctl update
  2. Start workers:
    sudo supervisorctl start surebooking-worker:*
For local testing (no Supervisord):
php artisan queue:work --queue=high,default
Check failed jobs:
php artisan queue:failed
Q

Images not uploading or displaying

A
  1. Check permissions:
    chmod -R 755 public/uploads
  2. Verify php-gd and php-imagick are installed: php -m | grep -E 'gd|imagick'
  3. Check upload limits in php.ini:
    upload_max_filesize = 64M
    post_max_size = 64M
    memory_limit = 256M
Q

Email not sending

A
  1. Go to Admin → Settings → Email Configuration and check SMTP settings
  2. Use the built-in Send Test Email button
  3. For Gmail: use an App Password (Google Account → Security → App Passwords) with port 587 + TLS
  4. Confirm queue worker is running (emails are sent via queue)
  5. Check Laravel logs:
    tail -f storage/logs/laravel.log
  6. Ensure SMTP ports 587/465 are open on your server firewall
Q

Code updates not taking effect

A
Always run after deploying:
php artisan optimize:clear
Critical: restart queue workers after every code deploy — workers keep PHP classes in memory and will not see your changes until restarted:
sudo supervisorctl restart surebooking-worker:*
Also clear browser cache (Ctrl+Shift+Delete).

Performance & Optimization

Q

How can I improve system performance?

A
  1. Use Redis for cache and queues:
    CACHE_DRIVER=redis
    QUEUE_CONNECTION=redis
  2. Enable PHP OPcache in php.ini
  3. Increase queue workers: Edit numprocs in supervisord.ini to 2–4 for high traffic
  4. Production mode: APP_ENV=production and APP_DEBUG=false
  5. CDN: Serve static assets and uploaded images via CDN
Q

What server specs do I need?

A
  • Small (<1,000 users): 1 CPU, 1 GB RAM, 10 GB SSD
  • Medium (1,000–10,000 users): 2 CPUs, 2–4 GB RAM, Redis cache
  • Large (10,000+ users): 4+ CPUs, 8 GB+ RAM, Redis, CDN, load balancer

🔒Security

Q

How do I secure the admin panel?

A
  1. Change the default password immediately after first login
  2. Enable Two-Factor Authentication (2FA): Admin → Settings → Security
  3. Set APP_DEBUG=false and APP_ENV=production in production
  4. Use HTTPS with a valid SSL certificate
  5. Set file permissions to 755 (not 777)
  6. Never commit .env to version control
  7. Keep the system updated regularly
Q

How do I back up the system?

A
  1. Database:
    mysqldump -u surebooking_user -p surebooking_db > backup_$(date +%Y%m%d).sql
  2. Files to backup:
    • .env — configuration
    • public/uploads/ — user uploaded media
    • storage/ — generated files and logs
  3. Automate: Use cron jobs or a backup service
  4. Off-site storage: Store backups on a separate server/cloud storage

🎨Customization

Q

Can I customize the frontend design?

A
Multiple customization options are available without touching source code:
  1. Theme Config: Admin → Appearance → Theme Configuration — colors, fonts, layout options
  2. Custom CSS: Admin → Appearance → Custom CSS — inject custom styles
  3. Menu: Admin → Appearance → Menus — manage navigation menus
  4. Logo/Favicon: Admin → Settings → General
  5. Theme files: Edit blade templates in packages/theme/resources/views/ then rebuild assets with npm run production
Q

Can I customize service fields or add new data?

A
The source code is 100% unencoded, so you can customize freely:
  • Add new fields to services, branches, or employees via a Laravel migration + model update
  • Extend the booking form in the theme views under packages/theme/resources/views/
  • Add custom admin fields using the existing FormBuilder patterns (see packages/service-booking/)
Q

How do I add or translate text?

A
Use the built-in Translation Manager — no file editing required:
  1. Go to Admin → Translations
  2. Select the language to translate
  3. Search for the text key you want to change
  4. Enter the translation and save
Translations are organized by module (Admin, Frontend, Email, Validation) for easy navigation. Changes take effect immediately without restarting.
To add a new language: Admin → Settings → Languages → Add Language.

🔸REST API

Q

Does SureBooking include a REST API?

A
Yes — SureBooking ships with a built-in REST API module. It exposes endpoints for:
  • Appointments — list, detail, and status update (state-machine enforced)
  • Branches — list and detail
  • Services — list and detail (with service category)
  • Customers — list and detail (search by name, email, phone)
See api.html for the full endpoint reference.
Q

How do I get an API token?

A
  1. Login to /admin
  2. Go to Admin → API Clients
  3. Click Add New, enter a name for the client (e.g., "Mobile App"), and save
  4. Click Generate Token on the client detail page
  5. Copy the token — it is displayed only once
Use the token in every API request as a Bearer token:
Authorization: Bearer YOUR_API_TOKEN
Q

What is the API base URL and response format?

A
All API endpoints are prefixed with https://yourdomain.com/api/v1. Every response is JSON with a consistent envelope:
{
  "success": true,
  "data": { ... },
  "message": "...",
  "meta": { "current_page": 1, "last_page": 3, "per_page": 15, "total": 42 }
}
Errors return success: false with an appropriate HTTP status code (401, 404, 422, 429, 500).
Q

Is there a rate limit on API requests?

A
Yes — each API client has a configurable rate limit (requests per minute). When exceeded, the API returns 429 Too Many Requests. Adjust the limit at Admin → API Clients → [client] → Update Config.

📚 Still have questions?

  • Check install.html for detailed installation steps
  • Check user-guide.html for full feature documentation
  • Check api.html for REST API endpoint reference
  • Review storage/logs/laravel.log for error details
  • Contact support via your CodeCanyon account with PHP version, error logs, and server details

SureBooking — FAQ

© 2026 DreamTeam. All rights reserved.  |  Install Guide  |  User Guide