diff --git a/.devcontainer/README.md b/.devcontainer/README.md
new file mode 100644
index 0000000000..a7e792da13
--- /dev/null
+++ b/.devcontainer/README.md
@@ -0,0 +1,93 @@
+# devcontainer
+
+## example usage
+
+Below are some example use cases you might want to run from within the
+devcontainer (either
+[within VSCode locally](https://code.visualstudio.com/docs/devcontainers/create-dev-container#_create-a-devcontainerjson-file)
+or in your browser via
+[GitHub Codespaces](https://github.com/features/codespaces)).
+
+### Run pre-commit
+
+```bash
+# run pre-commit
+pre-commit run --all-files
+```
+
+A successfull run should look something like this:
+
+```
+@andrewm4894 ➜ /workspaces/Open-Assistant (devcontainer-improvements) $ pre-commit run --all-files
+[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
+[INFO] Initializing environment for https://github.com/psf/black.
+[INFO] Initializing environment for https://github.com/psf/black:.[jupyter].
+[INFO] Initializing environment for https://github.com/pycqa/flake8.
+[INFO] Initializing environment for https://github.com/pycqa/isort.
+[INFO] Initializing environment for https://github.com/pre-commit/mirrors-prettier.
+[INFO] Initializing environment for https://github.com/pre-commit/mirrors-prettier:prettier@2.7.1.
+[INFO] Initializing environment for local.
+[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
+[INFO] Once installed this environment will be reused.
+[INFO] This may take a few minutes...
+[INFO] Installing environment for https://github.com/psf/black.
+[INFO] Once installed this environment will be reused.
+[INFO] This may take a few minutes...
+[INFO] Installing environment for https://github.com/pycqa/flake8.
+[INFO] Once installed this environment will be reused.
+[INFO] This may take a few minutes...
+[INFO] Installing environment for https://github.com/pycqa/isort.
+[INFO] Once installed this environment will be reused.
+[INFO] This may take a few minutes...
+[INFO] Installing environment for https://github.com/pre-commit/mirrors-prettier.
+[INFO] Once installed this environment will be reused.
+[INFO] This may take a few minutes...
+[INFO] Installing environment for local.
+[INFO] Once installed this environment will be reused.
+[INFO] This may take a few minutes...
+trim trailing whitespace.................................................Passed
+check python ast.........................................................Passed
+check yaml...............................................................Passed
+check json...............................................................Passed
+check for case conflicts.................................................Passed
+detect private key.......................................................Passed
+fix python encoding pragma...............................................Passed
+forbid submodules....................................(no files to check)Skipped
+mixed line ending........................................................Passed
+fix requirements.txt.....................................................Passed
+check that executables have shebangs.....................................Passed
+check that scripts with shebangs are executable..........................Passed
+check BOM - deprecated: use fix-byte-order-marker........................Passed
+check for broken symlinks............................(no files to check)Skipped
+check for merge conflicts................................................Passed
+check for added large files..............................................Passed
+fix end of files.........................................................Passed
+black-jupyter............................................................Passed
+flake8...................................................................Passed
+isort....................................................................Passed
+prettier.................................................................Passed
+Lint website.............................................................Passed
+```
+
+### Docker compose
+
+```bash
+# build the image
+docker compose up --build
+```
+
+You should see some docker containers being pulled and activated.
+
+Once you see a line like:
+
+```
+open-assistant-web-1 | Listening on port 3000 url: http://localhost:3000
+```
+
+you should be able to access that port like below:
+
+
+
+this port can then be forwarded to a browser tab like below:
+
+
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index b737430a66..22f433748f 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,7 +1,12 @@
{
- "service": "frontend-dev",
- "dockerComposeFile": "../docker-compose.yaml",
- "forwardPorts": [3000],
+ "name": "Open-Assistant",
+ "image": "mcr.microsoft.com/vscode/devcontainers/universal",
+ "features": {
+ "ghcr.io/devcontainers-contrib/features/pre-commit:2": {
+ "version": "latest"
+ }
+ },
+ "postCreateCommand": "bash .devcontainer/post_create_command.sh",
"customizations": {
"vscode": {
"extensions": ["GitHub.copilot"]
diff --git a/.devcontainer/post_create_command.sh b/.devcontainer/post_create_command.sh
new file mode 100644
index 0000000000..983576b942
--- /dev/null
+++ b/.devcontainer/post_create_command.sh
@@ -0,0 +1,2 @@
+# ensure pre-commit is installed
+pre-commit install
diff --git a/README.md b/README.md
index 103dc01058..b619c931cd 100644
--- a/README.md
+++ b/README.md
@@ -26,6 +26,15 @@ interact with the website.
**Note:** When logging in via email, navigate to `http://localhost:1080` to get
the magic email login link.
+**Note:** If you would like to run this in a standardized development
+environment (a
+["devcontainer"](https://code.visualstudio.com/docs/devcontainers/containers))
+using
+[vscode locally](https://code.visualstudio.com/docs/devcontainers/create-dev-container#_create-a-devcontainerjson-file)
+or in a web browser using
+[GitHub Codespaces](https://github.com/features/codespaces), you can use the
+provided [`.devcontainer`](.devcontainer/) folder.
+
## The Plan
We want to get to an initial MVP as fast as possible, by following the 3-steps