Cool submission! I think most of the key feedback has already been covered by others, so I won't repeat it. That said, this is a really solid foundation, and there are a lot of interesting directions you could take it from here.