├── public
├── favicon.ico
├── robots.txt
├── mix-manifest.json
├── .htaccess
└── index.php
├── database
├── .gitignore
├── seeders
│ └── DatabaseSeeder.php
├── migrations
│ ├── 2022_02_02_195909_create_employees_table.php
│ ├── 2022_02_02_200155_create_services_table.php
│ ├── 2022_02_19_115055_add_cancelled_at_to_appointments_table.php
│ ├── 2022_02_02_200510_create_employee_service_table.php
│ ├── 2022_02_02_200913_create_schedules_table.php
│ ├── 2022_02_05_191555_create_schedule_unavailabilities_table.php
│ ├── 2014_10_12_100000_create_password_resets_table.php
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2019_08_19_000000_create_failed_jobs_table.php
│ ├── 2022_02_05_202921_create_appointments_table.php
│ └── 2019_12_14_000001_create_personal_access_tokens_table.php
└── factories
│ └── UserFactory.php
├── bootstrap
├── cache
│ └── .gitignore
└── app.php
├── storage
├── logs
│ └── .gitignore
├── app
│ ├── public
│ │ └── .gitignore
│ └── .gitignore
└── framework
│ ├── testing
│ └── .gitignore
│ ├── views
│ └── .gitignore
│ ├── cache
│ ├── data
│ │ └── .gitignore
│ └── .gitignore
│ ├── sessions
│ └── .gitignore
│ └── .gitignore
├── resources
├── views
│ ├── bookings
│ │ └── create.blade.php
│ ├── components
│ │ ├── label.blade.php
│ │ ├── auth-session-status.blade.php
│ │ ├── dropdown-link.blade.php
│ │ ├── input.blade.php
│ │ ├── auth-card.blade.php
│ │ ├── button.blade.php
│ │ ├── auth-validation-errors.blade.php
│ │ ├── nav-link.blade.php
│ │ ├── responsive-nav-link.blade.php
│ │ ├── dropdown.blade.php
│ │ └── application-logo.blade.php
│ ├── dashboard.blade.php
│ ├── layouts
│ │ ├── guest.blade.php
│ │ ├── app.blade.php
│ │ └── navigation.blade.php
│ ├── auth
│ │ ├── confirm-password.blade.php
│ │ ├── forgot-password.blade.php
│ │ ├── verify-email.blade.php
│ │ ├── reset-password.blade.php
│ │ ├── register.blade.php
│ │ └── login.blade.php
│ └── livewire
│ │ ├── show-booking.blade.php
│ │ ├── booking-calendar.blade.php
│ │ └── create-booking.blade.php
├── css
│ └── app.css
├── js
│ ├── app.js
│ └── bootstrap.js
└── lang
│ └── en
│ ├── pagination.php
│ ├── auth.php
│ ├── passwords.php
│ └── validation.php
├── .gitattributes
├── tests
├── TestCase.php
├── Unit
│ └── ExampleTest.php
├── Feature
│ ├── ExampleTest.php
│ └── Auth
│ │ ├── RegistrationTest.php
│ │ ├── AuthenticationTest.php
│ │ ├── PasswordConfirmationTest.php
│ │ ├── EmailVerificationTest.php
│ │ └── PasswordResetTest.php
└── CreatesApplication.php
├── app
├── Bookings
│ ├── Filter.php
│ ├── Filters
│ │ ├── SlotsPassedTodayFilter.php
│ │ ├── AppointmentFilter.php
│ │ └── UnavailabilityFilter.php
│ └── TimeSlotGenerator.php
├── Models
│ ├── Service.php
│ ├── ScheduleUnavailability.php
│ ├── Schedule.php
│ ├── User.php
│ ├── Appointment.php
│ └── Employee.php
├── Http
│ ├── Middleware
│ │ ├── EncryptCookies.php
│ │ ├── VerifyCsrfToken.php
│ │ ├── PreventRequestsDuringMaintenance.php
│ │ ├── TrustHosts.php
│ │ ├── TrimStrings.php
│ │ ├── Authenticate.php
│ │ ├── TrustProxies.php
│ │ └── RedirectIfAuthenticated.php
│ ├── Controllers
│ │ ├── Controller.php
│ │ ├── BookingController.php
│ │ └── Auth
│ │ │ ├── EmailVerificationPromptController.php
│ │ │ ├── EmailVerificationNotificationController.php
│ │ │ ├── VerifyEmailController.php
│ │ │ ├── ConfirmablePasswordController.php
│ │ │ ├── AuthenticatedSessionController.php
│ │ │ ├── PasswordResetLinkController.php
│ │ │ ├── RegisteredUserController.php
│ │ │ └── NewPasswordController.php
│ ├── Livewire
│ │ ├── ShowBooking.php
│ │ ├── BookingCalendar.php
│ │ └── CreateBooking.php
│ ├── Requests
│ │ └── Auth
│ │ │ └── LoginRequest.php
│ └── Kernel.php
├── View
│ └── Components
│ │ ├── AppLayout.php
│ │ └── GuestLayout.php
├── Providers
│ ├── BroadcastServiceProvider.php
│ ├── AppServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── EventServiceProvider.php
│ └── RouteServiceProvider.php
├── Console
│ └── Kernel.php
└── Exceptions
│ └── Handler.php
├── .styleci.yml
├── .gitignore
├── .editorconfig
├── tailwind.config.js
├── routes
├── channels.php
├── api.php
├── console.php
├── web.php
└── auth.php
├── server.php
├── webpack.mix.js
├── package.json
├── config
├── cors.php
├── services.php
├── view.php
├── hashing.php
├── broadcasting.php
├── sanctum.php
├── filesystems.php
├── queue.php
├── cache.php
├── logging.php
├── mail.php
├── auth.php
├── database.php
├── session.php
└── app.php
├── .env.example
├── phpunit.xml
├── artisan
├── composer.json
└── README.md
/public/favicon.ico:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite*
2 |
--------------------------------------------------------------------------------
/bootstrap/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/storage/app/public/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/app/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !public/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/storage/framework/testing/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/views/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/cache/data/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/sessions/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !data/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/public/mix-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "/js/app.js": "/js/app.js",
3 | "/css/app.css": "/css/app.css"
4 | }
5 |
--------------------------------------------------------------------------------
/resources/views/bookings/create.blade.php:
--------------------------------------------------------------------------------
1 | @foreach($slots as $slot)
2 | {{ $slot }}
3 | @endforeach
4 |
--------------------------------------------------------------------------------
/resources/css/app.css:
--------------------------------------------------------------------------------
1 | @import 'tailwindcss/base';
2 | @import 'tailwindcss/components';
3 | @import 'tailwindcss/utilities';
4 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 | *.js linguist-vendored
5 | CHANGELOG.md export-ignore
6 |
--------------------------------------------------------------------------------
/resources/js/app.js:
--------------------------------------------------------------------------------
1 | require('./bootstrap');
2 |
3 | import Alpine from 'alpinejs';
4 |
5 | window.Alpine = Alpine;
6 |
7 | Alpine.start();
8 |
--------------------------------------------------------------------------------
/storage/framework/.gitignore:
--------------------------------------------------------------------------------
1 | compiled.php
2 | config.php
3 | down
4 | events.scanned.php
5 | maintenance.php
6 | routes.php
7 | routes.scanned.php
8 | schedule-*
9 | services.json
10 |
--------------------------------------------------------------------------------
/resources/views/components/label.blade.php:
--------------------------------------------------------------------------------
1 | @props(['value'])
2 |
3 |
6 |
--------------------------------------------------------------------------------
/tests/TestCase.php:
--------------------------------------------------------------------------------
1 | merge(['class' => 'font-medium text-sm text-green-600']) }}>
5 | {{ $status }}
6 |
7 | @endif
8 |
--------------------------------------------------------------------------------
/resources/views/components/dropdown-link.blade.php:
--------------------------------------------------------------------------------
1 | merge(['class' => 'block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 transition duration-150 ease-in-out']) }}>{{ $slot }}
2 |
--------------------------------------------------------------------------------
/.styleci.yml:
--------------------------------------------------------------------------------
1 | php:
2 | preset: laravel
3 | version: 8
4 | disabled:
5 | - no_unused_imports
6 | finder:
7 | not-name:
8 | - index.php
9 | - server.php
10 | js:
11 | finder:
12 | not-name:
13 | - webpack.mix.js
14 | css: true
15 |
--------------------------------------------------------------------------------
/resources/views/components/input.blade.php:
--------------------------------------------------------------------------------
1 | @props(['disabled' => false])
2 |
3 | merge(['class' => 'rounded-md shadow-sm border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50']) !!}>
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /public/hot
3 | /public/storage
4 | /storage/*.key
5 | /vendor
6 | .env
7 | .env.backup
8 | .phpunit.result.cache
9 | docker-compose.override.yml
10 | Homestead.json
11 | Homestead.yaml
12 | npm-debug.log
13 | yarn-error.log
14 | /.idea
15 | /.vscode
16 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | end_of_line = lf
6 | insert_final_newline = true
7 | indent_style = space
8 | indent_size = 4
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
14 | [*.{yml,yaml}]
15 | indent_size = 2
16 |
17 | [docker-compose.yml]
18 | indent_size = 4
19 |
--------------------------------------------------------------------------------
/resources/views/components/auth-card.blade.php:
--------------------------------------------------------------------------------
1 |
Your booking has been cancelled.
37 | @endif 38 |