switch to tap for firehose sync, fix vote race condition
- replace jetstream.zig/backfill.zig with tap integration
- use putRecord to update votes instead of delete+create
(avoids race condition with out-of-order firehose events)
- add upsert logic in db.insertVote with timestamp comparison
- handle "update" action in tap consumer
- reorganize docs into docs/ directory
- simplify frontend voting flow
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>