today I'll start talking about one of my personal projects Seshat. As articles related to this project will be technical, they'll be written in English instead of French (if asked I could think about having both versions but let's keep it simple for now). Sorry in advance for my poor English.
What is Seshat?
Seshat is, or rather will be, a tool to help you planning and writting your own novel inside your web browser. It's built upon 2 main pillars:
- Security: Contents will be strictly privates until the owner choose to publish them. Contents will be encrypted on client side before being sent and stored. The key will only be known by the user, even if it means that data could be lost.
- Adaptive toolbox: Writters will be able to directly write their story or they'll have a workspace to plan it: sticky notes wall, roster, places description, statistics...
To have more details about the features planned for the tool, you can have a look at the project website
Why inside a web browser?
Because it is the easiest way to create one application to rule them all! The application will use new HTML5 Manifest feature to enable offline mode (as long you loaded latest data), local storage to keep larger data and Web app declarations for mobiles. Maybe, at one point, I may create dedicated application using Xamarin now it has been offered by Microsoft but not in first version.
In order to create Seshat, I'll use my old friend playframework in version 1.4 (I tried version 2 but I prefer or I'm more used to version 1.x). Anyway, server part should be quite limited because it'll mainly have to:
- Handle users
- Store blob files which will contain the actual data encrypted
- Store public versions
I have to admit I'm not up-to-date with the latest front-end fancy frameworks so for now it's still blurry which one will be embedded. At least, since the biggest part of the application will be done on client side, I'll use for sure Jasmine for unit testing. CryptoJs is used for cryptographic methods on client's side.
The source code is hosted on my Github and will remain on it even after the release so anybody will be able to host his instance.
The initial milestone of the tool will contain:
- Basic user management module with internal user database
- Create a project / List and open existing projects
- Encrypt data and store them in back-end, decrypt them on client side
- Optional: being able to create a public version exposed to anyone
If you have any idea or wants to participate do not hesitate to join the project!