You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FrailLeaf c1f226f1c0 fix: set proper error message. 2 weeks ago
api Housekeeping 2 weeks ago
custom fix: set proper error message. 2 weeks ago
db Concurency, file locations, and some other stuff 2 weeks ago
public Created api route for non-ui searches. Some type changes to align with using generics for /api/search route 2 weeks ago
types Clean up and documentation. Separating things out to other files as needed 2 weeks ago
views fix yts return and make small template change 2 weeks ago
.gitignore Babys first makefile 2 weeks ago
LICENSE Add license 3 weeks ago
Makefile Stuff 2 weeks ago
go.mod Babys first makefile 2 weeks ago
go.sum read .env file to define port, other stuff too, later, probably 2 weeks ago
main.go Housekeeping 2 weeks ago Stuff 2 weeks ago


watershed is an application similar to Sonarr, however it is written in Go.

Build and run

First create a .env and enter PORT=:2255 or whatever your desired port is. If no .env is found the application will default to port 3000.

To install run make and this will download all deps in go.mod then run sudo make install and it will place the watershed binary in your /usr/local/bin directory.

Additional files will be "installed" to /usr/local/share/watershed

Tests and test coverage

Run make test and make test_coverage


sudo make clean or whatever the windows equivalent is

Watershed usage

Once the application is running you can go to http://localhost:whatever/ and you will see the index page. You may now search using,, or Lime torrents.


You can run curl -X GET "http://localhost:<whatever>/search?media=zoombies&feed=limetorrents&limit=5" | jq '.' to return a JSON object with results from that specific tracker.

Additionally right now you can run curl -X GET "http://localhost:<whatever>/scan?feed=rarbg" | jq '.' this will get the current rarbg RSS feed and return it as a JSON object -- it will also write results to a SQLite DB (reason for this to be implemented later)

"Fuck it, I'll rewrite it in Go" -- Greg Bulon one evening while not angry at javascript at all