Theme & General Improvement
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.
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.
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!
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.
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
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
Baseis the core of GoSearch. It contains the foundational logic and is expected to remain stable over time with minimal changes. -
Runnersare integrations with third-party services such asBeach,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.