gosearch icon indicating copy to clipboard operation
gosearch copied to clipboard

Theme & General Improvement

Open olekukonko opened this issue 7 months ago • 5 comments

This is a wonderful project, but there are a few areas that could be improved:

  • Adding support for both light and dark modes
  • Centralizing color schemes for consistency
  • Using tables to display long and related information
  • Presenting information in a cleaner, more organized way

I will be sending a pull request soon, and I hope these changes help enhance the structure of this fantastic project. It's my small contribution to making it even better.

Image

olekukonko avatar May 16 '25 23:05 olekukonko

Amazing enhancement, I was already working on a table view but didn’t get the time. However, I can't merge #92 because you deleted data.json (likely that you built the binary and ran it which auto-deleted data.json). If you revert this with a commit, I'm very happy to merge this. Thank you for your compliments, it means a lot as an opensource developer.

ibnaleem avatar May 17 '25 23:05 ibnaleem

Apologies for accidentally deleting data.json — it will be restore immediately

I was also thinking about implementing a pluggable architecture where the runner and services interact only via defined interfaces. With this setup, anyone can build and integrate their own middleware without needing to merge changes directly into this repository.

For example:

type Runner interface {
    Run(username string) Response
}

You could register services like this:

Use(runner.Hudson)
Use(runner.Domain)
Use(runner.Nova)

And even plug in third-party services:

Use(thirdparty.Something)

This pattern would be similar to how the [Chi](https://github.com/go-chi/chi) router works in Go.

Lastly, I suggest moving data.json into a data/ folder for better project structure also introduce runner folder , Once again, thank you for the amazing project!

olekukonko avatar May 18 '25 08:05 olekukonko

You may want to look at https://github.com/olekukonko/gosearch/tree/cleanup (Work in Progress), let me know if i should continue or stop.

olekukonko avatar May 18 '25 15:05 olekukonko

Thank you for your contribution. #92 was merged today. I'm leaving this issue open to discuss your suggestion for using runners in Go. Since I'm a fairly new Go dev, I'd love to hear how they function and what benefits and drawbacks they bring to GoSearch @olekukonko

ibnaleem avatar Jul 08 '25 17:07 ibnaleem

The main idea behind introducing runners is to make the application modular and pluggable. Currently, most of the code exists as a single block, which makes it difficult to work on individual services or functions. By splitting the application into two parts, Base and Runners, we gain flexibility and maintainability.

  • The Base is the core of GoSearch. It contains the foundational logic and is expected to remain stable over time with minimal changes.

  • Runners are integrations with third-party services such as Beach, Domains, HudsonRock, Proxynova, and others. Each runner is isolated and can be developed or improved independently.

This structure allows new runners to be added without modifying the main function. You can think of runners as plugins for GoSearch.

One of the biggest advantages is that many runners interact with external services. With this separation, it is easier to optimize or improve a specific runner without affecting the rest of the system.

Additionally, this design allows for concurrent or asynchronous execution of runners. It improves performance and ensures that the application remains stable, easier to extend, and more maintainable in the long term. That is why I proposed this approach.

olekukonko avatar Jul 09 '25 15:07 olekukonko