Skip to content

Commit 5b8b56c

Browse files
authored
Merge pull request #498 from kool-dev/docs-heading
Docs Tweaks and Improvements
2 parents d51608f + 52467d2 commit 5b8b56c

File tree

5 files changed

+135
-27
lines changed

5 files changed

+135
-27
lines changed
Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,38 @@
1-
From **development** to **production**, **kool** brings speed and security to software developers working with multiple tech stacks, making their development environments reproducible and easy to set up.
1+
# What is kool?
22

3-
**kool** will help you:
3+
**kool** is a powerful CLI tool designed to streamline the complexities of modern software development environments. It simplifies the use of Docker for local development, making environments lightweight, fast, and reproducible. And when you are ready, it will help you ship any `docker-compose.yml` based app to the cloud with
4+
an amazing Developer Experience.
45

5-
* Stop installing different tech stacks on your local machine (e.g. PHP/Ruby/Python, MySQL/MariaDB/PostgreSQL/MongoDB, NGINX/Apache, Redis/Memcached, Node, etc)
6-
* Stop writing how-to documentation for setting up local development environments
7-
* Eliminate "it works on my machine" problems caused by different versions / setups
8-
* Maintain total control of each tech stack on every project
9-
* Work locally using the very same tech stack and versions as your production environment
10-
* Work the same way across different tech stacks and projects (e.g. Laravel, Symfony, Next.js, Nuxt.js, AdonisJs, NestJS, Hugo, WordPress, etc)
6+
# Why would I want to use kool?
7+
8+
Using **kool** offers several advantages:
9+
10+
- **Easier Configuration:** Say goodbye to the learning curve and frustration of configuring Docker flags, fixing user permissions, and managing local and global networks.
11+
12+
- **Simpler Containerization:** **kool** reduces the cognitive overhead of containerizing your stack with an intuitive CLI interface for managing Docker containers and Docker Compose services. Leverage battle-tested presets and configurations so you don't reinvent the wheel everytime.
13+
14+
- **Faster Workflow:** Enjoy the speed of spinning up new local environments, effortlessly switching between projects, sharing local changes with colleagues and clients, and deploying to the cloud—all accomplished in seconds. Collect on the benefits of containers technology like Docker today without the steep leaning curve to do it the right way.
15+
16+
- **Optimized Development:** **kool** provides custom Docker images optimized for local development and deployment. It also includes pre-built Presets with sensible defaults for rapid project setup using popular frameworks.
17+
18+
# Who is kool for?
19+
20+
**kool** caters to a broad audience, making it suitable for:
21+
22+
- **Solo Developers:** Perfect for individual developers seeking a hassle-free way to handle Docker basics and immediately start using containers for development. From newcomers to senior DevOps, it's a friendly tool to anyone that enjoys and values good Developer Experience.
23+
24+
- **Teams of All Sizes:** Ideal for teams, offering a unified approach to Docker while ensuring no loss of control over more specialized Docker environments. Making part of your DevOps needs a no brainer.
25+
26+
# How to get started?
27+
28+
Getting started with **kool** is straightforward:
29+
30+
1. **Installation:** Ensure you have Docker installed and then follow the [installation instructions](/docs/01-Getting-Started/2-Installation.md) to set up **kool**.
31+
32+
2. **Start new Local Environment:** Explore the [Starting new Project](/docs/01-Getting-Started/4-Starting-new-project.md) for a spinning up local environments to kickstart your development journey with **kool**.
33+
34+
3. **Explore Presets:** Check out available [Presets](/docs/03-Presets/0-About-Presets.md) tailored for popular stacks and frameworks, providing a head start for your real-world applications.
35+
36+
4. **Deployment to the Cloud:** Check out [Kool.dev Cloud](https://kool.dev/cloud) to elevate your Developer Experience to new highs - start deploying containerized apps the way you always dreamed should be possible.
37+
38+
Now you're ready to experience a better, more efficient development environment with **kool**!

docs/01-Getting-Started/2-Installation.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
## Installation
1+
# Installation
22

3-
### Requirements
3+
## Requirements
44

55
**kool** is powered by **Docker**. To use **kool**, you need to **[install the Docker Engine and Docker Compose](https://docs.docker.com/get-docker/)** on your local machine, and make sure they're both running.
66

7-
Important to notice: `kool` relies on the `docker` and `docker compose` CLI commands - that being said, you can pick any other Docker-compatibable container engine and use it seamlessly, like OrbStack for example.
7+
Important to notice: `kool` relies on the `docker` and `docker compose` CLI commands - that being said, you can pick any other Docker-compatibable container engine and use it the same way, like **OrbStack** on MacOS or **Podman** on Linux.
88

9-
> `kool` now requires [Docker Compose V2](https://docs.docker.com/compose/install/), make sure you have it enabled in your system.
9+
> `kool` now requires [Docker Compose V2](https://docs.docker.com/compose/install/) API. Make sure you have the latest container engine in your .
1010
11-
### For Linux and macOS
11+
## For Linux and macOS
1212

1313
Install **kool** by running the following script. It will download the latest **kool** binary from [https://github.com/kool-dev/kool/releases](https://github.com/kool-dev/kool/releases), and save it in your `/usr/local/bin` folder.
1414

1515
```bash
1616
$ curl -fsSL https://kool.dev/install | bash
1717
```
1818

19-
### For Windows
19+
## For Windows
2020

2121
You must run `kool` on Windows via [WSL - Windows Subsystem for Linux](https://learn.microsoft.com/en-us/windows/wsl/install) - once you have a WSL environment properly set up, make sure you have [Docker available on it](https://docs.docker.com/desktop/wsl/), then you can install the CLI as you would in any Linux or MacOS (see above).
2222

2323
### Verification
2424

2525
Verify **kool** is installed correctly by running `kool` in your terminal to see a list of available commands.
2626

27-
## Stay Up-to-Date
27+
# Stay Up-to-Date
2828

2929
Update **kool** to a newer version using the `self-update` command. This command will compare your local version with the latest release, and, if a newer version is available, automatically download and install it.
3030

@@ -34,11 +34,11 @@ $ kool self-update
3434

3535
> Sign up for new release notifications and stay up-to-date on our latest features! [Go to our main GitHub repository](https://github.com/kool-dev/kool), click on "Watch" at the top, select the "Custom" option, check "Releases", and hit Apply.
3636
37-
## Autocompletion
37+
# Autocompletion
3838

3939
If you want to use **kool** autocompletion in your Unix shell, follow the appropriate instructions below.
4040

41-
### Bash
41+
## Bash
4242

4343
Temporarily enable autocompletion for your **current session only**:
4444

@@ -62,7 +62,7 @@ $ kool completion bash > /usr/local/etc/bash_completion.d/kool
6262

6363
> After running one of the above commands, remember to start a new shell for autocompletion to take effect.
6464
65-
### Zsh
65+
## Zsh
6666

6767
If Zsh tab completion is not already initialized on your machine, run the following command to turn it on.
6868

@@ -78,7 +78,7 @@ $ kool completion zsh > "${fpath[1]}/_kool"
7878

7979
> After running the above command, remember to start a new shell for autocompletion to take effect.
8080
81-
### Fish
81+
## Fish
8282

8383
Temporarily enable autocompletion for your **current session only**:
8484

docs/01-Getting-Started/3-How-it-works.md

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
**Kool** is a suite of open source dev tools that level up the way you build and deploy modern, cloud native web applications. By using Kool, you'll get a better development environment and a better development workflow, which adds up to **a better developer experience**.
1+
# How does Kool work?
2+
3+
**Kool** stands as a comprehensive suite of open-source development tools meticulously crafted to enhance the process of building and deploying modern containerized web applications. Leveraging **Kool** doesn't just improve your development environment; it transforms your entire development workflow, resulting in a significantly enhanced developer experience. With Kool, every step of the development journey becomes smoother and more efficient.
4+
5+
The way **Kool** delivers on these promises is by providing a unified and intuitive command-line interface (CLI) that seamlessly integrates with Docker and Kubernetes. **Kool** simplifies the complexities of setting up, configuring, and managing containers, allowing you to focus on your code and application logic. Behind the scenes, **Kool** employs custom Docker images optimized for local development and deployment, ensuring a consistent environment across different projects. Additionally, **Kool** offers pre-configured Presets for various stacks and frameworks, eliminating the need to start from scratch every time. This thoughtful approach streamlines the development process, making it not only powerful but also accessible to developers of all levels of expertise.
26

37
<a name="better-development-environment"></a>
48
## A Better Development Environment
@@ -46,20 +50,26 @@ Kool loads environment variables from a **.env** file. If there's a **.env.local
4650

4751
> It's important to keep in mind that **real** environment variables defined inline as `VAR=value kool ...` or via `export VAR=value` will take precedence over the same variables in your **.env** files.
4852
49-
### Kool Snippets
53+
### Kool Recipes
54+
55+
In the realm of Kool, Recipes serve as concise sets of automated steps to tailor and enhance your project's environment. Typically, these steps involve the addition of new services to the docker-compose.yml file, complemented by companion scripts within kool.yml. These recipes come bundled with clear instructions and learning resources, empowering you to swiftly tweak and set up new functionalities in your development environment.
56+
57+
It's worth noting that Kool Presets are essentially compositions of different recipes. The modular nature of these recipes allows you the flexibility to use them independently, standalone, if you prefer to cherry-pick specific enhancements for your projects. This modular approach adds versatility to your development process, letting you customize your environment based on your project's unique requirements.
5058

51-
Add services to your development environment by copying and pasting code snippets into your project's **docker-compose.yml** file. We just have a couple at the moment, but we'll be adding more soon.
59+
```bash
60+
# see a list with all recipes available to pick from
61+
kool recipe
62+
```
5263

53-
- [Generate PDFs](https://kool.dev/docs/snippets/generate-pdfs)
54-
- [Mailhog](https://kool.dev/docs/snippets/mailhog)
64+
### kool.yml
5565

5666
### kool.yml
5767

58-
This is your Kool configuration file. It defines scripts (commands) that you execute in your local environment or CI/CD workflows. It should be placed inside your project and committed to version control. Think of **kool.yml** as a super easy-to-use task helper. Instead of writing custom shell scripts, you can add your own scripts to **kool.yml** (under the scripts key), and run them with `kool run SCRIPT`. You can add single line commands (`kool run artisan`), or add a list of commands that will be executed in sequence (`kool run setup`).
68+
The **kool.yml** file serves as your Kool configuration file, defining scripts (commands) to execute in your local environment or CI/CD workflows. Place it within your project and commit it to version control. Think of **kool.yml** as an exceptionally user-friendly task helper. Rather than crafting custom shell scripts, you can effortlessly add your own scripts to **kool.yml** (under the `scripts` key) and run them with `kool run SCRIPT`. Scripts can be single-line commands (`kool run artisan`) or lists of commands executed sequentially (`kool run setup`).
5969

60-
> Use **environment variables** within your scripts to **parameterize** them, and give them an extra bit of power and flexibility.
70+
> Harness the power of **environment variables** within your scripts to **parameterize** them, adding an extra layer of versatility and flexibility.
6171
62-
Every **Kool Preset** auto-generates a **kool.yml** file with prebuilt scripts customized for that framework and/or stack. You can then modify this file and add your own custom scripts to facilitate your development process and share knowledge across your team. For example, add scripts to run database migrations, reset local environments, run static analysis tools, and so on. Think about how much easier it will be to onboard a teammate or new developer :)
72+
Each **Kool Preset** auto-generates a **kool.yml** file with prebuilt scripts tailored for the specific framework or stack. You can modify this file and incorporate your custom scripts to streamline your development process and share knowledge across your team. For instance, include scripts to run database migrations, reset local environments, perform static analysis, and more. Consider the ease with which your team can onboard new members or developers with this organized and standardized approach.
6373

6474
```yaml
6575
# ./kool.yml for the Laravel preset
@@ -233,3 +243,21 @@ $ kool start
233243
Pretty _kool_, right?
234244

235245
> If you like what we're doing, show your support for this new open source project by [**starring us on GitHub**](https://github.com/kool-dev/kool)!
246+
247+
## A Better Cloud Deployment Experience
248+
249+
Elevating your cloud deployment experience is a core aspect of **Kool**. Beyond revolutionizing local development environments, **Kool** seamlessly extends its benefits to the cloud, providing a streamlined and efficient deployment process.
250+
251+
### Kool Cloud Integration
252+
253+
**Kool.dev Cloud** is the gateway to a simplified cloud deployment journey. Seamlessly integrated with **Kool**, it offers a platform where you can effortlessly deploy your containerized applications. By leveraging the power of `kool cloud setup`, you can seamlessly transition from local development to cloud deployment, ensuring consistency and minimizing friction in the process.
254+
255+
### Streamlined Deployments with Kool Presets
256+
257+
Each **Kool Preset** not only optimizes your local development but also facilitates cloud deployment. We are building deploying recipes for each Preset so you can leverage Kool.dev Cloud without the usual hassle and without fighting with Kubernetes.
258+
259+
### Fine-Tuning Deployment Workflows
260+
261+
**Kool** understands that flexibility is key. While **Kool Presets** together with `kool cloud setup` offer out-of-the-box deployment solutions, you have the freedom to fine-tune and customize deployment workflows to match your specific needs. Leverage the capabilities of **kool.yml** to add bespoke scripts that cater to your deployment requirements.
262+
263+
Discover a better way to deploy your containerized applications to the cloud with **Kool**, ensuring a consistent and efficient cloud deployment experience.

docs/03-Presets/0-About-Presets.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Kool Presets: Streamlining Your Development Experience
2+
3+
Kool Presets are curated configurations tailored to popular stacks and frameworks, designed to jumpstart your projects with efficiency and ease. Whether you're working with Node.js, PHP, JavaScript, or other technologies, Kool Presets provide battle-tested configurations, saving you from the hassle of reinventing the wheel for each new project.
4+
5+
These presets encapsulate best practices, allowing you to focus on your code rather than spending time on intricate setup processes. From popular backend frameworks like Laravel and NestJS to frontend powerhouses like Next.js and NuxtJS, Kool Presets cover a spectrum of technologies, offering you a head start in building robust and scalable applications.
6+
7+
By leveraging Kool Presets, you not only reduce the learning curve associated with configuring different environments but also ensure consistency across your projects. With Kool, enjoy a unified and efficient development experience, whether you're a solo developer seeking a quick setup or a team collaborating on complex projects. Explore the available presets and elevate your development workflow with Kool Presets today.
8+
9+
# Popular Presets
10+
11+
## Node
12+
13+
- [NestJS](docs/03-Presets/NestJS.md)
14+
- [AdonisJs](docs/03-Presets/AdonisJs.md)
15+
- [Express.js](/docs/03-Presets/ExpressJS.md)
16+
17+
## PHP
18+
19+
- [Laravel](/docs/03-Presets/Laravel.md)
20+
- [Laravel Octane](/docs/03-Presets/Laravel+Octane.md)
21+
- [Symfony](/docs/03-Presets/Symfony.md)
22+
- [CodeIgniter](/docs/03-Presets/CodeIgniter.md)
23+
24+
## Javascript
25+
26+
- [Next.js](/docs/03-Presets/NextJS.md)
27+
- [NuxtJS](/docs/03-Presets/NuxtJS.md)
28+
29+
## Others
30+
31+
- [Hugo](/docs/03-Presets/Hugo.md)
32+
- [WordPress](/docs/03-Presets/WordPress.md)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Upgrade Guide
2+
3+
## Note on Versioning
4+
5+
**Kool** adheres to *Semantic Versioning (SemVer)* and is committed to maintaining backward compatibility, minimizing the potential for disruptive changes and multi-step upgrades.
6+
7+
## Upgrading to 3.x
8+
9+
The release of major version 3.x introduces a few breaking changes. Please review and adjust your projects accordingly.
10+
11+
### Changes to `kool.deploy.yml`: Now `kool.cloud.yml`
12+
13+
It is recommended to rename your configuration file for **Kool.dev Cloud** from `kool.deploy.yml` to `kool.cloud.yml`. Although the old naming convention remains functional, it has been deprecated and will be removed in future releases.
14+
15+
### Building Images for Deployment with `services.<service>.build`
16+
17+
Version 3.x introduces two significant changes:
18+
19+
- The YAML syntax for `services.<service>.build` in the `kool.cloud.yml` file must now align with the official Docker Compose reference for the `service.<service>.build` entry.
20+
- Image building now occurs in your local environment—specifically, on the host where you execute `kool cloud deploy`. Therefore, ensure that the environment from which you run this command has a properly configured Docker-image build engine (that means Kool to be able to run `docker build` command).

0 commit comments

Comments
 (0)