You cannot 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. 12 months ago
api Housekeeping 12 months ago
custom fix: set proper error message. 12 months ago
db Concurency, file locations, and some other stuff 12 months ago
public Created api route for non-ui searches. Some type changes to align with using generics for /api/search route 12 months ago
types Clean up and documentation. Separating things out to other files as needed 12 months ago
views fix yts return and make small template change 12 months ago
.gitignore Babys first makefile 12 months ago
LICENSE Add license 12 months ago
Makefile Stuff 12 months ago
go.mod Babys first makefile 12 months ago
go.sum read .env file to define port, other stuff too, later, probably 12 months ago
main.go Housekeeping 12 months ago Stuff 12 months 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