Jackett is looking for developers

Created on 13 Apr 2020  路  37Comments  路  Source: Jackett/Jackett

If you, or someone you know has experience in one of the following technologies, we'd love your help. Please use this ticket to let us know how you can help, and we'll direct you to the right people to get you pointed in the right direction to make this project the best it can be.

  • C# development
  • Web scraping with CSS Selectors
  • Web UI/UX. We're looking to do a complete overhaul of the existing UI, so the technology your skilled in is pretty flexible. Our current team has preference/experience in:

    • ASP.Net, C#, or similar

    • NPM, TypeScript, React, Redux, Ant

  • Azure with pipelines
  • Private tracker members for testing changes
  • And possibly more
Help wanted Ongoing

Most helpful comment

For those interested in the WebUI. The current UI is written in JS / HTML / CSS and it does the job. The problem is that the code is very difficult to maintain for several reasons: The HTML code is mixed with the JS code in the same file. Old technologies like jQuery and Bootstrap 3 are used. It does not have a dependency control system. And it has no tests.

Instead of fixing the open bugs I have decided to make a new UI from scratch. I am using modern architecture, language and frameworks. NPM + Typescript + React + Redux + Ant design. It's really similar to the stack used by Sonarr v3 and Radarr. At the moment I am trying to organize the code well to serve as reference and implementing the current functionality of the Jackett UI.

What is done so far:

  • Technologies, architecture, construction system and code base are defined and working.
  • Global storage (Redux) and routing is configured and working.
  • The calls/interface to the configuration, indexers and search APIs are implemented.
  • Search functionality and settings are working (although incomplete).
  • I have made a small modification in the Jackett server so that it serves the two UIs, the old and the new at the same time, you can choose. By default it is still the old one so that users do not notice anything.

As for now I am alone I have not thought much about the organization and the roadmap, but it could be something like this:

  • Release an initial version with the current code. I have to clean the code a bit because I have been playing with many technologies. This code will be available in a branch but will not be merged to master yet.
  • Add the missing functionality to have the same functionality as the old UI. Add tests, unit tests and integration tests (we already have Selenium integrated in Azure pipelines). We continue working in the development branch until everything works.
  • Change the Azure pipeline to build the front, run unit/integration tests in each PR and release.
  • Merge the changes in master and make the two UIs available. By default it will be the new UI and we will display a message in the old UI to indicate that it is deprecated. By means of a button it will be possible to switch between versions in case any user finds a serious bug.
  • We begin to add new functionalities (open issues) and fix new bugs that users report.
  • In a couple of months after the release, if there are not many issues the old UI is completely removed.
  • We make changes to the APIs to include more features in the front. I have tons of ideas: multi user (with different roles, admin / regular user), stats page (with number of requests, most searched terms ...), more configurations, developer dashboard (like an advanced search to help in developing / testing), show more information about the trackers (user ratio, tokens, active uploads / downloads, invites available ...), groups of indexers, predefined search filters, group search results by infohash, dark theme, internationalization, more responsive UI for mobile ....

I need time to release the initial version (a week or two). If someone is interested I can open a PR with the code in the current state in case you want to take a look. After it is released I will open an issue with a TODOs list for anyone who wants to collaborate and for keeping the current state.

We will also need help with UX / UI. The truth is that we already have a logo and I am using a very nice design library that already includes a lot of components and a dark theme https://ant.design/components/button/. The help is more oriented to the usability and ordering of the components of the layout so that it is pleasant to use Jackett.

I am concerned about the long term. I will not disappear from one day to the next, but honestly I am in many projects and I don't know how much time I will be able to dedicate to Jackett in the future, after this is complete. Jackett has been without a front developer for years and I don't want that to happen again. So I ask for commitment.

image

All 37 comments

I have a few years of experience in dotnet core, I can help around with C#, JS etc...

Quite interested. Whom do I contact?

definitely interested in helping out in Javascript/React/C#, Web scraping, UI/UX

jackett has helped me out so much - this is certainly the least i could do

Thanks for your interest! There are 3 main ways C# devs can help. First, is fixing any tracker bugs that are C# only. You can find these under the Needs C# label in the issue tracker: https://github.com/Jackett/Jackett/issues?q=is%3Aopen+is%3Aissue+label%3A%22Needs+C%23%22

Second thing we need help with is updating all the tracker code so that we can better see what features are being used and find other improvements for the project. To help with this, you can go through any trackers you have an account with (all C# indexers are in this folder: https://github.com/Jackett/Jackett/tree/master/src/Jackett.Common/Indexers) and clean up their code. This includes things like bringing the older code in line with our new-ish style guidelines, updating the category lists, adding IMDB support if it's not already there (#4859), testing that the results show up correctly, including dead torrents, etc.

Resources to help you get started:

  • Our C# style guide
  • Some already cleaned indexers for reference are: HD-Space, 720pier, PassThePopcorn, TorrentLeech, HDTorrents, cinecalidad, funfile, and pretome

And the third way is by helping us improve code coverage by writing unit tests for core components. This is done using the NUnit3 library, and we'd like you to start with covering the classes in https://github.com/Jackett/Jackett/tree/master/src/Jackett.Common/Utils

If you have any questions, the best way to contact me right now is to tag me in an Issue or a PR, as I basically live on GitHub with the lockdown.

For those who want to help with the WebUI, I'll defer to @ngosang on contact and coordination.

Thank you, @cadatoiva!

I'll just add that open issues which require Web UI/UX design & development are under the Web UI label. A list of these issues can be found here:
https://github.com/Jackett/Jackett/issues?q=is%3Aopen+is%3Aissue+label%3A%22Web+UI%22

However, as @cadatoiva mentioned in his OP, we are looking to do a complete overhaul of the Web UI, so coordinating with @ngosang first is key.

Also, a wide variety of open issues is under the Enhancement label. It would be great if you're able to help resolve some of these if it fits your skill set:
https://github.com/Jackett/Jackett/issues?q=is%3Aopen+is%3Aissue+label%3AEnhancement

Thank you once again for taking the initiative to help out @thastoned @integrated-differentiation @chronicrebellion

You can also message me on discord. The Jackett discord is https://discord.gg/NSH5kRK and you can find me on there under the same username.

Hello,
I would love to help test as I am not a coder. I cannot seem to get anything related to TD working with sonarr?
Does anyone have suggestions? Can't get jackett working cant get RSS working.

Hello,
I would love to help test as I am not a coder.

Thank you. If you see an open issue related to a tracker of which you are a member, you can help by checking to see if you're facing the same problem, or test the changes to see if they work.

I cannot seem to get anything related to TD working with sonarr?
Does anyone have suggestions? Can't get jackett working cant get RSS working.

For this you'd need to open a new issue and detail what the exact problem is. Make sure you provide the requested details.

For those interested in the WebUI. The current UI is written in JS / HTML / CSS and it does the job. The problem is that the code is very difficult to maintain for several reasons: The HTML code is mixed with the JS code in the same file. Old technologies like jQuery and Bootstrap 3 are used. It does not have a dependency control system. And it has no tests.

Instead of fixing the open bugs I have decided to make a new UI from scratch. I am using modern architecture, language and frameworks. NPM + Typescript + React + Redux + Ant design. It's really similar to the stack used by Sonarr v3 and Radarr. At the moment I am trying to organize the code well to serve as reference and implementing the current functionality of the Jackett UI.

What is done so far:

  • Technologies, architecture, construction system and code base are defined and working.
  • Global storage (Redux) and routing is configured and working.
  • The calls/interface to the configuration, indexers and search APIs are implemented.
  • Search functionality and settings are working (although incomplete).
  • I have made a small modification in the Jackett server so that it serves the two UIs, the old and the new at the same time, you can choose. By default it is still the old one so that users do not notice anything.

As for now I am alone I have not thought much about the organization and the roadmap, but it could be something like this:

  • Release an initial version with the current code. I have to clean the code a bit because I have been playing with many technologies. This code will be available in a branch but will not be merged to master yet.
  • Add the missing functionality to have the same functionality as the old UI. Add tests, unit tests and integration tests (we already have Selenium integrated in Azure pipelines). We continue working in the development branch until everything works.
  • Change the Azure pipeline to build the front, run unit/integration tests in each PR and release.
  • Merge the changes in master and make the two UIs available. By default it will be the new UI and we will display a message in the old UI to indicate that it is deprecated. By means of a button it will be possible to switch between versions in case any user finds a serious bug.
  • We begin to add new functionalities (open issues) and fix new bugs that users report.
  • In a couple of months after the release, if there are not many issues the old UI is completely removed.
  • We make changes to the APIs to include more features in the front. I have tons of ideas: multi user (with different roles, admin / regular user), stats page (with number of requests, most searched terms ...), more configurations, developer dashboard (like an advanced search to help in developing / testing), show more information about the trackers (user ratio, tokens, active uploads / downloads, invites available ...), groups of indexers, predefined search filters, group search results by infohash, dark theme, internationalization, more responsive UI for mobile ....

I need time to release the initial version (a week or two). If someone is interested I can open a PR with the code in the current state in case you want to take a look. After it is released I will open an issue with a TODOs list for anyone who wants to collaborate and for keeping the current state.

We will also need help with UX / UI. The truth is that we already have a logo and I am using a very nice design library that already includes a lot of components and a dark theme https://ant.design/components/button/. The help is more oriented to the usability and ordering of the components of the layout so that it is pleasant to use Jackett.

I am concerned about the long term. I will not disappear from one day to the next, but honestly I am in many projects and I don't know how much time I will be able to dedicate to Jackett in the future, after this is complete. Jackett has been without a front developer for years and I don't want that to happen again. So I ask for commitment.

image

Hello,
I would love to help test as I am not a coder.

Thank you. If you see an open issue related to a tracker of which you are a member, you can help by checking to see if you're facing the same problem, or test the changes to see if they work.

I cannot seem to get anything related to TD working with sonarr?
Does anyone have suggestions? Can't get jackett working cant get RSS working.

For this you'd need to open a new issue and detail what the exact problem is. Make sure you provide the requested details.

For sure. I have been tinkering some more today to see why jackett cannot add TD an an indexer
From the log file all I can make out is that the website it is trying to access to add the tracker is DDoS protected therefore times out, and jacket cannot do anything about that challenge. I could be wrong though

I have also had no luck attaching TD RSS to Sonar to download as well. Sucks I have to use public trackers when TD is so awesome!

LOG

CloudflareSolverRe.Exceptions.CloudflareClearanceException: Clearance failed after 30 attempt(s).
at CloudflareSolverRe.ClearanceHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at Jackett.Common.Utils.Clients.HttpWebClient2NetCore.Run(WebRequest webRequest) in d:\a\1\s\src\Jackett.Common\Utils\Clients\HttpWebClient2NetCore.cs:line 229 at Jackett.Common.Utils.Clients.WebClient.GetString(WebRequest request) in d:\a\1\s\src\Jackett.Common\Utils\Clients\WebClient.cs:line 114 at Jackett.Common.Indexers.BaseWebIndexer.RequestStringWithCookies(String url, String cookieOverride, String referer, Dictionary2 headers) in d:\a\1\s\src\Jackett.Common\Indexers\BaseIndexer.cs:line 438
at Jackett.Common.Indexers.TorrentDay.GetConfigurationForSetup() in d:\a\1\s\src\Jackett.Common\Indexers\TorrentDay.cs:line 123
at Jackett.Server.Controllers.IndexerApiController.Config() in d:\a\1\s\src\Jackett.Server\Controllers\IndexerApiController.cs:line 79
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Jackett.Server.Middleware.CustomExceptionHandler.Invoke(HttpContext httpContext) in d:\a\1\s\src\Jackett.Server\Middleware\CustomExceptionHandler.cs:line 26

For this you'd need to open a new issue and detail what the exact problem is. Make sure you provide the requested details.

@bombz88 Once again, for the TD problem, you need to open a new issue. This ticket right here is for the Jackett developer recruitment topic only. I have hidden your comment instead of deleting it so you can copy the text into a new issue.

For this you'd need to open a new issue and detail what the exact problem is. Make sure you provide the requested details.

@bombz88 Once again, for the TD problem, you need to open a new issue. This ticket right here is for the Jackett developer recruitment topic only. I have hidden your comment instead of deleting it so you can copy the text into a new issue.

Oh sorry, thanks.
I thought it may have assisted with the dev concerns and why you cannot add the TD indexer to jackett.
My apologies.

@bombz88 I've moved your problem into issue #8203, please use that for future troubleshooting of this issue.

@RoloSoze, we can create the new issue with "reference in new issue" before hiding the comments to help out those who don't know any better.

I was informed by a site, they will not co-operate with development of Jackett App and will ban members for testing the app on their site.

I was informed by a site, they will not co-operate with development of Jackett App and will ban members for testing the app on their site.

@IzzyDunyet Jackett has actually been around for 5 years, it's not new. Many of us have been using it for years, and not once have I heard of anyone having issues because they used Jackett to search, download torrent files, or integrate with other apps.

It already works with 400+ trackers, and accessing a tracker with Jackett is the same as accessing it via a web browser, There is no added burden or load on the servers in any way,

This post simply aims to find volunteers willing to make Jackett's codebase more efficient, and the user interface more advanced. That's it.

@IzzyDunyet curious. Did they say why? And do you mind sharing which site it was?

@thastoned @integrated-differentiation @chronicrebellion

I hope you guys have had the chance to go over @cadatoiva's remarks about the required backend development https://github.com/Jackett/Jackett/issues/8180#issuecomment-613497152, as well as @ngosang's comments on the Web UI work that needs to be done https://github.com/Jackett/Jackett/issues/8180#issuecomment-613566100

If you are able/willing to contribute in any way, please let us know. Thank you very much.

Hey, I got experience in C#, Java and SQL among other stuff. I am willing to learn more if needed. Let me know how I can be of help.

@datsunedd Thank you! A good start would be to go over this ticket first, It'll give you an overview of where to start and how you can contribute given your skill set,

@datsunedd The best way to start is fixing one of the open issues. You can filter by label. A good start point is reading this https://github.com/Jackett/Jackett/issues/8180#issuecomment-613497152 , installing a C# IDE (Visual Studio or Rider) and try to add a new tracker you are interested in.

I don't remember what site it was. But it struck me they are cautious of App's that share passkeys, ghostleech or can be used by the pirate hunters to catch torrent sites.

I'm no coder, but I have few regs in private trackers. If anyone needs any testing, I can help.

@scotrod thanks for your interest in helping. Check our open issues for any private trackers you have an account with and leave a comment there letting us know you can test any fixes for that ticket.

I'm trying to create a pull request but getting permission denied. What's the process for submitting one?

@monestri first you fork this repo so you have a copy in your own GitHub account.
then you do your changes and test.
then you raise a PR which will create a review request and we then merge your change once approved into this repo.

I've been working on some modifications to get familiar with the code. I started on this a few months back.

https://github.com/idolpx/Jackett/commit/7951f18b6ef8ab7f519ae30ce718cc2e843c4af2

My motivation was to enhance the way it interacts with the torrent client.
Transmission doesn't automatically process the .magnet files that Jackett saves to the watch folder.

Until my modifications are complete I wrote the following script to hold me over.

https://gist.github.com/idolpx/28acca12a3137355e1e776e473bb8eae

Is it possible somehow to nominate maintainers for specific indexers (torrent sites). If any issue is reported to them they will be notified. With this concept it is ensured, that they have account to it and they know the code. Also if there is some global modification in jackett, they can check these sites.

Tried to see if Cardigann is worth reviving but it seems the number of trackers supported by Cardigann is very low. It didn't feel like it was worth reviving. So tried my hand at running Jackett within VS Code but struggled to set it up for debugging. I'm not a C# coder but have done a little of it, and but I've been doing a lot of other OOP languages professionally. If there's a guide on setting it up on Linux using VS Code, I'd be happy to try and get my hands dirty. I've got a few of my own features I'd love to implement as well.

Having said that, I'd also be able to help with the front-end. It's been a while since I've done serious front-end development but I've tried to keep my senses sharp with the new technology stacks. So, @ngosang, if you could push the source somewhere, I could try and raise PRs when I get a chance.

If there's a guide on setting it up on Linux using VS Code, I'd be happy to try and get my hands dirty.

I'm using Linux too. It's possible to configure VS Code with autocomplete and debugger but the support is not good enough for me. I'm using the paid version of https://www.jetbrains.com/rider/ You can try the evaluation version and send me an email if you have problems. C# is really easy, it's a copy of Java and the IDE will do a lot for you!

Having said that, I'd also be able to help with the front-end. It's been a while since I've done serious front-end development but I've tried to keep my senses sharp with the new technology stacks.

I will upload the front-end source code soon but it's not finished... Help in C# is more necessary right now.

Ah! Great shout! Forgot about Rider. I'm a IntelliJ person anyway so this will make it a whole lot easier.

Hi @ngosang I have some ReactJS experience, would it be possible to have a look at the frontend code for the new UI's preview in your screenshot ?

image

I could help with web scraping.

I am a member of GimmePeers. I could help with testing. And it needs it, because the category definitions are out of date.

I could help with c# development, web scrapping or web UI/UX

If those proficient in C# here could take a look at some of the relevant pending PRs (ignore those on hold), give a yea or nay, and point out any issues, it would be much appreciated - https://github.com/Jackett/Jackett/pulls

@j0nathan33 you can take a look at open issues for C#. Most of them are for adding new trackers. https://github.com/Jackett/Jackett/issues?q=is%3Aissue+is%3Aopen+label%3A%22Needs+C%23%22

New PRs in Jackett are accepted for => https://hacktoberfest.digitalocean.com
If you want to collaborate just pick one open issue and open a PR. We will review it and provide help.

Was this page helpful?
5 / 5 - 1 ratings