A web application allowing companies to schedule their employees vacations
Vacation planner is a side/pet project written in plain PHP, allowing companies to schedule their employees' vacations. It has the following features:
- Login / Registrer functionality
- Supervisor / Employee roles
- Supervisors can manage their employees from the admin dashboard
- Employees can request vacation time from their supervisor
- Supervisors can approve / reject vacation time
- Supervisors can see all vacations in a practical calendar
- All notifications are performed via email
I tried to implement my own simple version of Laravel, so I can dive into PHP internals like Reflection, sessions and more, as well as find ways to correctly structure all these components and make them work together. So, these are some of the things that were implemented in this project.
- A custom router following the MVC pattern, allowing to use controllers and middlewares
- A simple ORM to perform database operations
- Facades for accessing request data, accessing the database and more
- A simple Dependency Injection container to instantiate controller dependencies
- Error handling using custom exceptions as well as global error handling
- Custom validators that can be injected in controllers through the DI container
- Authentication / authorization using bcrypt and PHP sessions
- Commands to be able to run multiple operations in a queue and later abstract it in a queue worker
- A simple mailer library using PHPMailer
- Migration and seed scripts
To setup this project you have to install NodeJS and Docker in your computer. I have tested this setup in a Unix environment but it will probably work in Windows / Mac too.
- PHP
- Composer
- VueJS
- Docker
- MySQL
Run the following commands in the project's root folder.
composer install
cd frontend && npm install
cd ..
cp .env.example .env
cp frontend/.env.example frontend/.env
After finishing the above steps, setup your smtp info in the .env file.
Run the following commands
docker-compose up
npm run migrate
After running these commands you will have a fully working docker environment and all database tables will be in place.`
You can then access the frontend of the application at http://localhost:8080 and the API at http://localhost:8081.
👤 George Koniaris
- Website: https://gkoniaris.gr
- Twitter: @gkondev
- Github: @gkoniaris
- LinkedIn: @gkon
Contributions, issues and feature requests are welcome!
Feel free to check issues page. You can also take a look at the contributing guide.
Give a ⭐️ if this project helped you!
Copyright © 2020 George Koniaris.
This project is MIT licensed.
This README was generated with ❤️ by readme-md-generator