Coder Social home page Coder Social logo

blumilksoftware / toby Goto Github PK

View Code? Open in Web Editor NEW
17.0 5.0 4.0 3.59 MB

HR software you love to hate

License: MIT License

Shell 0.49% PHP 53.78% Dockerfile 0.83% JavaScript 1.85% Blade 0.26% CSS 0.18% Vue 41.94% Makefile 0.66%
php laravel hr inertiajs hacktoberfest

toby's Introduction

He's watching you

@blumilksoftware/toby

HR software you love to hate.

Local development

Prerequisites

  • make
  • docker and docker compose v2

Setup

Run following commands:

cp .env.example .env
make init
make shell
  # inside container
  npm run dev

Next, place google credentials in /google-credentials.json (check how to obtain the credentials).

Application will be running under localhost:8751 and http://toby.blumilk.localhost/ in Blumilk traefik environment. If you don't have a Blumilk traefik environment set up yet, follow the instructions from this repository.

Available commands

Command Task
make shell Runs application shell
make shell-root Runs application shell as root
make queue Runs queue worker
make test Runs test suite
make dev Runs development mode for frontend
make cs Runs codestyle checks
make fix Runs codestyle fixers

Docker image

App images will be accessible under the following tags:

Beta:

  • registry.blumilk.pl/toby/toby:beta

Production image will be accessible in the new registry since v1.2.1 tag.

Prod:

  • registry.blumilk.pl/toby/toby:latest
  • registry.blumilk.pl/toby/toby:v1.2.3 (depends on releases/tags)

Further reading

toby's People

Contributors

baakoma avatar blumilkbot avatar blusia avatar dawidrudnik avatar dependabot[bot] avatar ewelinaskrzypacz avatar kamilniemczycki avatar kamilpiech97 avatar krzysztofrewak avatar michalmyskow avatar mlencki avatar mtracz avatar vojcc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

toby's Issues

Vacation calendar - UX improvement

It would be good if:

  1. days cells (weekends, free days) will be also with that red background
  2. there will be legend for kind of vacation types
  3. the whole row with own name will be more distinctive
  4. the whole column with current day will be more distinctive
  5. there will be buttons (next, previous) for month switching

endpoint /vacation-calendar

Deployment

My idea is to deploy this application to Heroku or other free/cheap hosting. I'm open to Laravel Forge (https://forge.laravel.com/), but someone would need to convince me that paying $12/month is worth it.

Requirements
Application should be available 24/7 from the Internet. We can park it under toby.blumilk.pl domain or anything else.

What I would like to see here?
I imagine that every release here (https://github.com/blumilksoftware/toby/releases) would trigger some GHA action to deploy the entire Laravel application and run all the required deploy scripts, including migrations and Laravel optimization things: https://laravel.com/docs/8.x/deployment#optimization

Vacation calendar

Each user should see a table with all users and their vacations. It may look like that on the left side we have a list of users, and on the right side there are days, where the vacation should be marked (maybe in color or icon or both?).

Vacation request page - UX improvement

I think that selected tab should be more visible for user, than just with that bottom border line. (endpoint /vacation-requests/me)

Something like that (color is random, just an example)
image

Statistics

Vacation statistics presented on the beautiful charts will be a nice feature.

E-mail notifications

We should add e-mail notifications. It will be quite useful when an invited user gets an e-mail. Also, when a vacation request changes state - an employee, a technical vacation approved and an administrative vacation approver should receive an e-mail notification.

Vacation summary for employee

An employee should see a summary of his vacation - how many vacation days are left, how many vacation requests were created, how many vacation days are used by the employee and so on.

User profile

Each user should have profile with information about his birthday and last activity.

Roles

We should think of roles in the project.

Vacation request acceptance flow

Default flow - technical vacation approver + administrative vacation approver

  1. The employee creates a vacation request.
  2. The technical vacation approver can accept or reject the vacation request.
    2.1 If approved, the vacation request goes to the administrative vacation approver.
    2.2 If rejected, the vacation request status is canceled and the employee has to create another vacation request.
  3. Administrative vacation approver can accept or reject the vacation request.
    3.1 If approved, the vacation request status is approved. The employee, technical vacation approver, and administrative vacation approver receive an e-mail notification and the vacation appears in the Google Calendar.
    3.2 If rejected, the vacation request status is canceled and the employee has to create another vacation request.

Remembering authenticated user

I refreshed a page on my home machine where I was logged yesterday and I was logged out immediately. Could we extend session life to more than one day? With maybe some option to select?

Block unavailable days in datepicker

It will be nice feature,if the user could see days in the datepicker that are no longer available for selection (i.e. except weekends it would be holidays and days where the user has already taken vacation or vacation is being processed).

Improvement in Google Calendar

For now each day of vacation is a separate event in Google Calendar, even if vacation request lasts i.e. five days in a row, we have five events. Maybe we can try to combine this to one event?

Menu is loosing track of the current page

Main menu is loosing track of the current page - active menu element stops being active when clicking on page.

This can be seen on vacation requests page when changing the filter tab or on the calendar when changing the month.

Vacation request - cancel / edit

Are there plans for cancel or edit pending vacation request?
It could be good to be able to edit data or even delete/cancel vacation request until it will be approved state.

Proofreading

An ongoing task for all translations, typos, grammar errors and so on.

Distinguishing the content of emails

As an administrator I'm receiving two emails for every vacation request and both emails have the same content. Gmail has a functionality to collapse same contents, so its confusing sometimes.

image

I would like to see information about what kind of action is required. Like "acceptance of administrative supervisor" or something like that.

UX changes

List of small UI/UX bugs to fix:

  • on smaller resolutions (less than 1024px width) in navigation link "Dashboard" is smaller than other links
    image
  • logo should be in .svg format
  • on smaller resolutions (less than 1024px width) when user click link in navigation, it should be hidden
  • dashboard on mobile resolution doesn't look great
    image
  • on mobile resolution in vacation list view, tabs should be shown as a dropdown
  • tables - this gray line should be across the width of the table, not only in the beginning
    image
  • can we do something with this?
    image
  • on mobile resolution, the button "Pobierz plik Excel" should have some margin
    image
  • on mobile resolutions in vacation limits view, the button "Zapisz" should be on the right, not in the center

Holidays CRUD

Admin should be able to view and manage holidays. What's more, when a new year period is created, then basics holidays should be generated automatically.

Separate fields for name and surname

For now we have one field for user name. I think it'll be better to separate name and surname, because we can easily sort users list by surname by default.

Generate timesheet

An administrative vacation approver should be able to generate a timesheet for each employee in .csv format.

Create vacation request by administrative vacation approver

An administrative vacation approver should be able to create a vacation request on behalf of the employee. The administrative vacation approver creates a vacation request of any type (i.e. sick leave). What's more he should be able to select checkbox "Skip acceptance flow" and this request will be immediately approved by the system.

Holidays summary calendar view

It would be better if under /holidays employee will be able to see calendar for the whole year with marked free days. It may be non-interactive calendar.

Something like:
image

Validation vacation requests

We have to implement couple of rules for vacation request:

  • vacation must be at least one day long,
  • the number of vacation days can’t exceed the number of vacation limit days for the employee,
  • vacation request can’t be created, if the employee has pending vacation request in the same range of days,
  • vacation request can’t be created, if the employee has approved vacation request in the same range of days,
  • vacation request dates can't be chosen between two years.

Avatars are broken

Describe the bug
After fresh project setup, avatars are not displayed properly.

To Reproduce
Steps to reproduce the behavior:

  1. Make fresh setup (delete directory, clone repository, run sh setup or commands in readme file)
  2. Login into app.
  3. See broken avatars.

Expected behavior
Avatars should be displayed properly.

Screenshots
image

Desktop (please complete the following information):

  • OS: kubuntu
  • Browser: Google Chrome
  • Version: 98.0.4758.102

Custom error pages

The goal of this task is to make custom error pages. It will improve user experience and it will be harder for potential attackers to identify Laravel as our framework.

Set up frontend

Aim of this task is to make frontend stuff like:

  • set up Inertia.js
  • add Tailwind CSS
  • clean code base for frontend things

Permissions

The aim of this task is to go over existing functionality and enforce permission checking. We have roles:

  • user (can create vacation request for him, see list of his vacation requests, holiday's list and vacation calendar.
  • technical approver (can reject/approve vacation request, see vacation calendar and holidays)
  • administrative approver (can create vacation request on employee behalf, see list of all vacation request, cancel/reject/approve vacation request, approve vacation request, manage holidays, see vacation calendar, manage vacation limits)
  • administrator (can everything - only admin can manage users)

Cancelling vacation request

An administrative vacation approver can cancel a vacation request any time, even if the vacation request is approved by the system and integrated with Google Calendar.

Year period

The reference period will be one year. Each employee entitled to have a vacation should have information on how many vacation days he is entitled to in a given calendar year.

Users CRUD for administrator

An administrator should be able to manage users, so he should be able to create, read, update and delete users.
Each user should have information like: email, form of employment, starting date of employment and so on.

Collective editing number of employees’ vacations days

A technical vacation approver should have a view for collective editing of the number of vacation days for employees. For now, this view can be simple - just a list of all employees, a checkbox, wherever the employee is entitled to vacation and if so, how many days of vacation he has.

Project skeleton

In this task we will make a basic setup for the project.
TO-DO list:

  • new Laravel project
  • dockerized PHP 8 and Composer 2
  • add xdebug, Laravel Telescope
  • add configured ECS
  • clean up codebase
  • add readme “how to run the app”
  • set up dependabot
  • add GitHub Actions

More details in vacation calendar

As an employee I want to click on the icon in vacation calendar and see details of vacation request. I should only see details of my vacations. Admins, technical/administrative approvers should see everyone's vacation details.

Sensitive data leak via avatar provider

I don't like idea that we are sending all names of our employees to external avatar provider via GET requests. Of course, these data are online and available in Linkedin, but we should be little more careful.

$user->getAvatar() creates image with URL https://eu.ui-avatars.com/api/?length=2&font-size=0.33&size=48&rounded=1&uppercase=1&background=F43F5E&color=F4F8FD&bold=1&region=eu&name=Willem+Dafoe where last parameter in query string is user's name.

Also: there's a lot o pink avatars. Maybe we could switch it to more blue palette?

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.