diff --git a/docs/index.md b/docs/index.md
index 073352b..c70de69 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -9,7 +9,8 @@ The [CLI](cli-reference/dub.md) can be used to
- compile projects and external programs ([dub build](cli-reference/dub-build.md), [dub run](cli-reference/dub-run.md))
- test projects ([dub test](cli-reference/dub-test.md))
-To see how to obtain dub, **go to the next page by pressing the button below**.
+DUB is bundled with most D compilers' distributions. However, it's also possible to install it separately.
+See [Installing DUB](getting-started/install.md) for details.
@@ -17,6 +18,71 @@ To see how to obtain dub, **go to the next page by pressing the button below**.
-## Starting a new project
+## DUB Basics
-You can also skip ahead to [First steps](getting-started/first-steps.md) if you already have dub installed.
+DUB is a build tool similar to other modern languages build tools like Javascript's [npm](https://www.npmjs.com/)
+and Rust's [cargo](https://crates.io/).
+
+A file called `dub.sdl` (or `dub.json`) is used to configure a DUB project.
+
+> [SDL](https://sdlang.org/) is a "Simple Declarative Language" inspired by D's syntax.
+> Whether to use SDL or JSON for the DUB file is a [matter of taste](https://forum.dlang.org/thread/fehzcwpabruiyhpwiywj@forum.dlang.org).
+
+A DUB file may look like this:
+
+```sdl
+name "myproject"
+description "A minimal D application."
+authors "My Name"
+copyright "Copyright © 2024, My Name"
+license "Boost"
+
+dependency "libasync" version="~>0.9.5"
+
+configuration "library" {
+ targetPath "target/lib"
+}
+
+configuration "unittest" {
+ dependency "tested" version="~>0.9.5"
+ dependency "dshould" version="~>1.7.1"
+ targetPath "target/test"
+}
+```
+
+[DUB Configurations](dub-reference/configurations.md) are used to create different variations of a project.
+
+In the above example, all configurations include a dependency on `libasync` because that's declared at the top-level,
+but only the `unittest` configuration includes the dependencies `tested` and `dshould`.
+
+When running `dub test`, all [Unit Tests](https://tour.dlang.org/tour/en/gems/unittesting) found in
+[sourcePaths](dub-reference/build_settings.md#sourcepaths) are executed using the `unittest` configuration by default.
+
+To specify a configuration explicitly when building, use the `--config` option:
+
+```
+dub build --config=library
+```
+
+DUB also uses the concept of [build types](dub-reference/buildtypes.md) to define what to build. Many build types are
+pre-defined, but the most common ones are `debug` and `release`.
+
+Hence, to build the release version of a library, the following command could be used:
+
+```
+dub build --config=library --build=release
+```
+
+Finally, to run the application, use `dub run`.
+
+Check [Building](dub-guide/building.md) for more details.
+
+## Next Steps
+
+[First Steps](getting-started/first-steps.md) completes this overview of the basic DUB workflow.
+
+The [DUB Guide](dub-guide/recipe.md) goes into more details about building, testing, configuring dependencies and registries,
+shared libraries, publishing packages and more.
+
+More experienced users can use the [DUB Reference](dub-reference/recipe.md) and [CLI Reference](cli-reference/dub/)
+for a comprehensive list of the available options.