a BitTorrent client for the purposes of learning Go.
- Some files are not being parsed correctly. We need to test parser on a larger set of .torrent files.
- Support UDP trackers
- Handshake message needs to be sent.
- All other messages need to be sent/received through a state machine.
- Need to design concurrent goroutines for handling clients.
- Need to write pieces to a memory mapped file.
- If some files are finished but others are not, the finished files should be fully accessible on the filesystem.
- Unfinished files should end in .part extension
- Store file/transfer metadata in a central database. sqlite?
- Explore whether to use an ORM.
- Should there be a separate config/settings file?
- Start a background daemon that can download and upload files
- Commands
- Start
- Pause
- Delete
- List
- Should this be REST or WebSocket based?
- React-based UI
- Webpack
- es6 with Babel
- Browser notifications
- d3 Visualizations