The solution is not optimal, but it works. I was trying to use DDD, but with some compromising. To not overcomplicate the solution, I decided to use the same model for both the domain and the application. I also decided to use the same model for both the input and the output. I think that the solution is still clean and easy to understand.
It is not realy easy to add new features, but it is easy to change the existing ones. I think that the solution is good enough for the given task.
Also I added deployment to github pages. You can see the result here: https://ageorgy.github.io/blast/