Traditional non-alcoholic hackathon in Sibiriks: writing free HelpDesk

    Traditionally, we take a small project to the hackathon. Which would be of practical use. So, with a snap, we have already done:
    • Huizhn - a service for demonstrating to customers the layouts with storage in Google Docs. It was fun.
    • Planing Poker is an old but still pretty-visited project.
    • KeyRights is a corporate password. Perhaps the only project with a hackathon, which they decided to make paid.



    This time we decided to encroach on the sacred - write HelpDesk. Absolutely free, open source, insanely simple, put on one or two. We draw the design, layout. All this a week before. We are going to Sunday at 10 am in the office. We buy energy, and away we go!

    Technology stack


    Each hackathon we use some technology that has not previously been used on combat projects. It’s not enough just to read or listen to them at conferences. Be sure to touch your hands - before finally becoming disappointed. Last time it was Angular (from which then they spat 3 more months).
    This time we chose React.js. We eventually fell in love with him and continued to use it on some client projects. The server part has traditionally been made on Node.js and MongoDB.

    Our favorite rake


    The traditional hackathon rake that has already become for us, which we (possibly) will defeat the next time:
    • At the time of launch, none of the developers have a working environment configured. The setting ate almost a couple of hours of precious hackathon time. Morality: Node.js, MongDB and all sorts of gulp are best configured in advance.
    • Our ignorance of key technology and its limitations. On the one hand, we spent a lot of time on simple things in React.js. On the other hand, it is precisely in order to try the technology in practice that we conduct hackathons. We won’t change anything here. Everything went much smoother than with Angular.
    • No TK. Rather, we had a short backlog with a list of Wishlist, written in 30 minutes. But most of what we wanted to do was come up almost on the go.


    What can HelpDesk




    First of all, we wrote HelpDesk to service our projects. We needed a minimum of functions: ticket submission form, ticket list. We made all the settings to the configuration file. A single HelpDesk installation can be configured on multiple domains. One domain - one project. Access is divided into user and administrative. The administrator sees all tickets in the projects assigned to him. The users themselves enter the system simply by creating a ticket (the password comes immediately to them via e-mail).



    On the main page of the project you can attach useful documents and background information.
    We envisaged the work of HelpDesk not only through the web-interface, but also via email (you can reply to tickets directly from the mail, receive notifications, etc.). We made uploading files to tickets (including those from the mail attachments). The list of tickets and the tickets themselves are updated via web sockets by push.



    Statuses, tinting activity and expired tickets, sorting, lazy loading ... Everything works very smartly, it looks nice. In my opinion, it turned out very well, considering that this is in one sitting.

    Meanwhile, in the office


    • Pizza. Rolls. Energetics. Juices. Mandatory attribute, yes.
    • The hackathon ends when no one has the strength to think. Usually at 12 a.m. We are going to a bunch. We carry out a short retrospective.
    • According to the results of the retrospective, we understand that approximately 30% of the tasks are not completed before the release of the product. We decide what to do: put off for a week or sleep off and finish off everything in a day during working hours. We decided to sleep off and lean on the whole crowd during working hours. That was the right decision.



    Test operation


    Immediately launch HelpDesk to support users of our products. We get live feedback. Fixim bugs. Polish. Fill it on GitHub.


    Where to get, how to put


    The script itself lives in a github https://github.com/SibirixScrum/HelpDesk .
    You can try it in action here http://helpdeskdemo.sibirix.ru/ (just not all at once and without fanaticism - the server is weak)!

    Requirements


    mongodb 3.0
    node.js
    


    Installation


    mkdir helpdesk
    cd ./helpdesk
    git clone https://github.com/SibirixScrum/HelpDesk.git ./
    или
    svn co https://github.com/SibirixScrum/HelpDesk/trunk/ ./
    npm i
    


    Customization


    cd ./config
    cp ./config.example.js ./config.js
    mcedit ./config.js
    


    Key Options


    • connectString: 'mongodb: // localhost / helpdesk' - the base in mongo. It will be created at the first start, if it does not already exist.
    • exports.projects - project settings.
    • responsible: 'tester@example.com' mail of the project administrator. An account is created automatically. The password is sent to the mail.
    • exports.socketIo: 'SECRETKEY' - secret key for encrypting cookies.
    • exports.session.secret: 'SECRETKEY' - secret key for session encryption.


    Launch


    node app.js
    


    Results and Respects


    In the characters:
    • Alexei. I drew a clean and easy to use interface, and very quickly.
    • Vanya, Dionysius, Dan, Sasha, Lech - made up and programmed all this beauty.
    • Tatyana. Found all the bugs.
    • Helena. Exploits the project on the battle, supporting users.
    • Katia. It reassured users who wanted to send us a bug, but could not do it because of a bug in HelpDesk :)
    • Vladik. He was the talisman of this hackathon.

    We liked React.js, and we decided to use it in some commercial projects.

    Also popular now: