# 2020-01-11 CoBox <-> Ahau Integration 5
**Previous meetings:**
- [meeting 1](/_0z3hbA9R3y4kdIP2rAlCw)
- [meeting 2](/a8lPz7OxT2G-FDiwuYJAlA)
- [meeting 3](/j5ozmSIxQE-48LhY2BUYmg)
- [meeting 4](/XGR4-JbMTeCjXCE8iWnMcw)
[**Module code on gitlab**](https://gitlab.com/coboxcoop/artifact-store)
## Agenda
- current state:
- humans!
- code
- hours
- invoicing
- next steps
## Current state
Hours/ budget
- $5k NZD, hourly rate $80 NZD/hr
- 15 hours a week * ~3 weeks
- ~3 * 15 * 80 = 3600
Next steps (from last time):
- [x] mu and peg to continue development - getting the DHT networking part working, and writing tests for the clear method
- [x] wrote tests for clearing (check storage before + after)
- [x] networking DHT part
- [x] worked on connecting to peers from last time
- persisting state not necessary but speeds things up a lot
- [x] connection management
- avoid making new connections unless needed
- [ ] some optimisations may need close attention
- [~] mix (optionally) to try using this in an electron app: https://www.npmjs.com/package/render-media
- [~] open question about sending drive addresses to pataka - current proposal - this is handled on the SSB side - with RPC on connect (mix’s to look at this)
## What functionality exists now
- Each file is encrypted with a given encryption key
- Part of a file can be retrieved, and the encryption stream offset behaves appropriately
- Individual files can be removed locally
- The amount of local storage space used by a particular peer can be displayed.
- On restarting the application, previously known peers are connected to automatically, reducing the time taken to download files from them (as the connection is already established and ready).
- Optimised to resolve DHT lookups quickly.
- Sparse replication
- all documented
- refactored to use async/ await
## Remaining TODOS
- [x] pataka (mu to have a go)
- [x] simpler, non-sparse version for running on Pataka
- [x] a method for registering a drive to replicate
- [ ] write documentation for pataka
- [ ] write tests for pataka
- [ ] figure out how to communicate the existence of a new 'user' to pataka
- [x] error handling of `createWriteStream` (mu)
- [x] `encrypt.test.js` is incomplete
- [x] update `example.js`
- [x] refactor `networker.configure`, to speed up tests
- [x] add a test to show that `loadDrives` works correctly (mu)
- [x] DHT bootstrap nodes - add option for custom nodes
- [x] provide a way of knowing when a drive has 'updated' after writing a file (either by emitting an event, or having a method which returns a promise)
- [x] method to get the size of a given file in a given drive
- [x] write test for fileSize
- [ ] write test for driveSize
- [ ] change to using sodium 3
- [ ] use Standard linter
- [ ] publish to npm (and generally sort out our package.json beforehand)
**Nice to haves**
- [ ] tests - could have a `streamToString` function to DRY up
- [ ] `toString` / `tobuffer` helper functions
**Next module**
- [ ] media server module
- `<video>` tag can request a range and this module figures out how to stream that ... decrypted
## Minimal test
1. write a demo.js app
- actions:
- add a file on computer A
- view it on computer B
- try with:
- .txt
- .mp4 file (large)
2. seeking behaviour to stream media
- actions:
- computer A adds a large video
- compyter B starts watching video as they receive it.
- possible code:
- render-media module for front end
https://gitlab.com/coboxcoop/try-render-media
- backend? perhaps an express server connected to artifactStore
https://gitlab.com/coboxcoop/encrypt-files/-/blob/master/streamVideo.js
## Next steps:
- ahau team test module - at least min test 1
- mu + peg to complete things in todos
- either to start min test 2: communicate if so
- track time
- report state at next meeting / if close to 5K
- future: discuss infrastructure dependencies if e.g. Hyper* goes down
## [Next meeting NZDT Tuesday 19th 8pm // CET Tuesday 19th 8am](https://www.worldtimebuddy.com/?qm=1&lid=2879139,2179537,8&h=2879139&date=2021-2-2&sln=8-9&hf=0)
pencilled in!