This article will constantly be updated.
When I used etherpad the first time, I was really amazed of this tool and the websocket technology.
I like to organise me with boards and todo lists, so I saw a benefit in a todo list in the style of ehterpad.
Backend git repository: ether_todo_service
Frontend git repository: ether_todo_webui
- Everyone can create todo lists with out a registration or login.
- Everyone on the url can read and edit the todo list. (Maybe later there will be a readonly mode)
- It is possible to chat with other people on the given url.
- If a todo list was not edited in a given time it will be deleted.
- If someone create a new todo list with the same name like an existance, the existance todo list will be overriden.
- Written text will be like etherpad marked with the color of user.
- Todo tasks are colored in the color of the responsible user.
Current status of the project:
Creation of the list in possible in backend and frontend.
Currently I am at the implementing on the todo list description, my first usage with websocket, so it needs a bit more time.
After the todo list description is working, I will implement the creation of todo tasks.
I wanted to try out a few technologies, mainly golang and websockets.
The most time, I used for trying out golang libraries and tools.
Also I wanted to implemented an application with the onion architecture, so I decide to use this architecture for the service.
My knowledge about web application development was are a bit outdated, so I want to use one of the three big web frameworks. (I decide to use vuejs).
Furthermore, I want to use CSS flexbox and maybe I will find some other interesting stuff.
As I said, the backend is already implemented in golang, after try out a lot of web frameworks and libraries, I decide to use echo.
Echo has a few very good features like centralized error handling, auto tls, logger middleware and of course websocket support.
I found httpexpect to write integration tests which use the rest API, so my integration tests are implemented with httpexpect.
I like and use daily dependency injection, so I was looking for a solution in go.
First I found fx, since uber has published many go libraries and has a good style guide I would definitely try it out.
However, I also wanted to try wire.
I was so amazed from the usage and that there are no runtime operations that I decide to use it.
To save my data I am usual using an ORM, so I was looking for an orm for go and found gorm.
Since I was not so convinced I have searched for alternatives, I tried a lot of libraries and standard functionalities.
In my opinon sqlc is very interesting, but I dont want to write queries for simple CRUD.
Thats why I decided to use gorm after all, maybe I will replace gorm with another solution.
The components of my application are loosely coupled, so the replacing of components does not require so much work.
The web frontend is a single page application implemented in vuejs.
Next I will use an input validation for vue, there a few existence libraries.