Giter Club home page Giter Club logo

lorenzpfei / capacity-planning-backend Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 1.0 168 KB

The application presented here is designed to tackle the challenge of capacity planning within software development teams. It reduces the workload for planning staff, providing a clear overview of different departments' capacities. The solution is flexible, ready for extensions and adaptability to other systems such as Scrum.

License: MIT License

PHP 87.94% JavaScript 0.18% Blade 11.88%
capacity-planning laravel php rest

capacity-planning-backend's Introduction

Capacity planning backend for teams in software development

The application presented here is designed to tackle the challenge of capacity planning within software development teams. It reduces the workload for planning staff, providing a clear overview of different departments' capacities. The solution is flexible, ready for extensions and adaptable to other systems such as Scrum.

There is also a frontend which was developed for this calculation software. You can find it here: capacity-planning-frontend

Laravel

This Laravel application calculates the capacities of teams in software development and makes them available via REST. For login, oAuth via Socialite is used. This is also used to integrate task and time tracking system providers.

Authentication

The authentication is done via Sanctum. Authentication via OAuth is then available via the web route. If a user opens this route, they are redirected to the selected platform. After login, the provider redirects to the callback address, where Laravel then verifies the success of the login, sets the session accordingly, and uses it to log the person in.

The session is issued to a wildcard URL. Thus, the session can be accessed from the same domain, all directories and all subdomains. Separation of the domain between front-end and back-end is thus not natively possible.

Providers

In the application, the strategy pattern was implemented. The user requests the capacities for a department via the API. The WorkloadService then communicates with the provider set via the Environment file, which are specified via the respective interfaces. The concrete provider classes can be exchanged as desired and the WorkloadService can continue to perform correct calculations without adaptation. To add a new provider for tasks or tracking, create a new class in the corresponding directory in /app/Services/ and implement the interface.

Getting started

  1. Start your mariadb database.
  2. Create your Environment File cp .env.example .env and configure your data.
  3. Install all project dependencies via composer install.
  4. Run the database migrations php artisan migrate.
  5. Have users register by logging in through the oAuth endpoint.
  6. Import the tasks of the users by running php artisan import:tasks [userId]. If the tracking data can not be imported directly via the tasks provider, import the tracking data by running php artisan import:trackings.
  7. After that, import the time offs (vacation, sickness...) running php artisan import:timeoffs.
  8. Start the app running php artisan serve or deploy your app (Probably you have to overwrite bootstrap/cache/config.php again in production).

Development

If you want to contribute to the project, you are welcome to do so. Known suggestions for improvement or bugs can be found in Issues.

capacity-planning-backend's People

Contributors

aghaseyed avatar dependabot[bot] avatar lorenzpfei avatar

Watchers

 avatar  avatar

Forkers

aghaseyed

capacity-planning-backend's Issues

Maximum workload by comfortability

An option could be implemented that lets the user choose how comfortable the person feels. Based on the well-being, the maximum workload per day could then be adjusted. In addition, the well-being could be reported to superiors.

Complete documentation about Sanctum

Hello,

I'm not familiar with PHP environment and I don't understand how to pass the step
5 - Have users register by logging in through the oAuth endpoint.

Could you add informations in the readme ?

Changing contract in selected period

If a new contract comes into force during a period to be calculated, it will not be used at the moment. Only one active contract in the period is used as a basis for all calculations. For more accuracy, the contract should be determined for each working day.

Permissions

A permission system should be implemented which makes it possible that not every user can see everything

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.