adds failing test

- refactors tests for reusability
- fixes datatype error in first test
generateSnapshot now handles create transactions
adds failing test

abstracts item to own construct for readability
generateSnapshot now handles update transactions
adds failing test

transactionKeys list reversed to conform with redis data structure
currently two tests failing
generateSnapshot now handles delete transactions

order of processing transactionKeys also flipped to conform with redis data
refactors generateSnapshot for readability

adds integration-y test for all transaction types
adds failing test
createItem handles conflicted creation transactions
adds test coverage for confliction deletion transactions

test already passes
/snapshot returns formatted snapshot of db

status function located near other exports
generateSnapshot expectes JSON as transactionv values
generateSnapshot now moves left to right to match redis

updates test
front-end now interacts in real-time

* removes skeleton console.logs
* TODO: prevent server from overwrite local changes
fixes typo squash
switches span to contentEditable

since controlled inputs are meant to fire onChange events,
the old setup results in a ton of unnecessary transactions. Every
time the user changed a letter, it was updating on the dom. If switched to
onBlur, the transactions would fire but the dom would never update.

contendEditable comes with its own quirks, as its not recommended by React.
That said, it allows for update events to only fire onBlur while also updating
the dom.

* fixes spacing issue
* adds placeholder style for items