67 lines
2.8 KiB
Markdown
67 lines
2.8 KiB
Markdown
# stillbox
|
|
|
|
*"When they say stillbox, you know it's real."*
|
|
|
|
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:
|
|
|
|
- [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
|
|
|
|
This is not a feature I need personally, but would be simple to implement as another [source](pkg/sources/).
|
|
|
|
- [x] Only supports Postgres DB right now. May add SQLite someday.
|
|
|
|
Most all database access is abstracted using a repository architecture. The calls table is also partitioned, with configurable intervals and retention.
|
|
|
|
- [x] Filter calls by duration in search
|
|
|
|
This feature was a major impetus for even starting the project.
|
|
|
|
- [x] Both REST and WebSocket APIs
|
|
|
|
REST is used for the admin interface, and WebSockets/protobuf are used for listener apps, including *Calls* (both Flutter and terminal versions).
|
|
|
|
- [x] Uses protobuf instead of JSON for the WebSocket API (no slices of integers for call audio!)
|
|
|
|
Another thing that originally spawned the project.
|
|
|
|
- [x] Talkgroup activity alerting
|
|
|
|
We use [go-trending](https://github.com/andygrunwald/go-trending) to implement this.
|
|
|
|
- [x] "Native" flutter client (Calls) for Android/iOS/macOS/Linux/Windows (in progress)
|
|
|
|
This client, as of this writing, works for listening linearly only. More functionality to come. Currently available [here](https://github.com/amigan/calls).
|
|
|
|
- [x] RadioReference talkgroup import, SDRtrunk talkgroup playlist export
|
|
|
|
Just copy and paste from RadioReference. You can also have your talkgroup labels in SDRtrunk!
|
|
|
|
- [x] Incidents functionality (group past calls together and retain them)
|
|
|
|
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.
|
|
|
|
- [x] 3-clause BSD license
|
|
|
|
But that doesn't mean I don't want your improvements so that I may incorporate them!
|
|
|
|
## Note
|
|
|
|
If this message is still here, the database schema *initial migration* and protobuf definitions are **still subject to change**.
|
|
|
|
Once `stillbox` is actually usable (but not necessarily feature-complete), I will remove this note, and start using DB migrations and
|
|
protobuf best practices (i.e. not changing field numbers).
|
|
|
|
## License and Copyright
|
|
|
|
© 2024, Daniel Ponte <dan AT dynatron DOT me>. Licensed under the 3-clause BSD license. See LICENSE for details.
|