<p align="center">
  <img alt='magoon-face' src='https://user-images.githubusercontent.com/14088342/230068165-5e013e79-2ff8-4fb5-a1f0-fd5b13e028a9.png' width='250'/>
  <h1 align="center">ONWARDS</h1>
  <p align="center">👏 Super simple shareable portforwarding 👏</p>
</div>
<br>


## ☀️ What's this?
Onwards is a command line tool for managing port-forwards in Kubernetes environments. It can start and stop port-forwards and display logs from each port-forward. It automatically retries a port-forward if it disconnects. Onwards uses a config file which will make it super simple to port-forward to necessary services for the entire team. 👏

## 📋 Prerequisites

To get started with Onwards, you need to have the following installed:

-   [Node.js](https://nodejs.org/) (version 12 or later)
-   [Yarn](https://yarnpkg.com/) (optional, can also use NPM)

## 🚀 Getting Started

To use Onwards, you can install it globally using Yarn or NPM:

`npm install -g onwards`

Or if you prefer using Yarn:

`yarn global add onwards`

Alternatively, you can run it without installing by using `npx`:

`npx onwards`

👉 Pro tip: Make sure your Kubernetes cluster is up and running before using Onwards!

## 💻 Local Development

To develop on Onwards locally, follow these steps:

1.  Clone the repository: `git clone https://github.com/username/onwards.git` 🐙
2.  Install the dependencies: `npm install` or `yarn` 🚀
3.  Start Onwards: `npm start` or  `yarn start` 🌟

🚀 This will start Onwards with the default `onwards.json`.

## ⚙️ Configuration

Onwards uses a configuration file called `onwards.json` to define the port-forwarding services. Here is an example configuration file:

```
{
  "services": [
    {
      "name": "service",
      "command": "kubectl port-forward another-service 5000:5000"
    },
    {
      "name": "another service",
      "command": "kubectl port-forward another-service 5001:5000"
    }
  ]
}
```

👉 Pro tip: If you're not sure what `kubectl port-forward` does, you can learn more about it in the [Kubernetes documentation](https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/).

Each `service` object in the `services` array has a `name` and a `command` property. The `name` property is a descriptive name for the service, and the `command` property is the command to start the port-forward.

##  💪 Contributing

If you encounter any issues or have suggestions for how to improve Onwards, please feel free to open an issue or a pull request on our [GitHub repository](https://github.com/ntwigs/onwards). We welcome contributions of all kinds! 🎁

## 📄 License

This project is licensed under the [MIT License](https://opensource.org/license/mit/).

👋 Thanks for using Onwards! If you have any questions or feedback, feel free to [open an issue](https://github.com/ntwigs/onwards/issues) or [reach out to me](https://twitter.com/captain_ntwigs) on Twitter.