2024-01-15 11:36:35 -05:00
# stillbox
2024-12-27 16:44:38 -05:00
*"When they say stillbox, you know it's real."*
2024-12-27 14:38:27 -05:00
A Golang scanner call server and Angular frontend. Basically a rewrite of [rdio-scanner ](https://github.com/chuot/rdio-scanner )
with a cleaner *backend* (not frontend, so far; I am not a frontend guy and it shows) and a more opinionated featureset.
Primary differences:
2024-12-27 16:49:50 -05:00
2024-12-27 17:02:48 -05:00
- [x] Backend written as if Go is actually a typed language
I never would have started this project if existing projects were this way, as modifying them would have been far easier.
- [x] No directory watch source, for now
2024-12-27 16:49:50 -05:00
2024-12-27 17:02:48 -05:00
This is not a feature I need personally, but would be simple to implement as another [source ](pkg/sources/ ).
2024-12-27 16:49:50 -05:00
- [x] Only supports Postgres DB right now. May add SQLite someday.
2024-12-27 17:02:48 -05:00
Most all database access is abstracted using a repository architecture. The calls table is also partitioned, with configurable intervals and retention.
2024-12-27 16:49:50 -05:00
- [x] Filter calls by duration in search
2024-12-27 17:02:48 -05:00
This feature was a major impetus for even starting the project.
2024-12-27 16:49:50 -05:00
- [x] Both REST and WebSocket APIs
2024-12-27 17:02:48 -05:00
REST is used for the admin interface, and WebSockets/protobuf are used for listener apps, including *Calls* (both Flutter and terminal versions).
2024-12-27 16:49:50 -05:00
- [x] Uses protobuf instead of JSON for the WebSocket API (no slices of integers for call audio!)
2024-12-27 17:02:48 -05:00
Another thing that originally spawned the project.
2024-12-27 16:49:50 -05:00
- [x] Talkgroup activity alerting
2024-12-27 17:02:48 -05:00
2024-12-27 17:14:55 -05:00
We use [go-trending ](https://github.com/codesuki/go-trending ) to implement this.
2024-12-27 17:02:48 -05:00
2024-12-27 16:49:50 -05:00
- [x] "Native" flutter client (Calls) for Android/iOS/macOS/Linux/Windows (in progress)
2024-12-27 17:02:48 -05:00
This client, as of this writing, works for listening linearly only. More functionality to come. Currently available [here ](https://github.com/amigan/calls ).
2024-12-27 16:49:50 -05:00
- [x] RadioReference talkgroup import, SDRtrunk talkgroup playlist export
2024-12-27 17:02:48 -05:00
Just copy and paste from RadioReference. You can also have your talkgroup labels in SDRtrunk!
2024-12-27 16:49:50 -05:00
- [x] Incidents functionality (group past calls together and retain them)
2024-12-27 17:02:48 -05:00
Keep track of interesting past calls and link them to your friends. Calls linked to an incident are even swept away before retention pruning is done!
- [x] No premiumization nags or advertising of any kind
Another thing that drove me to start this project. It's either open source, or it isn't, folks.
2024-12-27 16:49:50 -05:00
- [x] 3-clause BSD license
2024-12-27 17:02:48 -05:00
But that doesn't mean I don't want your improvements so that I may incorporate them!
2024-12-27 16:49:50 -05:00
## Note
2024-08-05 14:42:38 -04:00
If this message is still here, the database schema *initial migration* and protobuf definitions are **still subject to change** .
2024-11-03 07:19:03 -05:00
Once `stillbox` is actually usable (but not necessarily feature-complete), I will remove this note, and start using DB migrations and
2024-08-05 14:42:38 -04:00
protobuf best practices (i.e. not changing field numbers).
2024-12-27 16:44:38 -05:00
2024-12-27 16:49:50 -05:00
## License and Copyright
2024-12-27 16:44:38 -05:00
2024-12-27 17:14:55 -05:00
© 2024, Daniel Ponte < dan AT dynatron DOT me >
Licensed under the 3-clause BSD license. See LICENSE for details.
## Credits
Thanks to, among others:
* rdio-scanner for the original inspiration
* [go-trending ](https://github.com/codesuki/go-trending ) and [go-time-series ](https://github.com/codesuki/go-time-series )
* [isoweek ](https://github.com/snabb/isoweek )
* [minimp3 ](https://github.com/tosone/minimp3 )