diff --git a/JS-README.md b/JS-README.md
new file mode 100644
index 0000000000000000000000000000000000000000..c35ce3b4ce721b711e36f9a1d8ec2ba76a4a5db6
--- /dev/null
+++ b/JS-README.md
@@ -0,0 +1,73 @@
+# Which JavaScript files does Portal need to run?
+
+The important JavaScript files can be found in `/portal/static/js/`!
+This is mostly Mithril.js.
+
+## `/portal/static/js/components`
+
+[TODO] furtherly explain the components
+
+This is where the frontend components are located. The components are divided into two categories: `pages` and `pieces`. **Mithril.js** uses `pages` to render the main content of the website, while `pieces` are used to render smaller components that are used in multiple places. `pieces` then are embedded into `pages`.
+
+This could help you around
++ [Mithril.js documentation](https://mithril.js.org/)
++ [Convert plain HTML to Mithril](https://arthurclemens.github.io/mithril-template-converter/index.html)
+
+
+
+### `/portal/static/js/components/pages`
+
+
+
+Generally, everything having its own tab in the Navbar is a `page`. They are the first components that are rendered when the website is loaded.
+
++ `Base.mjs`
++ `Fachschaftssitzung.mjs`
++ `FsServices.mjs`
++ `Login.mjs`
++ `M.mjs`
++ `Start.mjs`
++ `UniServices.mjs`
++ `Unlock.mjs`
+
+### `/portal/static/js/components/pieces`
+
+These are the smaller components that are embedded in multiple places.
+
+
++ `AccountRequired.mjs`
++ `Agenda.mjs`
++ `BoxedButton.mjs`
++ `ButtonAndTextLink.mjs`
++ `Nav.mjs`
++ `NavPageLink.mjs`
++ `PasswordinVault.mjs`
++ `ServiceLink.mjs`
++ `Toast.mjs`
++ `UnlockRequired`
+
+## `/portal/static/js/model`
+
+### `/portal/static/js/model/Service.mjs`
+
+This renders an individual service.
+
+### `/portal/static/js/model/Services.mjs`
+
+This renders the list of our services.
+
+## `/portal/static/js/account.mjs`
+
+Here, after the login, a session token is created and stored in the `LocalStorage`.
+It also responsible for ensuring the validity and non-expiry of the session token.
+Users get logged in and logged out here.
+
+## `/portal/static/js/gitlab.mjs`
+
+Arcane magic. We get our Fachschaftssitzung protocols here.
+Also, there's some yapping about the Same Origin Policy, might be interesting, but misses a TL;DR.
+
+## `/portal/static/js/portal.mjs`
+
+This is the main file that initializes the Mithril.js app and sets up the routing.
+
diff --git a/README.md b/README.md
index 2232d4ca939c25d81f9bb0a32406d16a7de9e19b..924797bb3cdbf867dad2976a02c0188c892dcbda 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,81 @@
 
 # Development
 
+## Setup
+
+### with docker
+
 To run a flask shell inside the container:
 
 ```sh
 sudo docker exec -it portal-app-1 flask shell
 ```
+
+### without docker
+
+```bash
+# mkdir yourself into the portal directory
+python3 -m venv venv
+source venv/bin/activate
+pip install -r requirements.txt
+export FLASK_APP=portal
+alembic upgrade head # to create (and update!) the database
+flask run
+```
+
+---
+#### Wichtig:
+
+Alembic must always be up to date in order to update the database schema.
+Please run `alembic upgrade head` after pulling changes from the repository.
+---
+
+## How to move around in this repo
+
+## `/portal/`: Main Application
+
+Here are all the important tech-stack related stuff and some Python files for Flask, contained in a cozy space
+
+### `/portal/api/`: API Endpoints (Python)
+
+Here you can find the API endpoints, written in Python
+
+### `/portal/model`: database models (Python)
+
+We use `SQLAlchemy` to interact with the database. The models are defined in this folder.
+
+### `/portal/static`: CSS, JS, images, API documentation
+
+This is giving the frontend some love and, more importantly, its purpose and functionality. The API documentation is also laying around here.
+
+#### `/portal/static/css` (CSS, obviously)
+
+Here you can find the CSS files for the frontend. The main CSS file is `main.css`.
+
+#### `/portal/static/docs`
+
+Here you can find the documentation for the API in its respective versions.
+API specifications (`openapi-spec.yaml`) are written in OpenAPI 3.0.0 and are located in the `/api/{version}` folder.
+
+
+#### `/portal/static/img`: Frag nicht, was für Bilder. Einfach Bilder. I won't translate this.
+
+What did you expect?
+
+#### `/portal/static/js`: JavaScript files
+
+Lol, that should actually ![have its own README](JS-README.md).
+
+It contains all the JavaScript files that are responsible for the frontend interactions.
+
+
+### `/portal/templates`
+
+These are the HTML files that Flask renders. They are written in Jinja2, which is a template engine for Python.
+
+### `.py`-files
+
++ `__init__.py`: Fortunately, explaining this was not a Prog2 exam question
++ `db_config.py`: [TODO] Have fun, Jakob. Database configuration (arcane magic).
++ `main.py`: The Flask server is in here
++ `problem_details.py`: RFC 7807-compliant problem details responses for the API.