diff --git a/docs/app/docs/cli_reference/devbox.md b/docs/app/docs/cli_reference/devbox.md index fbf14016aea..9f89b4e86b6 100644 --- a/docs/app/docs/cli_reference/devbox.md +++ b/docs/app/docs/cli_reference/devbox.md @@ -16,6 +16,7 @@ devbox [flags] ## SEE ALSO * [devbox add](./devbox_add.md) - Add a new package to your devbox +* [devbox cloud](./devbox_cloud.md) - [Preview] Create and manage a remote dev environment with Devbox Cloud * [devbox generate](devbox_generate.md) - Generate supporting files for your project * [devbox info](devbox_info.md) - Display package and plugin info * [devbox init](./devbox_init.md) - Initialize a directory as a devbox project diff --git a/docs/app/docs/cli_reference/devbox_cloud.md b/docs/app/docs/cli_reference/devbox_cloud.md new file mode 100644 index 00000000000..75045498198 --- /dev/null +++ b/docs/app/docs/cli_reference/devbox_cloud.md @@ -0,0 +1,24 @@ +# devbox cloud + +Commands for managing remote development environments with Devbox Cloud. + +:::note +Devbox Cloud is currently available as an Open Beta and under active development. If you encounter any issues, please report them at https://github.com/jetpack-io/devbox/issues +::: + +```bash +devbox cloud [subcommand] [flags] +``` + +## Options + +```bash + -h, --help help for generate + -q, --quiet Quiet mode: Suppresses logs. +``` + +## SEE ALSO + +* [devbox](devbox.md) - Instant, easy, predictable development environments +* [devbox cloud forward](devbox_cloud_forward.md) - [Preview] Port forwards a local port to a remote devbox cloud port +* [devbox cloud shell](devbox_cloud_shell.md) - [Preview] Shell into a cloud environment that matches your local devbox environment diff --git a/docs/app/docs/cli_reference/devbox_cloud_forward.md b/docs/app/docs/cli_reference/devbox_cloud_forward.md new file mode 100644 index 00000000000..f49bd01d474 --- /dev/null +++ b/docs/app/docs/cli_reference/devbox_cloud_forward.md @@ -0,0 +1,37 @@ +# devbox cloud forward +Port forwards a local port to a remote devbox cloud port. + +## Synopsis + + + +```bash +# Connect remote port 3000 to an automatically assigned local port +$ devbox cloud forward :3000 +Port forwarding 54653:3000 +To view in browser, visit http://localhost:54653 +``` +```bash +# Connect remote port 3000 to local port 3000 +$ devbox cloud forward 3000:3000 +Port forwarding 3000:3000 +To view in browser, visit http://localhost:3000 +``` +```bash +# Close all open port-forwards +$ devbox cloud forward stop +``` + +Usage: + devbox cloud forward \:\ | :\ | stop | list [flags] + devbox cloud forward [command] + +Available Commands: + list Lists all port forwards managed by devbox + stop Stops all port forwards managed by devbox + +Flags: + -h, --help help for forward + +Global Flags: + -q, --quiet suppresses logs. \ No newline at end of file diff --git a/docs/app/docs/cli_reference/devbox_cloud_shell.md b/docs/app/docs/cli_reference/devbox_cloud_shell.md new file mode 100644 index 00000000000..f3de667bb92 --- /dev/null +++ b/docs/app/docs/cli_reference/devbox_cloud_shell.md @@ -0,0 +1,26 @@ +# devbox cloud shell +[Preview] Shell into a remote environment on Devbox Cloud. + + +## Synopsis +When run in a directory with a `devbox.json` file, this command will start a VM, sync your local files, and create an environment using the packages and configuration in your `devbox.json`. + +If a `devbox.json` file is not detected in your current directory, the Devbox CLI will attempt to find a `devbox.json` file in parent directories, and return an error if one is not located. + +To authenticate with Devbox Cloud, you must have a Github Account with a linked SSH key. Devbox will attempt to automatically detect your Github username and public key, and prompt you if one cannot be identified, + +For more details on how to use Devbox Cloud, consult the [Getting Started Guide](../devbox_cloud/getting_started.md) + + +```bash +# Start a Cloud Shell +devbox cloud shell +``` + +## Options +```text + -c, --config string path to directory containing a devbox.json config file + -h, --help help for shell + -u, --username string Github username to use for ssh + -q, --quiet suppresses logs. +``` diff --git a/docs/app/docs/devbox_cloud/beta_faq.md b/docs/app/docs/devbox_cloud/beta_faq.md new file mode 100644 index 00000000000..fd53211fdbf --- /dev/null +++ b/docs/app/docs/devbox_cloud/beta_faq.md @@ -0,0 +1,54 @@ +--- +title: Devbox Cloud Open Beta FAQ +--- + +### What do I need to use Devbox Cloud? + +To use Devbox Cloud from your Browser, you will need a Github Account. + +To use Devbox Cloud from your CLI, you will need: + +* A Github account with linked SSH keys +* Devbox 0.3.0 or later + +### Does my project need to use Devbox to use Devbox Cloud? + +While you can open any Github Repo in a Devbox Cloud Shell, you will need a `devbox.json` to install packages or configure the environment. You can create a `devbox.json` in your shell by running `devbox init` + +### Can I use my own IDE or editor with Devbox Cloud? + +Yes! You can use your own tools when you start Devbox Cloud from the terminal. See our [Getting Started Guide](getting_started.md) for more details + +### Do I have to pay to use Devbox Cloud during the Open Beta? + +Devbox Cloud is free to use during the Open Beta period, subject to the restrictions listed below. We expect to continue offering a free tier for personal use after the Open Beta period, but we will offer Paid Plans that provide more resources, concurrency, and persistence. + +### What are the resource limits for Devbox Cloud VMs + +* **CPU**: 1 Core, shared +* **RAM**: 1 GB +* **SSD**: 8 GB + +If you need additional resources for your project, please reach out to us for **[Early Access](https://jetpack-io.typeform.com/devbox-cloud)** + +### I want to request more resources, persistence, or a different OS for my VM + +Future releases will add more flexibility and features as part of our paid plans. If you'd like to sign up for early access to these plans, please sign up for **[Early Access](https://jetpack-io.typeform.com/devbox-cloud)** + +### What OS does Devbox Cloud use? + +Alpine Linux 3.17.1, running on a x86-64 platform + +### How many VM's can I run concurrently? + +You can have up to 3 concurrent VMs per Github Account. + +### How long will my Devbox Cloud Shell stay alive for? + +VMs will stay alive for up to 5 minutes after a user disconnects. After that point, the VM and all data will be deleted. + +### Where will Devbox run my VM? + +Devbox VMs are run as Fly Machines in local Data Centers. To minimize latency, Devbox Cloud will attempt to create a Fly Machine as close to your current location as possible. + + diff --git a/docs/app/docs/devbox_cloud/browser_getting_started.md b/docs/app/docs/devbox_cloud/browser_getting_started.md new file mode 100644 index 00000000000..42de1c4698c --- /dev/null +++ b/docs/app/docs/devbox_cloud/browser_getting_started.md @@ -0,0 +1,47 @@ +--- +title: Getting Started From Your Browser +--- + +In addition to using [Devbox Cloud from your terminal](getting_started.md), you can use Devbox Cloud to preview Github projects directly in your browser. The Devbox Cloud Shell comes with the Devbox CLI preinstalled, so you can easily install your projects dependencies or run projects that include a `devbox.json` + +![Devbox Cloud Browser](../../static/img/devbox_cloud_browser.png) + +### Getting Started + +:::note +If you are trying to open a private repository in Devbox Cloud, you will first have to install the [**Devbox Cloud app**](https://github.com/apps/devbox-cloud) from the Github Marketplace. This gives Devbox Cloud permissions to clone your repositories to the cloud VMs +::: + +1. Navigate to the Github Repo that you want to preview in Devbox Cloud +2. Copy the URL, and prepend it with `https://devbox.sh/`. For example, to open the Devbox repo, you would enter [https://devbox.sh/github.com/jetpack-io/devbox](http://devbox.sh/github.com/jetpack-io/devbox) +3. Follow the prompts to sign in with your Github Account. +4. Your project should now launch in a terminal session in your browser + 1. If the project has a `devbox.json` in the root directory, then Devbox will automatically install your packages and launch you into a devbox shell. + 2. If the project does not have a `devbox.json`, a blank one will be automatically created using `devbox init`. You can add packages to the VM using `devbox add`. + + +### Opening a specific branch of a project + +You can open a specific branch of your project using the `branch` query parameter. This is useful when you want to preview a PR or WIP changes for your project. + +For example: https://devbox.sh/github.com/org/repo?branch=staging would clone the `staging` branch of your project, and open it in your Cloud Shell. + + +### Opening a subfolder of a project + +You can start your Devbox Cloud Shell in a subfolder of your project, using the `folder` query parameter. This can be useful when working with a monorepo where your project's `devbox.json` lives in a subfolder. + +For example: https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/ruby will start your terminal in the Ruby example in the Devbox Examples repo, load the configuration from the `devbox.json` in that folder, and then start a Devbox Shell. + + +### Open in Devbox Badge + +If your project uses Devbox, you can make it easy for developers to test your project in Devbox Cloud by adding the `Open in Devbox` badge to your repo + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox) + +Add the following code to your README.md: + +```md +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/{path_to_repo}) +``` diff --git a/docs/app/docs/devbox_cloud/getting_started.md b/docs/app/docs/devbox_cloud/getting_started.md new file mode 100644 index 00000000000..553c14f8996 --- /dev/null +++ b/docs/app/docs/devbox_cloud/getting_started.md @@ -0,0 +1,184 @@ +# Getting Started from your Terminal + +Devbox Cloud is a new way to create and run your Devbox Project in an isolated cloud environment. + +Use cases for Devbox Cloud include: +* Testing out Packages or Scripts in an Isolated Linux Environment -- Preview different combinations or environments in a remote VM +* Easy Preview Environments for your project -- Developers or contributors can quickly test your project in a cloud development environment, using the same packages and configuration. +* Develop in a consistent environment from any Machine -- Log on to your Cloud Shell from anywhere, and develop in a consistent Dev environment anywhere in the world. Our VMs are deployed at the edge using Fly.io to provide a low-latency environment + +:::note +Devbox Cloud is currently in Beta and under active development. +::: + +## How It Works + +### Prerequisites +Devbox Cloud Shell requires the following: + +* **Devbox 0.3.0 or higher.** If you do not have Nix installed on your machine, Devbox will install it with the default configuration for your OS. +* **A Github Account with an SSH Key Configured**. This is used by Devbox to authenticate and connect you to your Cloud VM. + + +### Step 1: Authenticate with Github + +Devbox provides an easy password-less login flow using the SSH keys attached to your Github Account. If you do not have SSH keys configured with Github, follow the instructions here: [Connecting to Github with SSH](https://docs.github.com/en/enterprise-server@3.4/authentication/connecting-to-github-with-ssh/about-ssh) + +When you run `devbox cloud shell`, Devbox will first attempt to infer your Github username from your local environment, and prompt you if a username cannot be found. + +Once Devbox has your username, it will authenticate you over SSH using the private/public key pair associated with your Github Account. + +:::note +All authentication is handled via SSH. Devbox never reads or stores your private key. +::: + +### Step 2: Launch your Devbox Shell in a Cloud VM + +Once you are authenticated, Devbox will provision and start your Cloud Shell: +1. First, we will provision a VM within your region and connect using SSH. +2. Your local project files will be synced to the VM using Mutagen +3. Once your files are updated, Devbox will install your dependencies and start a `devbox shell` for your project + + + +If you are using Devbox for the first time, this process may take over 1 minute to complete, depending on the size and number of your project's dependencies. Subsequent sessions will reuse your VM, and should boot up and start in a few seconds + +#### Example: Initialize a Python Project in Cloud Shell + +Let's create a simple project that uses Python 3.10 with Poetry to manage our packages. We'll start by running `devbox init` in our project directory, and then adding the packages: + +```bash +devbox init +``` +```bash +devbox add python310 poetry +``` + +This should create a devbox.json in your directory that looks like the following: + +```json +{ + "packages": [ + "poetry", + "python310" + ], + "shell": { + "init_hook": null + }, + "nixpkgs": { + "commit": "52e3e80afff4b16ccb7c52e9f0f5220552f03d04" + } +} +``` +Now you can start your Cloud Shell by running `devbox cloud shell` + +```md +Devbox Cloud +Remote development environments powered by Nix + +✓ Created a virtual machine in Sunnyvale, California (US) +✓ File syncing started +✓ Connecting to virtual machine + + +Installing nix packages. This may take a while... done. +Starting a devbox shell... +... + +(devbox) ~/src/devbox-cloud-test 💫 watching for changes +❯ +``` + +You are now connected to your remote shell + + +### Step 3: Sync your Local Changes to Devbox Cloud + +When you start your cloud session, your files are kept locally, and synchronized with your Devbox Cloud VM when changes are detected. This means you can use your favorite tools and editors to develop your project, while running in an isolated cloud environment. + +#### Example: Add a Simple Flask App + +Let's add a simple Flask "Hello World" to our project to test the syncing. + +1. On your local machine, create a pyproject.toml file with the following: + + ```toml + [tool.poetry] + name = "devbox-cloud-test" + version = "0.1.0" + description = "" + authors = ["Your Name "] + packages = [{include = "devbox_cloud_test"}] + + [tool.poetry.dependencies] + python = "^3.10" + Flask = "^2.2.2" + + + [build-system] + requires = ["poetry-core"] + build-backend = "poetry.core.masonry.api" + ``` + +1. Create a file locally called `hello.py`, with the following contents: + + ```python + from flask import Flask + + app = Flask(__name__) + + @app.route('/') + def index(): + return '

Hello from Devbox Cloud!

' + ``` + +1. These files will be automatically synced to your Devbox Cloud Shell, meaning you can install and run the Flask server remotely: + +```bash +poetry install +poetry run flask --app hello run +``` + +This should start your Flask app with the development server: + +```bash + * Serving Flask app 'hello' + * Debug mode: off +WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. + * Running on http://127.0.0.1:5000 +Press CTRL+C to quit +``` + +### Step 4: Test your Services with Port-forwarding + +Once your service is running, you may want to test it with your browser or local tools, or you may want to expose services running on your remote shell to your local machine. + + You can do this using `devbox cloud forward :`, which will forward ports from your cloud instance to your local machine. If you provide just the remote port, Devbox will forward it to a randomly assigned local port. + +You can view the full list of port-forwards on your machine using `devbox cloud forward ls`. You can also terminate port=forwarding with `devbox cloud forward termiante`. + +#### Example: Port-forwarding our Flask App + +Our Flask app in the example above is listening on port 5000 of the remote machine. Using `devbox cloud forward`, we can access that service from our localhost: + +```bash +devbox cloud forward 5000:5000 + +Port forwarding 5000:5000 +To view in browser, visit http://localhost:5000 +``` + +Now if we curl `localhost:5000`, we should see our message: + +```bash +curl localhost:5000 +

Hello from Devbox Cloud!

+``` + +## Next Steps + +* Learn how to activate **[Devbox Cloud Shell in your Browser](browser_getting_started.md)** +* Try out one of our **[Examples](../devbox_examples/index.md)** in Devbox Cloud Shell +* Learn more about the **[Devbox Cloud Shell Open Beta](index.md)** +* Join the **[Discord Community](https://discord.gg/jetpack-io)** +* File an Issue or Contribute on our **[Github Repo](https://github.com/jetpack-io/devbox)** \ No newline at end of file diff --git a/docs/app/docs/devbox_cloud/index.md b/docs/app/docs/devbox_cloud/index.md new file mode 100644 index 00000000000..3c5a6e97cdc --- /dev/null +++ b/docs/app/docs/devbox_cloud/index.md @@ -0,0 +1,18 @@ +--- +title: Devbox Cloud Open Beta +--- + +Devbox Cloud is a new way to create and run your Devbox Project in an isolated cloud environment. Devbox Cloud lets you quickly spin up an on-demand Linux Edge VM with your Devbox dependencies and shell, using either a local project or your browser. + +:::info +Devbox Cloud is currently available in Open Beta, and is under active development. Please see the information in our **[FAQ](beta_faq.md)** for more details. + +To sign up for Early Access to future releases, fill out our **[Early Access List](https://jetpack-io.typeform.com/devbox-cloud)** +::: + +Devbox Cloud's Open Beta is available for free to any developer using Devbox 0.2.3 or higher. +* To get started with Devbox Cloud from your terminal, visit our **[Quickstart](getting_started.md)**. +* To learn how to use Devbox Cloud from your browser, visit our **[Browser Quickstart](browser_getting_started.md)**. +* To learn more about the Open Beta, visit our **[FAQ](beta_faq.md)**. +* If you're interested in Early Access to future versions of Devbox Cloud, join our **[Early Access List](https://jetpack-io.typeform.com/devbox-cloud)**. + diff --git a/docs/app/docs/devbox_examples/databases/mariadb.md b/docs/app/docs/devbox_examples/databases/mariadb.md index 6d7991e0e40..3cc0fc82420 100644 --- a/docs/app/docs/devbox_examples/databases/mariadb.md +++ b/docs/app/docs/devbox_examples/databases/mariadb.md @@ -5,6 +5,8 @@ To use a local MariaDB for development with Devbox and Nix, you will need to con [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/databases/mariadb) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=databases/mariadb) + ## Adding MariaDB to your Shell `devbox add mariadb`, or in your `devbox.json` add diff --git a/docs/app/docs/devbox_examples/databases/postgres.md b/docs/app/docs/devbox_examples/databases/postgres.md index b1811ae88a0..7d9d932e603 100644 --- a/docs/app/docs/devbox_examples/databases/postgres.md +++ b/docs/app/docs/devbox_examples/databases/postgres.md @@ -5,6 +5,8 @@ PostgreSQL can be automatically configured by Devbox via the built-in Postgres P [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/databases/postgres) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=databases/postgres) + ## Adding Postgres to your Shell `devbox add postgresql glibcLocales`, or in your `devbox.json`, add diff --git a/docs/app/docs/devbox_examples/databases/redis.md b/docs/app/docs/devbox_examples/databases/redis.md index f2f34d70b71..a45bd6a4b46 100644 --- a/docs/app/docs/devbox_examples/databases/redis.md +++ b/docs/app/docs/devbox_examples/databases/redis.md @@ -6,6 +6,8 @@ Redis can be configured automatically using Devbox's built in Redis plugin. This [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/databases/redis) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=databases/redis) + ## Adding Redis to your shell `devbox add redis`, or in your Devbox.json diff --git a/docs/app/docs/devbox_examples/index.md b/docs/app/docs/devbox_examples/index.md index b483932e2a4..a683490fd55 100644 --- a/docs/app/docs/devbox_examples/index.md +++ b/docs/app/docs/devbox_examples/index.md @@ -8,17 +8,21 @@ You can view the full list of examples in our [Example Repo](https://github.com/ ## Languages * [C#/.NET](languages/csharp.md) * [Elixir](languages/elixir.md) +* [F#/.NET](languages/fsharp.md) * [Go](languages/go.md) +* [Haskell](languages/haskell.md) * [Java](languages/java.md) * [NodeJS](languages/nodejs.md) +* [Nim](languages/nim.md) * [PHP](languages/php.md) * [Python](languages/python.md) * [Rust](languages/rust.md) * [Ruby](languages/ruby.md) +* [Zig](languages/zig.md) ## Databases * [MariaDB](databases/mariadb.md) -* [Postgres](databases/postgres.md) +* [PostgreSQL](databases/postgres.md) * [Redis](databases/redis.md) ## Servers @@ -31,6 +35,6 @@ These examples combine configuration from multiple examples to create a full sta * [Drupal](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/drupal) * [Jekyll](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/jekyll) -* [LAMP (Linux, Apache, MariaDB, PHP)](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/lamp-stack) -* [LEMP (Linux, NGINX, MariaDB, PHP)](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/lemp-stack) +* [LAPP (Linux, Apache, PostgreSQL, PHP)](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/lamp-stack) +* [LEPP (Linux, NGINX, PostgreSQL, PHP)](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/lemp-stack) * [Ruby on Rails](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/rails) \ No newline at end of file diff --git a/docs/app/docs/devbox_examples/languages/csharp.md b/docs/app/docs/devbox_examples/languages/csharp.md index c2cf762a79a..eb3dc9a21dc 100644 --- a/docs/app/docs/devbox_examples/languages/csharp.md +++ b/docs/app/docs/devbox_examples/languages/csharp.md @@ -6,6 +6,8 @@ C# and .NET projects can be easily generated in Devbox by adding the dotnet SDK [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/csharp) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/csharp/hello-world) + ## Adding .NET to your project `devbox add dotnet-sdk`, or add the following to your `devbox.json`: diff --git a/docs/app/docs/devbox_examples/languages/elixir.md b/docs/app/docs/devbox_examples/languages/elixir.md index 6b27318cd39..7bbadde5ca5 100644 --- a/docs/app/docs/devbox_examples/languages/elixir.md +++ b/docs/app/docs/devbox_examples/languages/elixir.md @@ -6,6 +6,9 @@ Elixir can be configured to install Hex and Rebar dependencies in a local direct [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/elixir/elixir_hello) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/elixir/elixir_hello) + + ## Adding Elixir to your project `devbox add elixir bash`, or add the following to your `devbox.json` diff --git a/docs/app/docs/devbox_examples/languages/fsharp.md b/docs/app/docs/devbox_examples/languages/fsharp.md index 5ad9219f9a8..d3873a1667d 100644 --- a/docs/app/docs/devbox_examples/languages/fsharp.md +++ b/docs/app/docs/devbox_examples/languages/fsharp.md @@ -6,6 +6,8 @@ F# and .NET projects can be easily generated in Devbox by adding the dotnet SDK [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/fsharp) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/fsharp/hello-world) + ## Adding .NET to your project `devbox add dotnet-sdk`, or add the following to your `devbox.json`: diff --git a/docs/app/docs/devbox_examples/languages/go.md b/docs/app/docs/devbox_examples/languages/go.md index 9a808bc6211..8673893787f 100644 --- a/docs/app/docs/devbox_examples/languages/go.md +++ b/docs/app/docs/devbox_examples/languages/go.md @@ -6,6 +6,8 @@ Go projects can be run in Devbox by adding the Go SDK to your project. If your p [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/go/hello-world) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/go/hello-world) + ## Adding Go to your Project `devbox add go`, or add the following to your `devbox.json` diff --git a/docs/app/docs/devbox_examples/languages/haskell.md b/docs/app/docs/devbox_examples/languages/haskell.md new file mode 100644 index 00000000000..75e991da259 --- /dev/null +++ b/docs/app/docs/devbox_examples/languages/haskell.md @@ -0,0 +1,24 @@ +--- +title: Haskell +--- + +Haskell projects that use the Stack Framework can be run in Devbox by adding the Stack and the Cabal packages to your project. You may also want to include libraries that Stack requires for compilation (described below) + +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/haskell/) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/development/haskell) + +## Adding Haskell and Stack to your Project + +`devbox add stack cabal-install zlib hpack`, or add the following to your `devbox.json` + +```json + "packages": [ + "stack", + "cabal-install", + "zlib", + "hpack" + ] +``` + +This will install GHC, and the Haskell Tool Stack in your Devbox Shell. \ No newline at end of file diff --git a/docs/app/docs/devbox_examples/languages/java.md b/docs/app/docs/devbox_examples/languages/java.md index 529e60dfa84..9486409362a 100644 --- a/docs/app/docs/devbox_examples/languages/java.md +++ b/docs/app/docs/devbox_examples/languages/java.md @@ -29,13 +29,18 @@ This will install the OpenJDK version 19. Other versions available include: Other distributions of the JDK (such as OracleJDK and Eclipse Temurin) are available in Nixpkgs, and can be found using [NixPkg Search](https://search.nixos.org/packages?channel=22.05&from=0&size=50&sort=relevance&type=packages&query=jdk#) ## Gradle + +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/java/gradle/hello-world) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/java/gradle/hello-world) + Gradle is a popular, multi-language build tool that is commonly used with JVM projects. To setup an example project using Gradle, follow the instructions below: 1. Create a dummy folder: `dummy/` and call `devbox init` inside it. Then add these packages: `devbox add jdk` and `devbox add gradle`. - Replace `jdk` with the version of JDK you want. Get the exact nix-pkg name from `search.nixos.org`. -2. Then do `devbox shell` to get a shell with that `jdk` nix pkg. -3. Then do: `gradle init` - - In the generated `gradle.build` file, put the following text block: +1. Then do `devbox shell` to get a shell with that `jdk` nix pkg. +1. Then do: `gradle init` + - In the generated `build.gradle` file, put the following text block: ```gradle apply plugin: 'java' apply plugin: 'application' @@ -48,9 +53,9 @@ Gradle is a popular, multi-language build tool that is commonly used with JVM pr } } ``` -4. `gradle build` should compile the package and create a `build/` directory that contains an executable jar file. -5. `gradle run` should print "Hello World!". -6. Add `build/` to `.gitignore`. +1. `gradle build` should compile the package and create a `build/` directory that contains an executable jar file. +1. `gradle run` should print "Hello World!". +1. Add `build/` to `.gitignore`. An example `devbox.json` would look like the following: @@ -69,6 +74,10 @@ An example `devbox.json` would look like the following: ## Maven +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/java/maven/hello-world) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/java/maven/hello-world) + Maven is an all-in-one CI-CD tool for building testing and deploying Java projects. To setup a sample project with Java and Maven in devbox follow the steps below: 1. Create a dummy folder: `dummy/` and call `devbox init` inside it. Then add the nix-pkg: `devbox add jdk` and `devbox add maven`. diff --git a/docs/app/docs/devbox_examples/languages/nim.md b/docs/app/docs/devbox_examples/languages/nim.md new file mode 100644 index 00000000000..a820315ee2c --- /dev/null +++ b/docs/app/docs/devbox_examples/languages/nim.md @@ -0,0 +1,23 @@ +--- +title: Nim +--- + +Nim projects can be run in Devbox by adding Nim and Nimble to your project. For some platforms, Nimble may return an error if OpenSSL is not available, so we recommend including `openssl_1_1` in your pacakges as well + +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/nim/spinnytest) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/development/nim/spinnytest) + +## Adding Go to your Project + +`devbox add nim nimble-unwrapped openssl_1_1`, or add the following to your `devbox.json` + +```json + "packages": [ + "nim", + "nimble-unwrapped", + "openssl_1_1" + ] +``` + +This will install Nim 1.6.8. \ No newline at end of file diff --git a/docs/app/docs/devbox_examples/languages/nodejs.md b/docs/app/docs/devbox_examples/languages/nodejs.md index 19567120cbe..5ac82b61624 100644 --- a/docs/app/docs/devbox_examples/languages/nodejs.md +++ b/docs/app/docs/devbox_examples/languages/nodejs.md @@ -6,6 +6,9 @@ Most NodeJS Projects will install their dependencies locally using NPM or Yarn, [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/nodejs) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/nodejs/nodejs-npm) + + ## Adding NodeJS to your Shell `devbox add nodejs`, or in your `devbox.json`: @@ -24,6 +27,10 @@ Other versions available include: ## Adding Yarn as your Package Manager +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/nodejs/nodejs-yarn) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/nodejs/nodejs-yarn) + `devbox add yarn`, or in your `devbox.json` add: ```json "packages": [ diff --git a/docs/app/docs/devbox_examples/languages/php.md b/docs/app/docs/devbox_examples/languages/php.md index c9edc41e309..bdee7792d93 100644 --- a/docs/app/docs/devbox_examples/languages/php.md +++ b/docs/app/docs/devbox_examples/languages/php.md @@ -4,6 +4,10 @@ title: PHP PHP projects can manage most of their dependencies locally with `composer`. Some PHP extensions, however, need to be bundled with PHP at compile time. +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/php/php8.1) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/php/php8.1) + ## Adding PHP to your Project Run `devbox add php php80Packages.composer`, or add the following to your `devbox.json`: diff --git a/docs/app/docs/devbox_examples/languages/python.md b/docs/app/docs/devbox_examples/languages/python.md index d153e53361c..0ea918efc03 100644 --- a/docs/app/docs/devbox_examples/languages/python.md +++ b/docs/app/docs/devbox_examples/languages/python.md @@ -28,7 +28,9 @@ Other versions available include: ## Pipenv -[**Example Link**](https://github.com/jetpack-io/devbox-examples/tree/main/development/python/pipenv) +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/python/pipenv) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/python/pipenv) [pipenv](https://pipenv.pypa.io/en/latest/) is a tool that will automatically set up a virtual environment for installing your PyPi packages. @@ -48,8 +50,11 @@ You can install `pipenv` by adding it to the packages in your `devbox.json`. You This init_hook will automatically start your virtualenv when you run `devbox shell`. ## Poetry + [**Example Link**](https://github.com/jetpack-io/devbox-examples/tree/main/development/python/poetry/poetry-demo) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/python/poetry/poetry-demo) + [Poetry](https://python-poetry.org/) is a packaging and dependency manager for Python that helps you manage your Python packages, and can automatically create a virtual environment for your project. You can install Poetry by adding it to the packages in your `devbox.json`. You can then manage your packages and virtual environment via a `pyproject.toml` diff --git a/docs/app/docs/devbox_examples/languages/ruby.md b/docs/app/docs/devbox_examples/languages/ruby.md index 49569c4d359..12c2e5121bd 100644 --- a/docs/app/docs/devbox_examples/languages/ruby.md +++ b/docs/app/docs/devbox_examples/languages/ruby.md @@ -2,6 +2,10 @@ title: Ruby --- +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/ruby) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/ruby) + Ruby can be automatically configured by Devbox via the built-in Ruby Plugin. This plugin will activate automatically when you install Ruby 2.7 using `devbox add ruby`. ## Adding Ruby to your shell @@ -28,6 +32,8 @@ Devbox will automatically create the following configuration when you install Ru ### Environment Variables +These environment variables configure Gem to install your gems locally, and set your Gem Home to a local folder + ```bash RUBY_CONFDIR={PROJECT_DIR}/.devbox/virtenv/ruby GEMRC={PROJECT_DIR}/.devbox/virtenv/ruby/.gemrc @@ -35,6 +41,9 @@ GEM_HOME={PROJECT_DIR}/.devbox/virtenv/ruby ``` ### Init Hook -```bash +This hook ensures that your locally installed Gems are in your PATH while running `devbox shell` + +```bash +"export PATH=\"{{ .Virtenv }}/bin:$PATH\"" ``` diff --git a/docs/app/docs/devbox_examples/languages/rust.md b/docs/app/docs/devbox_examples/languages/rust.md index 9e42d2ebc81..b2d979a471d 100644 --- a/docs/app/docs/devbox_examples/languages/rust.md +++ b/docs/app/docs/devbox_examples/languages/rust.md @@ -6,6 +6,8 @@ The easiest way to manage Rust with Devbox is to install `rustup`, and then conf [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/rust) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/rust) + ```json { "packages": [ diff --git a/docs/app/docs/devbox_examples/languages/zig.md b/docs/app/docs/devbox_examples/languages/zig.md new file mode 100644 index 00000000000..abc26ae341c --- /dev/null +++ b/docs/app/docs/devbox_examples/languages/zig.md @@ -0,0 +1,21 @@ +--- +title: Zig +--- + +Zig projects can be run in Devbox by adding Zig and Nimble to your project. + +[**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/development/zig/zig-hello-world) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=development/development/zig/zig-hello-world) + +## Adding Go to your Project + +`devbox add zig`, or add the following to your `devbox.json` + +```json + "packages": [ + "zig", + ] +``` + +This will install Zig 0.9.1. \ No newline at end of file diff --git a/docs/app/docs/devbox_examples/servers/apache.md b/docs/app/docs/devbox_examples/servers/apache.md index 4c9ba6c818e..f97a7d382b1 100644 --- a/docs/app/docs/devbox_examples/servers/apache.md +++ b/docs/app/docs/devbox_examples/servers/apache.md @@ -6,6 +6,8 @@ Apache can be automatically configured by Devbox via the built-in Apache Plugin. [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/servers/apache) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=servers/apache) + ### Adding Apache to your Shell Run `devbox add apacheHttpd`, or add the following to your `devbox.json` diff --git a/docs/app/docs/devbox_examples/servers/caddy.md b/docs/app/docs/devbox_examples/servers/caddy.md index 656a8ef1cd0..5079cead3b7 100644 --- a/docs/app/docs/devbox_examples/servers/caddy.md +++ b/docs/app/docs/devbox_examples/servers/caddy.md @@ -6,6 +6,8 @@ Caddy can be configured automatically using Devbox's built in Caddy plugin. This [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/servers/caddy) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=servers/caddy) + ### Adding Caddy to your Shell Run `devbox add caddy`, or add the following to your `devbox.json` diff --git a/docs/app/docs/devbox_examples/servers/nginx.md b/docs/app/docs/devbox_examples/servers/nginx.md index ef1daf9ed64..5e07ffb2dd6 100644 --- a/docs/app/docs/devbox_examples/servers/nginx.md +++ b/docs/app/docs/devbox_examples/servers/nginx.md @@ -6,6 +6,8 @@ NGINX can be automatically configured by Devbox via the built-in NGINX Plugin. T [**Example Repo**](https://github.com/jetpack-io/devbox-examples/tree/main/servers/nginx) +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=servers/nginx) + ## Adding NGINX to your Shell Run `devbox add nginx`, or add the following to your `devbox.json` diff --git a/docs/app/docs/devbox_examples/stacks/drupal.md b/docs/app/docs/devbox_examples/stacks/drupal.md new file mode 100644 index 00000000000..ad4188a886b --- /dev/null +++ b/docs/app/docs/devbox_examples/stacks/drupal.md @@ -0,0 +1,33 @@ +--- +title: Drupal +--- + +This example shows how to run a Drupal application in Devbox. It makes use of the PHP and Apache Plugins, while demonstrating how to configure a MariaDB instance to work with Devbox Cloud. + +[Example Repo](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/drupal) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=stacks/drupal) + +## How to Run + +In this directory, run: + +`devbox shell` + +To start all your services (PHP, MySQL, and NGINX), run `devbox run start_services`. To stop the services, run `devbox run stop_services` + +To create the `devbox_drupal` database and example table, you should run: + +`mysql -u root < setup_db.sql` + +To install Drupal and your dependencies, run `composer install`. The Drupal app will be installed in the `/web` directory, and you can configure your site by visiting `localhost/autoload` in your browser and following the interactive instructions + +To exit the shell, use `exit` + +## Installing the Umami Example + +Run the `install-drupal.sh` script to install the Umami Drupal example. This is a good starter project for trying out and familiarizing yourself with Drupal + +## Configuration + +Because the Nix Store is immutable, we need to store our configuration, data, and logs in a local project directory. This is stored in the `devbox.d` directory, in a subfolder for each of the packages that we will be installing. diff --git a/docs/app/docs/devbox_examples/stacks/jekyll.md b/docs/app/docs/devbox_examples/stacks/jekyll.md new file mode 100644 index 00000000000..50563cd6bb4 --- /dev/null +++ b/docs/app/docs/devbox_examples/stacks/jekyll.md @@ -0,0 +1,27 @@ +--- +title: Jekyll +--- + +This example demonstrates how to create and run a Jekyll blog in Devbox. It makes use of the Ruby Plugin to configure and setup your project. + +[Example Repo](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/jekyll) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=stacks/jekyll) + +Inspired by https://litchipi.github.io/nix/2023/01/12/build-jekyll-blog-with-nix.html + +## How to Run + +1. Install [Devbox](https://www.jetpack.io/devbox/docs/installing_devbox/) +2. Run `devbox shell` to install your packages and run the init hook +3. In the root directory, run `devbox run generate` to install and package the project with bundler +4. In the root directory, run `devbox run server` to start the server. You can access the Jekyll example at `localhost:4000` + +## How to Recreate this Example + +1. Install [Devbox](https://www.jetpack.io/devbox/docs/installing_devbox/) +1. In a new directory, run `devbox init` to create an empty config +1. Run `devbox add ruby_3_1 bundler` to add Ruby and Bundler to your packages +1. Add `"gem install jekyll --version \"~> 3.9.2\""` to your init hook. This will install the Jekyll gem in your local project. +1. Start your `devbox shell`, then run `jekyll new myblog` to create the starter project. +1. From here you can install the project using Bundler, and start the server using `jekyll serve`. See the scripts in this example for more details. \ No newline at end of file diff --git a/docs/app/docs/devbox_examples/stacks/lapp.md b/docs/app/docs/devbox_examples/stacks/lapp.md new file mode 100644 index 00000000000..69bab38f252 --- /dev/null +++ b/docs/app/docs/devbox_examples/stacks/lapp.md @@ -0,0 +1,28 @@ +--- +title: LAPP (Linux, Apache, PHP, Postgres) +--- + +This example shows how to build a simple application using Apache, PHP, and PostgreSQL. It uses Devbox Plugins for all 3 packages to simplify configuration + +[Example Repo](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/lapp-stack) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=stacks/lapp-stack) + +## How to Run + +1. To start Apache, PHP-FPM, and Postgres in the background, run `devbox service start`. +2. Once the services are running, you can start your shell using `devbox shell`. This will also initialize your database by running `initdb` in the init hook. +3. Create the database and load the test data by using `devbox run create_db`. +4. You can now test the app using `localhost:8080` to hit the Apache Server. If you want Apache to listen on a different port, you can change the `HTTPD_PORT` environment variable in the Devbox init_hook. + +## How to Recreate this Example + +1. Create a new project with `devbox init` +1. Add the packages using the command below. Installing the packages with `devbox add` will ensure that the plugins are activated: + +```bash +devbox add postgres php81 php81Extensions.pgsql apacheHttpd +``` + +1. Update `devbox.d/apacheHttpd/httpd.conf` to point to the directory with your PHP files. You'll need to update the `DocumentRoot` and `Directory` directives. +1. Follow the instructions above in the How to Run section to initialize your project diff --git a/docs/app/docs/devbox_examples/stacks/lepp.md b/docs/app/docs/devbox_examples/stacks/lepp.md new file mode 100644 index 00000000000..b03ac436744 --- /dev/null +++ b/docs/app/docs/devbox_examples/stacks/lepp.md @@ -0,0 +1,42 @@ +--- +title: LEPP (Linux, Nginx, PHP, Postgres) +--- + + +An example Devbox shell for NGINX, Postgres, and PHP. This example uses Devbox Plugins for all 3 packages to simplify configuration + +[Example Repo](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/lepp-stack) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=stacks/lepp-stack) + +## How to Run + +### Initializing + +In this directory, run: + +`devbox shell` + +This will run `initdb` automatically on initialization. To start the Servers + Postgres service, run: + +`devbox services start` + +### Creating the DB + +You can run the creation script using `devbox run create_db`. This will create a Postgres DB based on `setup_postgres_db.sql`. + +### Testing the Example + +You can query Nginx on port 80, which will route to the PHP example. + +## How to Recreate this Example + +1. Create a new project with `devbox init` +1. Add the packages using the command below. Installing the packages with `devbox add` will ensure that the plugins are activated: + +```bash +devbox add postgres php81 php81Extensions.pgsql nginx +``` + +1. Update `devbox.d/nginx/httpd.conf` to point to the directory with your PHP files. You'll need to update the `root` directive to point to your project folder +2. Follow the instructions above in the How to Run section to initialize your project. \ No newline at end of file diff --git a/docs/app/docs/devbox_examples/stacks/rails.md b/docs/app/docs/devbox_examples/stacks/rails.md new file mode 100644 index 00000000000..9e3fe7dbcc9 --- /dev/null +++ b/docs/app/docs/devbox_examples/stacks/rails.md @@ -0,0 +1,36 @@ +--- +title: Ruby on Rails +--- + +This example demonstrates how to setup a simple Rails application. It makes use of the Ruby Plugin, and installs SQLite to use as a database. + +[Example Repo](https://github.com/jetpack-io/devbox-examples/tree/main/stacks/rails) + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/github.com/jetpack-io/devbox-examples?folder=stacks/rails) + +## How To Run + +Run `devbox shell` to install rails and prepare the project. + +Once the shell starts, you can start the rails app by running: + +```bash +cd blog +bin/rails server +``` + +## How to Recreate this Example + +1. Create a new Devbox project with `devbox init` +2. Add the packages using + + ```bash + devbox add ruby_3_1 bundler nodejs-19_x yarn sqlite + ``` + +3. Start a devbox shell, and install the rails CLI with `gem install rails` +4. Create your Rails app by running the following in your Devbox Shell + + ```bash + rails new blog + ``` diff --git a/docs/app/docs/quickstart.mdx b/docs/app/docs/quickstart.mdx index 793a98417ae..d6a132c39ae 100644 --- a/docs/app/docs/quickstart.mdx +++ b/docs/app/docs/quickstart.mdx @@ -23,6 +23,12 @@ curl -fsSL https://get.jetpack.io/devbox | bash ``` Devbox requires the [Nix Package Manager](https://nixos.org/download.html). If Nix is not detected on your machine when running a command, Devbox will automatically install it for you with the default settings for your OS. Don't worry: You can use Devbox without needing to learn the Nix Language. +:::note +If you want to try Devbox before installing it, you can open a cloud shell on your browser using the link below + +[![Open In Devbox.sh](https://jetpack.io/img/devbox/open-in-devbox.svg)](https://devbox.sh/new) +::: + ## Create a development environment We’ll create a new development environment with the packages we need. These packages will only be available when using this Devbox shell, ensuring we don’t pollute your machine. diff --git a/docs/app/sidebars.js b/docs/app/sidebars.js index 65c26a6995c..758cd29da65 100644 --- a/docs/app/sidebars.js +++ b/docs/app/sidebars.js @@ -53,98 +53,130 @@ const sidebars = { }] }, { type: 'category', - label: "CI/CD Reference", + label: 'Devbox Cloud', + link: { type: 'doc', id: 'devbox_cloud/index' }, collapsed: true, items: [{ type: 'doc', - id: 'continuous_integration/github_action' - }] - }, { - type: 'category', - label: 'CLI Reference', - link: { type: 'doc', id: 'cli_reference/devbox' }, - collapsed: true, - items: [{ - type: 'doc', - id: 'cli_reference/devbox_add', - label: 'devbox add' - }, { - type: 'doc', - id: 'cli_reference/devbox_generate', - label: 'devbox generate' - }, { - type: 'doc', - id: 'cli_reference/devbox_generate_devcontainer', - label: 'devbox generate devcontainer' - }, { - type: 'doc', - id: 'cli_reference/devbox_generate_direnv', - label: 'devbox generate direnv ' - }, { - type: 'doc', - id: 'cli_reference/devbox_generate_dockerfile', - label: 'devbox generate dockerfile' - }, { - type: 'doc', - id: 'cli_reference/devbox_info', - label: 'devbox info' - }, { - type: 'doc', - id: 'cli_reference/devbox_init', - label: 'devbox init' - }, { - type: 'doc', - id: 'cli_reference/devbox_rm', - label: 'devbox rm' - }, { - type: 'doc', - id: 'cli_reference/devbox_run', - label: 'devbox run' - }, { - type: 'doc', - id: 'cli_reference/devbox_services', - label: 'devbox services' - }, { - type: 'doc', - id: 'cli_reference/devbox_services_ls', - label: 'devbox services ls' - }, { - type: 'doc', - id: 'cli_reference/devbox_services_restart', - label: 'devbox services restart' - }, { - type: 'doc', - id: 'cli_reference/devbox_services_start', - label: 'devbox services start' + id: 'devbox_cloud/getting_started' }, { type: 'doc', - id: 'cli_reference/devbox_services_stop', - label: 'devbox services stop' + id: 'devbox_cloud/browser_getting_started' }, { type: 'doc', - id: 'cli_reference/devbox_shell', - label: 'devbox shell' - }, { - type: 'doc', - id: 'cli_reference/devbox_version', - label: 'devbox version' + id: 'devbox_cloud/beta_faq' }] - }, { - type: 'doc', - id: 'configuration' }, { type: 'category', - label: "IDE Reference", + label: 'Reference', collapsed: false, items: [{ - type: 'doc', - id: 'ide_configuration/direnv', + type: 'category', + label: "CI/CD Reference", + collapsed: true, + items: [{ + type: 'doc', + id: 'continuous_integration/github_action' + }] }, { - type: 'doc', - id: 'ide_configuration/eclipse', + type: 'category', + label: 'Devbox CLI', + link: { type: 'doc', id: 'cli_reference/devbox' }, + collapsed: true, + items: [{ + type: 'doc', + id: 'cli_reference/devbox_add', + label: 'devbox add' + }, { + type: 'doc', + id: 'cli_reference/devbox_cloud', + label: 'devbox cloud' + }, { + type: 'doc', + id: 'cli_reference/devbox_cloud_forward', + label: 'devbox cloud forward' + }, { + type: 'doc', + id: 'cli_reference/devbox_cloud_shell', + label: 'devbox cloud shell' + }, { + type: 'doc', + id: 'cli_reference/devbox_generate', + label: 'devbox generate' + }, { + type: 'doc', + id: 'cli_reference/devbox_generate_devcontainer', + label: 'devbox generate devcontainer' + }, { + type: 'doc', + id: 'cli_reference/devbox_generate_direnv', + label: 'devbox generate direnv ' + }, { + type: 'doc', + id: 'cli_reference/devbox_generate_dockerfile', + label: 'devbox generate dockerfile' + }, { + type: 'doc', + id: 'cli_reference/devbox_info', + label: 'devbox info' + }, { + type: 'doc', + id: 'cli_reference/devbox_init', + label: 'devbox init' + }, { + type: 'doc', + id: 'cli_reference/devbox_rm', + label: 'devbox rm' + }, { + type: 'doc', + id: 'cli_reference/devbox_run', + label: 'devbox run' + }, { + type: 'doc', + id: 'cli_reference/devbox_services', + label: 'devbox services' + }, { + type: 'doc', + id: 'cli_reference/devbox_services_ls', + label: 'devbox services ls' + }, { + type: 'doc', + id: 'cli_reference/devbox_services_restart', + label: 'devbox services restart' + }, { + type: 'doc', + id: 'cli_reference/devbox_services_start', + label: 'devbox services start' + }, { + type: 'doc', + id: 'cli_reference/devbox_services_stop', + label: 'devbox services stop' + }, { + type: 'doc', + id: 'cli_reference/devbox_shell', + label: 'devbox shell' + }, { + type: 'doc', + id: 'cli_reference/devbox_version', + label: 'devbox version' + }] }, { type: 'doc', - id: 'ide_configuration/vscode' + id: 'configuration' + }, { + type: 'category', + label: "IDE Reference", + collapsed: true, + items: [{ + type: 'doc', + id: 'ide_configuration/direnv', + }, { + type: 'doc', + id: 'ide_configuration/eclipse', + }, { + type: 'doc', + id: 'ide_configuration/vscode' + }] }] }, { type: 'category', @@ -170,10 +202,18 @@ const sidebars = { type: 'doc', id: 'devbox_examples/languages/go' }, + { + type: 'doc', + id: 'devbox_examples/languages/haskell' + }, { type: 'doc', id: 'devbox_examples/languages/java' }, + { + type: 'doc', + id: 'devbox_examples/languages/nim' + }, { type: 'doc', id: 'devbox_examples/languages/nodejs' @@ -194,6 +234,10 @@ const sidebars = { type: 'doc', id: 'devbox_examples/languages/rust' }, + { + type: 'doc', + id: 'devbox_examples/languages/zig' + } ] }, { type: 'category', @@ -221,6 +265,17 @@ const sidebars = { { type: 'doc', id: 'devbox_examples/servers/caddy' }, { type: 'doc', id: 'devbox_examples/servers/nginx' } ] + }, { + type: 'category', + label: 'Stacks', + collapsed: true, + items: [ + { type: 'doc', id: 'devbox_examples/stacks/drupal' }, + { type: 'doc', id: 'devbox_examples/stacks/jekyll' }, + { type: 'doc', id: 'devbox_examples/stacks/lapp' }, + { type: 'doc', id: 'devbox_examples/stacks/lepp' }, + { type: 'doc', id: 'devbox_examples/stacks/rails' } + ] }] }], }; diff --git a/docs/app/static/img/devbox_cloud_browser.png b/docs/app/static/img/devbox_cloud_browser.png new file mode 100644 index 00000000000..3dede2cce0b Binary files /dev/null and b/docs/app/static/img/devbox_cloud_browser.png differ diff --git a/docs/app/static/img/open_in_devbox.svg b/docs/app/static/img/open_in_devbox.svg new file mode 100644 index 00000000000..5fa6eeca4b9 --- /dev/null +++ b/docs/app/static/img/open_in_devbox.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + +