diff --git a/README.md b/README.md
index 12414d4..029bb6a 100644
--- a/README.md
+++ b/README.md
@@ -61,17 +61,21 @@ A Docker setup requires both Docker *and* Docker Compose.
bunx prisma migrate dev --name init
```
-6. **Bring the container up**
+6. **Setup environment variables**
+
+ Now is the time to go to the "Environment Variables" section and configure them in your `.env.local` file.
+
+7. **Bring the container up**
```bash
- docker compose up -d
+ docker compose up -d --build
```
Please note: `sudo` may be required.
You may customize the container with the included `docker-compose.yml` file if needed. Your server will start on port `3019` by default. We suggest using a reverse proxy to serve the site on a domain.
-7. **Complete Setup**
+8. **Complete Setup**
If you would like to host the entire LibreCloud frontend and backend,
you will also need to set up the following repositories and edit this project to work with *your* setup.
diff --git a/docs/.nojekyll b/docs/.nojekyll
new file mode 100644
index 0000000..e69de29
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..4b82c0b
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,19 @@
+
+
+# Welcome to LibreCloud Docs
+
+LibreCloud's web repository is a Next.js web application which serves as out frontend and dashboard for end users of LibreCloud. This documentation will guide you through setting up and developing this interface.
+
+We have made every effort to update and review the documentation and this stands to be the best resource for setting up `web`.
+
+## Requirements
+
+LibreCloud is not one piece of software. It is a bridge between FOSS and a this frontend. This project assumes you have a setup almost identical to that of LibreCloud. With our instructions and some Google searches, you should have very few problems getting setup.
+
+This frontend is optomized for a Linux environment. While support may vary from distro-to-distro, support is prioritized for Ubuntu.
+
+You will need to setup the following services with Docker, and route them properly, based on our [Environment Variable](reference/env.md) requirements. Over time, this will become more flexible.
+
+## Get Started
+
+For the best experience, we suggest you use a [Docker setup](getstarted/docker.md) in production, and a [Dev environment](getstarted/dev.md) while testing/making changes.
\ No newline at end of file
diff --git a/docs/_sidebar.md b/docs/_sidebar.md
new file mode 100644
index 0000000..8f70552
--- /dev/null
+++ b/docs/_sidebar.md
@@ -0,0 +1,13 @@
+LibreCloud
+
+* [Home](/)
+
+* Get Started
+
+ * [Start with Docker](getstarted/docker.md)
+ * [Dev Server Setup](getstarted/dev.md)
+
+* Reference
+
+ * [Environment Variables](reference/env.md)
+ * [Database Migration Guide](reference/db-migration.md)
\ No newline at end of file
diff --git a/docs/getstarted/dev.md b/docs/getstarted/dev.md
new file mode 100644
index 0000000..e9200bf
--- /dev/null
+++ b/docs/getstarted/dev.md
@@ -0,0 +1,52 @@
+# Dev Server Setup
+
+1. **Install Bun if you haven't already**
+
+ Bun is a fast JavaScript runtime, which we prefer over `npm`. These instructions will be written for Bun, but could be adapted to `npm` or `yarn` if needed.
+
+ ```bash
+ curl -fsSL https://bun.sh/install | bash
+ ```
+
+2. **Clone the repo**
+
+ ```bash
+ git clone https://git.pontusmail.org/librecloud/web.git
+ cd web
+ ```
+
+3. **Install dependencies**
+
+ ```bash
+ bun install
+ ```
+
+4. **Generate auth secret**
+
+ This step is relatively painless. Execute the below command to generate a `.env.local` file with an `AUTH_SECRET`.
+
+ ```bash
+ bunx auth secret
+ ```
+
+5. **Configure environment variables**
+
+ Following the environment variables section of this README, update your newly created `.env.local` file with your configuration.
+
+6. **Initialize Prisma**
+
+ Because `web` uses a database for storing Git link statuses (and other things to come), you will need to initialize the SQLite database.
+
+ A `schema.prisma` file has been provided to make this easy.
+
+ This can be done by executing:
+
+ ```bash
+ bunx prisma migrate dev --name init
+ ```
+
+7. **Start dev server**
+
+ ```bash
+ bun dev
+ ```
\ No newline at end of file
diff --git a/docs/getstarted/docker.md b/docs/getstarted/docker.md
new file mode 100644
index 0000000..0c4b067
--- /dev/null
+++ b/docs/getstarted/docker.md
@@ -0,0 +1,75 @@
+# Start with Docker
+
+A Docker setup requires both Docker *and* Docker Compose.
+
+1. **Install Bun if you haven't already**
+
+ Bun is a fast JavaScript runtime, which we prefer over `npm`. These instructions will be written for Bun, but could be adapted to `npm` or `yarn` if needed.
+
+ ```bash
+ curl -fsSL https://bun.sh/install | bash
+ ```
+
+2. **Fetch needed file(s)**
+
+ Pick your preferred option to get the file(s) needed for Docker. Either option is fine, although Git is arguably the best option.
+
+ **Option One:** Clone Git Repo
+
+ ```bash
+ git clone https://git.pontusmail.org/librecloud/web.git
+ ```
+
+ **Option Two:** Download Compose file only
+
+ ```bash
+ wget https://git.pontusmail.org/librecloud/web/raw/branch/main/docker-compose.yml
+ ```
+
+ You may have to install `wget`, or you could use `curl` instead.
+
+3. **Generate auth secret**
+
+ This step is relatively painless. Execute the below command to generate a `.env.local` file with an `AUTH_SECRET`.
+
+ ```bash
+ bunx auth secret
+ ```
+
+4. **Configure environment variables**
+
+ Following the environment variables section of this README, update your newly created `.env.local` file with your configuration.
+
+5. **Initialize Prisma**
+
+ Because `web` uses a database for storing Git link statuses (and other things to come),
+ you will need to initialize the SQLite database.
+ However, if you are using Docker Compose, a database has already been generated in the container image and is blank.
+
+ If you have a reason to initialize Prisma now, feel free to execute:
+
+ ```bash
+ bunx prisma migrate dev --name init
+ ```
+
+6. **Setup environment variables**
+
+ Now is the time to go to the "Environment Variables" section and configure them in your `.env.local` file.
+
+7. **Bring the container up**
+
+ ```bash
+ docker compose up -d --build
+ ```
+
+ Please note: `sudo` may be required.
+
+ You may customize the container with the included `docker-compose.yml` file if needed. Your server will start on port `3019` by default. We suggest using a reverse proxy to serve the site on a domain.
+
+8. **Complete Setup**
+
+ If you would like to host the entire LibreCloud frontend and backend,
+ you will also need to set up the following repositories and edit this project to work with *your* setup.
+
+ * [mail-connect](https://git.pontusmail.org/librecloud/mail-connect)
+ * [docker-mailserver](https://github.com/docker-mailserver/docker-mailserver)
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..f9a1a95
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,23 @@
+
+
+