Giter Site home page Giter Site logo

gkoniaris / vacations-planner Goto Github PK

View Code? Open in Web Editor NEW
7.0 1.0 1.0 3.77 MB

A web application allowing companies to schedule their employees' vacations.

Home Page: https://github.com/gkoniaris/vacations-planner

License: MIT License

PHP 40.69% Dockerfile 0.44% JavaScript 2.97% HTML 0.55% Vue 27.43% Hack 24.41% CSS 1.39% TSQL 2.12%
side-project php plain-php vacation-management pet-project

vacations-planner's Introduction

Welcome to Vacation Planner ๐Ÿ‘‹

Version Documentation Maintenance License: MIT Twitter: gkondev

A web application allowing companies to schedule their employees vacations

What is Vacation Planner

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

What was implemented in the backend

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

Prerequisites

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.

Technologies Used

  • PHP
  • Composer
  • VueJS
  • Docker
  • MySQL

Setup

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 project

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.

Screenshots

Author

๐Ÿ‘ค George Koniaris

๐Ÿค Contributing

Contributions, issues and feature requests are welcome!
Feel free to check issues page. You can also take a look at the contributing guide.

Show your support

Give a โญ๏ธ if this project helped you!

๐Ÿ“ License

Copyright ยฉ 2020 George Koniaris.
This project is MIT licensed.


This README was generated with โค๏ธ by readme-md-generator

vacations-planner's People

Contributors

gkoniaris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.