📜 ⬆️ ⬇️

Greentask - a free service to quickly create tasks and facilitate the work with freelancers

I want to bring to your attention a free service that should be useful to everyone who deals with freelancers.
Meet - Greentask
In short, it is a tool for creating and managing tasks with advanced functions. A small spoiler - a service written in Go.

About service


This service has many uses, but for the beginning we will draw an analogy.
Surely everyone knows the services of the rapid exchange of screenshots such as Joxi. Another analogy is a variety of pastebin'y for quick exchange of pieces of code. Greentask can act as a quick job exchange service, but with much more advanced features, which are described below.


History of creation


Initially, I wanted to make a very simple service so that it would not take a long time, as it often happens. In the process of work, new ideas appeared, and some of them could not be abandoned. As a result, a list of functions was developed, and it was firmly decided not to succumb to the temptation to add something else. Everything else - in backlog.

I have experience with remote employees and freelancers, and each time when searching and working the same problems arise:
')

Below we analyze each of these problems separately. But in order for a new project to be born to realize these problems is not enough, it is necessary that other conditions arise. And they have developed. I started developing a prototype and backend in the summer of the 15th year, when there was enough free money and time for this, as well as a burning desire to try out this idea on the basis of a new technology for me. By this time, I had long been eyeing the Go programming language, and now when I had the idea of ​​a new project in my head, there was no reason not to start development. As you know, the best way to learn a new programming language is to write something real and more complicated on it than “Hello world!”. Resolved - done. He worked mainly on weekends, he could have done much less time on full time, but there was no such task. Below I will tell you more about my impressions when working with Go and what advantages it has given in this project.

Problems


Let's analyze the above problems in more detail, as well as the approaches that Greentask uses to solve them.

Communication channel


Imagine that you have a task, but no performer. You publish an ad on several free-lance exchanges, and are waiting for a response. Stop. And where are you waiting for an answer? As a rule, on several channels. Someone will write through the private messages of the exchange itself, someone by mail, someone on skype, someone even on icq. But you don’t have ICQ for many years now. It's good that there is skype, but there are a lot of contacts left without it since the publication of the last task. The result is spaghetti from different channels. Familiar?
Greentask proposes to bring all communication into the task itself. All you need to do on the freelance exchange - leave a link to the task in place of the text of the task itself. Reference type: greentask.in/your_task_hash. For particularly stubborn, you can leave the text under the link: “Write suggestions and questions strictly on the task page”. After all, the browser that is, for everyone.

Job delivery


In case you use skype or other messengers, the first one that the candidate asks is: “Tell the task in more detail”, and then options are possible. You can copy a task to everyone, or somehow transfer the “Word” file that needs to be opened locally. Then all the same there will be questions that will refer to different sections of the task, and you will have to jump back and forth to find the right item and then answer in skype.
Greentask solves the problem of transferring a completed task simply by opening the link in the browser, you do not need to download anything, and questions for each item of the task can be asked directly under it. Each online task visitor is marked with a circle at the top right, so you can estimate the number of people studying your task.

Job structure


As you know, a correctly formulated and executed task has already been completed by 50%. Greentask helps you to build the structure of the job, understandable to the performer. For this, the performers themselves will thank you. And if you're a freelancer, then it makes sense to recommend greentask to your customers, for mutual simplification of work. It is important to note here that the fact that the service itself does not exclude the possibility of writing a TK for something, and is not an exclusive tool for this, but it helps to make fewer mistakes, that's all. Although this is not enough.

Change job in the process


It often happens that after the executor’s familiarization with the task, a change in the TOR is required. And it would be good if he found out about it. And even better, to see what has changed. For this, in general, you will have to report separately about this. And this is not convenient, but if there are several performers (candidates), then it is even more inconvenient.
Greentask will send notifications of all changes to all participants, with a link to the page where the visual comparison of the version of the task is implemented: the version that the executor saw the last time and the latest version of the task. This will save unnecessary questions such as “What has changed since that time?”

Why is the service free?


Initially, I saw this service free for everyone, and it’s also a kind of experimental project. In the future, the project promises to remain free for all.

Chrome extension


Especially for greentask developed Chrome extension for ease of access to jobs, as well as the rapid receipt of information about changes in the tasks. The functionality is very simple and, I hope, clear.

mobile version



The site is optimized for viewing in mobile devices, and multiple elements from Material create an almost native look and feel =)

Little about go


About Go has already been written enough, so I will tell only what advantages the language has given in this project, without spreading out philosophical thoughts. Just to say that Go, in my opinion, is a language for practitioners who want to quickly implement reliable functionality, and for which it does not matter whether there are generics or garbage collection. These people write programs that just work.

Static Binary


I myself am a backend and love and know the front-end a little more than nothing. Although I have enough provision, about how best to adjust the backend under the front. So I had to look for an artist. And how can the performer raise the backend locally? In the case of Go, there are 2 commands: running migrations to create tables in sqlite, and actually launching a web server. Everything. In addition, there is no need to transfer the source as in the case of python / ruby ​​/ php / ... About the deploy and say nothing, it's really simple.

Distribution of statics and the absence of Nginx


In greentask, you can download attachments to the items of the task, and the task can be private, that is, inaccessible publicly. In this case, the investment should not be publicly available either. In the case of the usual scheme of distributing statics via Nginx, one would have to resort to various non-trivial ways to configure Nginx to control access rights to statics. In greentask, this logic is inside the application.
Nginx or another web server is not used at all. Compression and ssl termination occur in the application.

Asynchronous tasks


Not all tasks are executed instantly, so it’s advisable to run them asynchronously. In django, this would require celery or an analog, that is, a separate process. In go, everything works in a single process and is run in code through the go operator. Very simple and beautiful. I use for asynchronous sending mail.

Web sockets


Due to the presence of built-in mechanisms for asynchronous work and ready-made libraries, the implementation of web sockets is not a big deal. In greentask, I use them to display online users and procedures for updating data on the page when changing. Therefore, the open task page always displays actual data without reloading, be it a comment, a change in the text, or an attachment download by the performer. As a bonus, you will not receive a notification email about a new comment and a task change if you are online, because you will see it anyway.

Scheduled Tasks


Similar to asynchronous tasks, this is also implemented in a single process (instead of celery / celerybeat)

Generating API documentation for swagger


This is not an exclusive feature and not a Go feature at all, just a nice feature in the Beego web framework on which the project is built.

If the community shows interest, then I could tell in more detail about the intricacies of implementing some of the functions of the service with specific code examples.

Plans


Plans for the further development of the service largely depend on the wishes of users, so please, if you are interested in the project, leave a comment.
From what I would like to implement:


PS


I want to note that Greentask can be used not for its intended purpose - to create and discuss tasks. For example, you can:

Source: https://habr.com/ru/post/279871/


All Articles