10. The Plan
1. Getting stuff from the keyboard
2. Passing it to a server
3. Storing it
4. Profit!
11.
12. The Plan
1. Getting stuff from the keyboard
2. Passing it to a server
3. Storing it
4. Profit!
13. The Plan
1. Getting stuff from the keyboard
2. Passing it to a server
3. Storing it
4. Profit!
Wait?…
14. The Plan?
1. Getting stuff from the keyboard
2. Passing it to a server
3. Storing it
4. Wait! Mobile users dont keyboard?
https://medium.engineering/why-contenteditable-is-terrible-122d8a40e480
https://ckeditor.com/blog/ContentEditable-The-Good-the-Bad-and-the-Ugly/
16. The new Plan?
1. Getting stuff from the keyboard
2. Passing it to a server
3. Storing it
4. Wait! Mobile users don’t keyboard?
5. Wait! Mobile users are offline?
18. …is there even a plan?
1. Getting stuff from the keyboard
2. Passing it to a server
3. Storing it
4. Wait! Mobile users dont keyboard?
5. Wait! Mobile users are offline?
6. Wait.. Everything is offline?
20. Trough of disillusionment
1. Getting stuff from the keyboard
2. Passing it to a server
3. Storing it
4. Wait! Mobile users dont keyboard?
5. Wait! Mobile users are offline?
6. Wait.. Everything is offline?
7. Christ, the server has to handle merging…
21. Versioning on the server?..
• Just add +1 to each documents version?
• Save every iteration of the document ever?
• Delta updates, save X many?
• Versions based on time?
https://stackoverflow.com/questions/4185105/ways-to-implement-data-versioning-in-mongodb
22. shit
1. Getting stuff from the keyboard
2. Passing it to a server
3. Storing it
4. Wait! Mobile users dont keyboard?
5. Wait! Mobile users are offline?
6. Wait.. Everything is offline?
7. Christ, the server has to handle merging…
8. Oh god, the client has to handle merging!
23. Auto merging based on time?
or
Version conflicts handled manually?
Think it works?
33. Checklist
• Encode the text right
• Use a font that supports your supported languages
• Handle text as plain text! Alternatively use a library for everything
(Basic HTML elements have the right APIs, other than that Drafts.js and
ProseMirror are great alternatives.)
• Understand that everything, everything, will have merge conflicts.
Decide how to handle them. Settings might be fine with last in over-rights.
But content needs some structure.
• Use sockets to minimise offline support. Still support offline.