Giter Site home page Giter Site logo

officelifehq / officelife Goto Github PK

View Code? Open in Web Editor NEW
828.0 34.0 104.0 22.16 MB

OfficeLife is the first EmpOps platform. It manages everything employees do in a company. From projects to holidays to 1:1s to teams.

Home Page: https://officelife.io

License: GNU Affero General Public License v3.0

PHP 77.08% Vue 22.80% Shell 0.07% Blade 0.03% Dockerfile 0.03% Procfile 0.01%
laravel hr php crm office management project-management

officelife's Introduction

OfficeLife

All-in-one software to manage the employee lifecycle

WebsiteDocsDemo

Build and test Lines of Code Code coverage License

What is OfficeLife

OfficeLife company

If a company wants to have a complete 360 view of what’s happening inside its walls, it needs to buy and configure a lot of tools. There is a tool for every specific aspect of a company: HR, project management, time tracking, holidays and time offs, team management, One on Ones,... There isn't a software available today, that combine all of them together in a simple way.

Not only buying and configuring all those software is a time-consuming process, but it also costs a lot of money - especially for smaller companies with a limited budget. Moreover, most of the SAAS out there have a let's-call-us-and-talk-for-an-hour-before-you-can-see-what-the-pricing-will-look-like-for-you policy, which most people hate and that we refuse to follow.

We've created OfficeLife to provide a single source of truth for everything an employee does.

OfficeLife has the following features, in 5 major domains:

  • 👋 Recruit

    • Applicant tracking system
    • Onboarding / offboarding (coming soon)
  • 🥸 Manage

    • Employee management
    • Team management
    • Company management
  • 👷‍♀️ Operate

    • Time tracking
    • PTOs (ie holidays and time offs) (coming soon)
    • Expenses management
    • Hardware and software licenses
    • Project management
  • ☎️ Communicate

    • Work logs
    • Recent ships
    • Team and company news
    • Get to know your colleagues
    • Wikis
  • 🥳 Grow Employee and team morale

    • One on Ones
    • Rate your manager
    • Skills
    • Objectives Key Results (OKR) (coming soon)
    • e-Coffees
    • Discipline cases

OfficeLife company

To have more information about the project, check the documentation: https://docs.officelife.io/documentation/introduction.html#what-is-officelife

Who is it for?

OfficeLife is aimed at small and medium size businesses, ranging from 10 to 500 employees. It's not suited for smaller teams, because it's collaborative. Also, it's not meant for huge companies as those companies usually have enough resources to manage a lot of different dedicated, specialized softwares.

OfficeLife is for companies that want one tool, simple enough for everybody, and hackable so it can fit your custom needs.

Why did I create this software?

I'm (https://twitter.com/djaiss) a manager in a big corporation. We have a lot of tools that are not interconnected. And despite all those tools, I don't know what's going on inside the company, or how is an employee doing. OfficeLife is born out of my frustration with the lack of a single source of truth.

I wanted to open source this tool because I believe that collectively, we can build a better tool that everyone will benefit from. A lot of companies can't afford expensive softwares like Workday. By providing a free tool like OfficeLife, I wish employees around the world will enjoy their work more, and managers will be better at being managers.

Get started

OfficeLife is open source, but it comes in several flavors so it fits everyone needs:

  1. Use our hosted version. It's the same version that you will find here on GitHub (exactly the same).
  2. Host the software yourself. We provide ample instructions on our documentation portal.

Requirements for hosting the software

  • PHP 8.0 or higher,
  • the PHP's intl extension,
  • a database engine: preferrably mySQL or SQLite. PostegreSQL should work, in theory.
  • a http server: Nginx, Apache, Caddy, etc...
  • We recommend Forge or Ploi to provision the servers needed to run OfficeLife. Heroku should work too.

Requirements for development

  • Composer,
  • Node and Yarn,
  • A knowledge of how Laravel, VueJS and InertiaJS work. OfficeLife is a complex Laravel application, with a lot of queues and cron jobs.

State of the project (as of September 06th, 2021)

The project is in beta right now, accessible from https://beta.officelife.io. The software might have some bugs that we are fixing as we find them.

  • If you find any bugs, please file them by creating a new issue.
  • Please don't submit new big ideas for now. We want to do a million other things with OfficeLife already. However, we seek feedback on the current features and how we could make them more useful.
  • We have a documentation portal, that we slowly build: https://docs.officelife.io. It has a lot of content already, but we plan of adding much more before launching in beta.

Core team

OfficeLife is made by @djaiss and @asbiin.

We've made another project called @monicahq.

Contributors

This project wouldn't exist if not because of all the people who contribute. Would you like to contribute? Here is where you can start.

License

OfficeLife is open-sourced software licensed under the BSD 3-Clause license. Don't be a jerk.

officelife's People

Contributors

asbiin avatar dependabot-preview[bot] avatar dependabot[bot] avatar djaiss avatar github-actions[bot] avatar haidang666 avatar meichthys avatar sahilofficial671 avatar stickler-ci[bot] avatar weblate avatar

Stargazers

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

Watchers

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

officelife's Issues

2FA

We need to support 2FA.
2FA should be enabled at the user level.

  • In an ideal world, there would be a settings in the Adminland (ie reserved for administrators) that would let them require the 2FA for every users in the account.
  • Also, we should list on the user list (in Adminland), who has 2FA activated, and who has not, as shown below.

Ability to manage hardware and software profiles for teams (and/or positions)

In real life, hardware/software needs of developers is different from the needs of accountants.

We should be able to create profiles that are team specific (and/or position specific), so when we add a new employee to the company, we can assign a profile to him/her.

That way, we can assign the right hardware and softwares to the employee.

360 review of someone (manager or employee)

An employee should be able to select up to 5 team members to ask them for feedback about him/her.

  • This process can be triggered anytime.
  • For the first iteration, we should only have one question: do you like working with me and what is your opinion about me
  • The answers should be anonymous
  • Once every member has replied, the poll closes but it will never auto-close itself.
  • We should have a section on the employee performance tab, in his profile page, where we list all the previous polls.

Removal of dependabot

Dependabot creates a lot of noise in the commit logs.

Could we, instead, schedule a github action that would do a composer update and yarn every week, and commit this with a simple commit message, instead of 12 commits? @asbiin what do you think?

Ability to manage contests

A contest lets a company (or a team) offer a prize to their employees.

Employees can indicate whether they want to be part of the contest.

A contest has an expiration date - after this date, employees can't enroll in the contest.

After the contest ends, a winner is randomly chosen.

Manage licenses of softwares

We already support the management of hardware. We should also allow the management of licenses.

The scope of the v1 for this:

  • ability to add a software with a number of seats,
  • info of the project
    • indicate the renewal date of the contract
    • indicate the price of a seat
  • ability to assign a license to someone.
  • ability to see who has which license.

Add the notion of offices

A company might have several offices all around the world. For instance, in Paris, Montreal, New-York.

Each office has a set of teams, and therefore employees.

This is the hierarchy of the different levels in OfficeLife:

  • company
  • office
  • teams
  • employees

What to do

We should start by the very minimum set of information:

  • name of office
  • address

An office can have one or more teams.

That's it. We'll add the rest later.

Ability to add comments to a project message

There are many places in the app where people can post stuff. Employees should be able to add comments to them.

The first feature that should have comments, are project messages.

Signup with code (à la Notion)

Notion lets us sign in with a code.

Basically, there are no passwords, and once you enter your email address, if it exists, you receive a link by email that redirects the user to their logged account.

Indicate the competencies of an employee

Pouvoir connaitre les competences des gens: qu’un employé declare savoir être expert dans “les machines Siemens” ou “le pricing d’une cuisine” (savoir qui connait quoi)

Ability to create polls

Polls allow anyone in the company to take the pulse of the company or a specific team.

A poll is

  • a title,
  • a list of potential answers
  • a deadline.

Then, we should have polls report, available for everyone to see. Answers should be anonymous.

Add activities to team page

Teams always have some kind of recurring events (like monthly meetup, or daily scrum, etc...).
We should be able to indicate what those activities are, and display them on a calendar.

Enhancement

  • Blank state for address block on employee profile

Ability to manage physical location of employee

Hopefully one day Covid will be over and people will come back to offices.

In this case, we should be able to indicate on an employee's profile page, where we can find the employee in the company (for instance, Office 17b, 3rd floor).

Hiring date

  • Hiring date on employee page
  • Edit of hire date on employee profile
  • Hiring date anniversaries on team page
  • Hiring date anniversaries on company page
  • Hiring date when adding an employee
  • New candidates coming this week in team
  • New candidates coming this week in company
  • Statistics to know how many employees have been hired after you

Ability to add a video on employee profile

Today we support avatars on the employee profile page.

It would be great and fun to use a video instead, so employees can click on it and see the video of the employee.

Uploadcare (what we use to manage uploads) can re-encode the video for us if needed.

Ability to create account in different regions of the world

Companies all around the world have different regulations regarding data, based on where they are located.

Rules in Canada are different than those in France, China or US.

We need to have some kind of processes to allow customers to create instances in

  • US
  • Canada
  • France.

We'll add new markets as we go.

To make it happen, I propose the following:

  • when we click on the Signup button on the marketing site, we should show a page asking for which country we'd like to be located in,
  • then, when we click on a country, we are redirected on the actual app hosted in the right country, like ca.officelife.io.

Add notion of departments

A department is composed of teams.

The complete hierarchy would be

Company > Office > Department > Team > Employee.

Setup demo account

On our marketing site, we will have a link to a demo account, something like demo.officelife.io.

The demo account has always the latest release of the app.

This account should be automatically populated with fake data provided by the SetupDummyAccount command, so potential customers and users see the potential of the application.

  • Demo data should be reset every 5 minutes (so data always look accurate, and people won’t put too much crap in it)
  • Demo should be accessible with the [email protected] account

Because the SetupDummyAccount takes a lot of time to run, we should have a SQL dump of the data this script generates, and use this dump to populate the database.

Because this account will be a "special" account, we should have some limitations in it:

  • we shoudn't authorize uploading files
  • we should not send email at all
  • no payment info should be indicated in the app at all.
  • we should have a special banner at the top of the account saying "it’s a demo account".

To do this, we should have a new variable in .env that lets us control this.

Error while compiling

Hi @djaiss great project, thanks for your awesome work. trying to give it a try but i got some issues, any idea or i can fix that errors?

ERROR in ./resources/js/app.js
Module not found: Error: Can't resolve '../../public/js/langs/en.json' in '/Users/dukens/Code/officelife/resources/js'

GET https://officelife.test/nprogress/nprogress.css net::ERR_ABORTED 404 (Not Found)

Thanks 🙏

Manage timezones for dates

As of now, we don’t manage timezones in the application.

All dates are stored in UTC and displayed as such for all users.

We should change that:

  • dates should ALWAYS be stored as UTC, as it’s the case
  • users should have a default timezone (set in the instance), but should be able to change it for themselves
  • we should have some kind of helpers that convert dates to the right timezone
  • this conversion should be done in the ViewHelpers, not in the Vue file. The Vue file shouldn't have to do any conversion of some sort, ever.

See all employees on a map

We should be able to see all employees in a map.

Technically, we should absolutely use the getPartialAddress() of the Place object to make sure no one can see the exact location of employees for privacy issues.

Ability to book a time off

We should allow employees to book time off. This is what we call PTO - or Paid Time Off in the official HR world.

Each company has

  • a base number of allowed holidays per employee
  • a base number of allowed sick days per year (it can be unlimited)
  • a base number of extra off days per year

Each company also has a company calendar which indicates the days considered off for everyone.

Improve CI build times

The SetupDummyAccount command takes a lot of time. I strongly believe that we should keep testing it to make sure it works, as it will be used by all the developers that want dummy data in their accounts to test and try the product.

Also, we need it ourselves to populate our default test account that we will provide at launch.

However, it’s not efficient to run it alongisde all the other tests.

I propose the following strategy:

  • in phpunit.xml, remove the ./tests/Integration from running.
  • create another phpunit.xml that will run only the ./tests/Integration files and use it in a separate build.yml file

That will allow us to run it in parallel of all the other tests, so that would help.

What do you think @asbiin ?

Onboarding questionaire

Every new employee (added or imported) need to answer

  • a set of questions when they arrive,
  • upload some documents to comply with the company (NDA, etc...)

HR should be able to add a standard questionnaire that every employee should fill.

This should appear on their dashboard, and employees should be able to see a completion rate.

Show list of employees per position

We should be able to browse a list of employees per position.

The idea: everyone should be able to see all the positions that exist in the company. Then, for each position, we should be able to see the list of employees with this position.

Indicate who is first responder

First responders are employees who have the ability to provide basic medical help when something bad happens, while we wait for true medical professionals to arrive.

We should add the ability to indicate who is first responder on an employee profile, and find this information quickly when we are inside the application.

Login with SSO

We should be able to login using brand login

  • LDAP
  • SAML
  • Active Directory

Ability to manage OKR

OKR (Objectives and Key Results) are a fancy way of managing goals of employees each year. It was initially used by Google, and now many companies are using it.

We should support this methodology.

Ability to search a position

Employees can be assigned a position (Front end dev).

We should be able to search a position in the Universel search bar in the header. When cliking on a position, we will display the list of employees matching this position.

Linked to #672

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.