# Optimistic Engine
- sync key, lives both on store and on the SQLlite of browser
- event of update for that key
- interface for using data from db on render
- merge optmistic data with realistic data
## Modeling
### store
--------------------------------------------------
| projects |
___________________________________________________
| id | idempotency_key | created_at | updated_at |
| uuid | uuid | date | date |
--------------------------------------------------
### DB
----------------------------------------------------------------------
| projects - indexes(id, idempotency_key) |
______________________________________________________________________
| id | idempotency_key | created_at | updated_at | queue | data |
| uuid | uuid | date | date | map of map | map |
----------------------------------------------------------------------
## Tools
- dbs options
- [SQLlite](https://sqlitebrowser.org/)
- indexedDB
- [Overview](https://www.codemag.com/Article/1411041/Introduction-to-IndexedDB-The-In-Browser-Database)
- [Tutorial](https://medium.com/@AndyHaskell2013/build-a-basic-web-app-with-indexeddb-8ab4f83f8bda)
- [Documentation](https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase)
- [Compatibility](https://caniuse.com/#feat=indexeddb)
- [Google developers tutorial](https://developers.google.com/web/ilt/pwa/lab-indexeddb)
- [idb lib](https://github.com/jakearchibald/idb)