Internal startup: how we made a product in a service company

I work for a custom development company. At the same time, we are running a lot of projects with different activity and volume of work. Every week, project managers call up to check the current state of affairs, draw up a plan for the next week, and distribute tasks among developers. When I became a team lead, participation in these meetings was added to my responsibilities.



I quickly realized that the briefings are not very effective, because there was no general and integral picture before my eyes, which of the developers is overloaded, and who, on the contrary, is idle.



We use Redmine for task management. This is a somewhat old-fashioned, but handy and time-tested free tool. A fatal flaw in our case was the lack of a clear general summary of current tasks.



Hand prototype



Project concept



It is worth clarifying right away that there is actually an opportunity to display a general summary, but only for the administrator who has access to all projects. In practice, each manager has access to only a certain slice of projects and tasks.



, , . , trello- , -.





, Redmine REST API - , . , - .



junior frontend , - , . ยซ, ยป, โ€” .



, โ€” Vue.js . , vue-cli vuex, API, . , Redmine , , .



, , , php- - 200 , . (/), .



, cURL file_get_contents(). :



$host = 'https://redmine.app';
$apiKey = '*****';
$context = stream_context_create([
    "http" => [
        "method" => "GET",
        "header" => "X-Redmine-API-Key: $apiKey"
    ]
]);

$projects = file_get_contents("$host/projects.json", false, $context);


? SPA, JSON Web Tokens? , cookie-based . POST-, , -. checkRedmineUser($login, $password), , -.



- :



$auth = base64_encode("$login:$password");
$opts = [
    "http" => [
        "method" => "GET",
        "header" => [
            "Authorization: Basic $auth"
        ],
        "ignore_errors" => true,
    ]
];

$context = stream_context_create($opts);
$response = file_get_contents("$host/users/current.json", false, $context);


API, . : MVP, .



?



โ€” , . :



First version



, , / drag-n-drop' .



, , , , โ€” . , , -, .





โ€” PM-, . , . , โ€” ?



, : ยซ ยป, , , CI/CD. - , - , : ยซ, ...ยป.



Laravel, Gitlab, issues.



(milestones Gitlab) โ€” ยซ ยป , โ€” .



, , , , . , -, HTTP API.



Gitlab-CI. โ€” .. , docker .



middleware. JSON-, โ€” DTO. (enums) โ€” spatie/enum. file_get_contents() guzzle.



. , , , . ยซ ยป โ€” -:



My tasks





, .



  1. โ€” . , , , . , ยซ MVPยป.
  2. . , , . , Unix: do one thing, and do it well.
  3. , , , . Issues , , pull request' , , , .
  4. โ€” . - , , , production. , . , . code review, .


I am happy with how it turned out, how it happened, and already collecting ideas for new projects.




All Articles