A booking management application built with Laravel and Livewire.
The project demonstrates customer-facing appointment booking alongside an authenticated workspace for managing services, customers, bookings, and business hours.
-
Authentication
- Registration and login
- Email verification
- Forgot-password and password-reset flows
-
Service management
- Manage the services offered by a business
- Support for active and inactive services
-
Booking management
- Create, update, confirm, cancel, and complete bookings
- Filter bookings by date and status where supported by the application
- Reschedule bookings through the public booking-management flow
-
Customer management
- Manage customer records associated with bookings
-
Business hours
- Configure opening hours by day of the week
- Mark individual days as closed
-
Public booking flows
- Public booking page for a business
- Signed links for managing or cancelling a booking
-
Reminders
- Booking reminder functionality
-
Testing
- Automated test suite written with Pest
- 300+ tests covering application behavior and business rules
- PHP 8.4
- Laravel 13
- Livewire 4
- Tailwind CSS 4
- MySQL
- Pest
Before installing the application, make sure your development environment includes:
- PHP 8.4 and the PHP extensions required by Laravel
- Composer
- Node.js and npm
- MySQL
- A local web server or Laravel-compatible development environment
git clone https://github.com/aantanaskovic/booking-platform.git
cd booking-platformcomposer installcp .env.example .envOn Windows, you can copy .env.example to .env manually or use:
Copy-Item .env.example .envphp artisan key:generateCreate a MySQL database and configure the following values in .env:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=booking_platform
DB_USERNAME=root
DB_PASSWORD=Adjust the database name, username, and password to match your local environment.
php artisan migrate --seedThe default database seeder runs DemoDataSeeder, which creates the demo business, customers, services, business hours, and bookings.
npm install
npm run buildphp artisan serveFor frontend development with hot reload, run:
npm run devin a separate terminal.
The seeded database includes a demo business account.
Email:
Password:
password
The demo account is created with a verified email address so the application can be explored immediately after seeding.
Note: These credentials are intended only for local development and portfolio demonstration. Do not reuse this password for a real account.
The demo seeder creates a realistic sample dataset including:
- 1 demo business
- 12 customers
- 5 services
- Active and inactive services
- Business hours for the full week
- Closed Sunday
- Historical completed and cancelled bookings
- Upcoming pending and confirmed bookings
- Booking notes and different service durations
To recreate the complete demo database from scratch:
php artisan migrate:fresh --seedWarning:
migrate:freshdrops all tables in the configured database. Use a development database only.
Run the complete automated test suite with:
php artisan testThe project currently contains 335 tests, covering authentication, booking rules, customer and service management, business hours, public booking flows, signed URLs, dashboard behavior, tenant isolation, validation, and other application behavior.
- Keep
.envout of version control. - Never commit passwords, API keys, tokens, or other secrets.
- Use HTTPS and review application configuration before deploying publicly.
- Signed booking-management and cancellation links are time-limited; treat them as private links.
- The demo credentials are intended only for local development and demonstration.
The application follows Laravel's standard project structure with domain logic organized into actions, queries, models, Livewire components, and feature tests.
Key areas include:
app/
├── Actions/
├── Enums/
├── Exceptions/
├── Livewire/
└── Models/
database/
├── factories/
├── migrations/
└── seeders/
resources/
├── css/
└── views/
routes/
tests/
├── Feature/
└── Unit/
This repository is a demonstration and portfolio project.
The application is covered by an automated test suite and is intended to demonstrate Laravel, Livewire, authentication, booking workflows, multi-tenant data isolation, validation, and business-rule implementation.
Review the code and configuration before using the project in a production environment.
No license has been specified yet.
Add a license file if you intend to permit others to use, modify, or distribute this project.