Skip to content
lolloz98 edited this page Jul 30, 2024 · 1 revision

MaGrAct Wiki

Try MaGrAct here.

Code Architecture

The code architecture is quite simple. We have these main concepts:

Graphic

The graphic elements are the parts that will be rendered on screen.

These are highly reliant (if not entirely) on Konva. Thanks to this, we can easily implement more features just looking at what's already implemented in Konva and wrapping around that.

Controller

Controllers allow us to modify the state of a Graphic.

BaseState

The state of a specific Graphic (scale, position, color...). All graphics states derive from this.

StoreState

This is the central state of the entire app and it should be considered as a centralized storage. From this state, we need to be able to recreate the current snapshot of what we are doing in the tool.

The state has been built using mutative. We should make sure that modification supports the pattern followed (since we are using patches provided by mutative for undo-redo ops, we should keep the state all with immutable/supported objects).

Ticks

Time in the editor is discreet and the unit of time is a tick.

Moving Forward & contributing

I have created this tool out of curiosity, I am not quite sure about my plans for maintaing it. If it gets some traction within the community, I will probably dedicate some more time to see where it goes.

There are many, many things to be implemented some of which:

  • export animation to video
  • record audio
  • improve performance
  • improve user experience (and make more intuitive)
  • add animation options and allow more cusomizability to graphic
  • add more graphic elements

Any help or suggestion is very well accepted. That said, let's try to keep the code clean-ish.

Licensing

Under this project, everything is under MIT licensed and what is MIT licensed will remain MIT licensed. If the project moves forward, I might decide to create premium features that will not be open to the public. But as of now, no plan to do so.

Clone this wiki locally