Clément Barbaza  Now  About  Posts  Uses

How I manage my projects on Github

To optimize my project management for internal projects, I created "Projets", an interface to manage my active projects on Github.

Github is my unique service to host the code of my projects, and I use Github too to manage my projects using issues and milestones. I really love Github interface, but I wanted specific views to display information about my active projects. These new interfaces will help me to optimize my project management (and obviously increase my productivity).

Interface

I just needed 3 new view specifics of my needs:

Home

Repository

Milestones

So, I made these simple interfaces using Bootstrap 4.

Technical side

I use PHP language with my starter kit Icarus Slim on this project. Icarus Slim is a starter kit for Slim framework I created to make and deploy fast and simple web applications.

I don't use the classic MySQL database on this project. I just use json files to save my repositories (and other information).

I created a json file with the repositories I wanted to display in my web application, containing:

{
    "websites": {
        "cba85": [
            "clementbarbaza",
            "appstraction",
            "coolcolors",
            ...
    ]},
    "applications": {
        "cba85":[
            "compta",
            "projets",
            ...
    ]},
    ...
}

I wanted to customized issues labels to display specific colors and emoji for each label.
So, I created another json file containing the issue labels I use and I want to customize:

{
    "bug": {
        "name": "Bug",
        "color": "#ee0701",
        "icon": "🐛"
        },
    "enhancement": {
        "name": "Enhancement",
        "color": "#84b6eb",
        "icon": "❇️"
        },
        ...
}

Tips

If you need a very simple database using PHP, use json files:

$json = file_get_contents('projects.json');
$data = json_decode($json, true);

Github API

To grab the information I need about my projects, I use Github API.

But I made a lot of API requests on the homepage listing all the projects, and on the milestone page, so these pages were slow to display.

So I decided to just call the Github API to get the new information once a day. To do that, I created a _last_github_api_call file containing the date of the last Github API update.
If the date contained in this file is not today, I call Github API and save all the information in a file, one per project, and update the _last_github_api_call file. If the date is the same, I don't call Github API, I use instead the information stocked in these "cache" files.

Application

I use Icarus Electron to convert my website into an app.
Icarus Electron is a starter kit to create a web view of a website in a desktop app.

I use this website on my computer only. It's a local website, hosted on my computer. I use a specific domain name to access this website: projects.test.

I now have a "Projets" app in my computer dedicated to manage my active projects.


I tried to show you the main features of this project I made to better manage my projects. I tried to describe the best I can the technical tips I use on this project to do something simple and fast.