diff --git a/README.md b/README.md
index 74def556eb..254ff2a8f6 100644
--- a/README.md
+++ b/README.md
@@ -9,22 +9,13 @@
## Modrinth Monorepo
-Welcome to the Modrinth Monorepo, the primary codebase for the Modrinth web interface and app. It contains  lines of code and has  contributors!
+Welcome to the Modrinth Monorepo, the primary codebase for Modrinth projects. It contains  lines of code and has  contributors!
If you're not a developer and you've stumbled upon this repository, you can access the web interface on the [Modrinth website](https://modrinth.com) and download the latest release of the app [here](https://modrinth.com/app).
-## Development
+## Development and contributing
-This repository contains two primary packages. For detailed development information, please refer to their respective READMEs:
-
-- [Web Interface](apps/frontend/README.md)
-- [Desktop App](apps/app/README.md)
-
-## Contributing
-
-We welcome contributions! Before submitting any contributions, please read our [contributing guidelines](https://docs.modrinth.com/contributing/getting-started/).
-
-If you plan to fork this repository for your own purposes, please review our [copying guidelines](COPYING.md).
+You can read more about the codebase and how to contribute to it on the [contributing documentation page](https://docs.modrinth.com/contributing/modrinth/).
## Security
diff --git a/apps/app/README.md b/apps/app/README.md
index 298a7dced8..02cc10184d 100644
--- a/apps/app/README.md
+++ b/apps/app/README.md
@@ -1,29 +1,9 @@
# 
-## Modrinth App
+## Modrinth App (Theseus)
-The Modrinth App is a desktop application for managing your Minecraft mods. It is built with [Tauri](https://tauri.app/) and [Vue](https://vuejs.org/).
+The [Modrinth App](https://modrinth.com/app) is Modrinth's Minecraft launcher that lets users play with any projects like mods, shaders and modpacks aviable on [Modrinth](https://modrinth.com/).
If you're not a developer and you've stumbled upon this repository, you can download the latest release of the app from the [Modrinth website](https://modrinth.com/app).
-## Development
-
-### Pre-requisites
-
-Before you begin, ensure you have the following installed on your machine:
-
-- [Node.js](https://nodejs.org/en/)
-- [pnpm](https://pnpm.io/)
-- [Rust](https://www.rust-lang.org/tools/install)
-- [Tauri](https://v2.tauri.app/start/prerequisites/)
-
-### Setup
-
-Follow these steps to set up your development environment:
-
-```bash
-pnpm install
-pnpm app:dev
-```
-
-You should now have a development build of the app running with hot-reloading enabled. Any changes you make to the code will automatically refresh the app.
+Read more about this projects and how to contribute to it on the [theseus contributing page](https://docs.modrinth.com/contributing/theseus/).
\ No newline at end of file
diff --git a/apps/daedalus_client/README.md b/apps/daedalus_client/README.md
index 43f2b945d5..ad1578cc5f 100644
--- a/apps/daedalus_client/README.md
+++ b/apps/daedalus_client/README.md
@@ -1,4 +1,4 @@
-# Daedalus
+# Daedalus (Metadata service)
Daedalus is a powerful tool which queries and generates metadata for the Minecraft (and other games in the future!) game
and mod loaders for:
@@ -8,3 +8,5 @@ and mod loaders for:
- Reliability (Provides a versioning system which ensures no breakage with updates)
Daedalus supports the original Minecraft data and reposting for the Forge, Fabric, Quilt, and NeoForge loaders.
+
+Read more about this projects and how to contribute to it on the [Daedalus contributing page](https://docs.modrinth.com/contributing/daedalus/).
\ No newline at end of file
diff --git a/apps/docs/README.md b/apps/docs/README.md
index 6cebf2a93d..ee0c1209f9 100644
--- a/apps/docs/README.md
+++ b/apps/docs/README.md
@@ -1,23 +1,5 @@
-# Modrinth Documentation
+# Modrinth docs
-Welcome to the Modrinth documentation!
+Welcome to the Modrinth documentation repository!
-## Development
-
-### Pre-requisites
-
-Before you begin, ensure you have the following installed on your machine:
-
-- [Node.js](https://nodejs.org/en/)
-- [pnpm](https://pnpm.io/)
-
-### Setup
-
-Follow these steps to set up your development environment:
-
-```bash
-pnpm install
-pnpm docs:dev
-```
-
-You should now have a development build of the documentation site running with hot-reloading enabled. Any changes you make to the code will automatically refresh the browser.
+Read more about the project and how to contribute on the [docs documentation page](https://github.com/modrinth/code/blob/main/CONTRIBUTING.md).
\ No newline at end of file
diff --git a/apps/docs/astro.config.mjs b/apps/docs/astro.config.mjs
index 3baeb6f4f0..22e36d98fb 100644
--- a/apps/docs/astro.config.mjs
+++ b/apps/docs/astro.config.mjs
@@ -13,11 +13,12 @@ export default defineConfig({
baseUrl: 'https://github.com/modrinth/code/edit/main/apps/docs/',
},
social: {
+ blueSky: 'https://bsky.app/profile/modrinth.com',
github: 'https://github.com/modrinth/code',
discord: 'https://discord.modrinth.com',
- 'x.com': 'https://x.com/modrinth',
mastodon: 'https://floss.social/@modrinth',
threads: 'https://threads.net/@modrinth',
+ 'x.com': 'https://x.com/modrinth'
},
logo: {
light: './src/assets/light-logo.svg',
@@ -34,12 +35,14 @@ export default defineConfig({
starlightOpenAPI([
{
base: 'api',
- label: 'Modrinth API',
+ label: 'API spec',
schema: './public/openapi.yaml',
},
]),
],
sidebar: [
+ { slug: 'overview' },
+ // Add the generated sidebar group to the sidebar.
{
label: 'Contributing to Modrinth',
autogenerate: { directory: 'contributing' },
diff --git a/apps/docs/src/content/docs/contributing/ariadne.mdx b/apps/docs/src/content/docs/contributing/ariadne.mdx
new file mode 100644
index 0000000000..a22b05d5b8
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/ariadne.mdx
@@ -0,0 +1,8 @@
+---
+title: Ariadne
+description: Ariadne contributing guide
+---
+
+The codebase is kept in Modrinth's [monorepo](https://github.com/modrinth/code). You can find it in the [`packages/ariadne`](https://github.com/modrinth/code/tree/main/packages/ariadne) directory.
+
+Work in progress...
\ No newline at end of file
diff --git a/apps/docs/src/content/docs/contributing/daedalus.md b/apps/docs/src/content/docs/contributing/daedalus.md
deleted file mode 100644
index 87aa4179dd..0000000000
--- a/apps/docs/src/content/docs/contributing/daedalus.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-title: Daedalus (Metadata service)
-description: Guide for contributing to Modrinth's frontend
----
diff --git a/apps/docs/src/content/docs/contributing/daedalus.mdx b/apps/docs/src/content/docs/contributing/daedalus.mdx
new file mode 100644
index 0000000000..3d9ae04056
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/daedalus.mdx
@@ -0,0 +1,25 @@
+---
+title: Daedalus (Metadata service)
+description: Daedalus contributing guide
+---
+
+import { Steps } from '@astrojs/starlight/components';
+
+[Daedalus](https://github.com/modrinth/code/tree/main/packages/daedalus) is a library providing model structs and methods for requesting and parsing things from Minecraft and other mod loaders meta APIs.
+
+The codebase is kept in Modrinth's [monorepo](https://github.com/modrinth/code).
+
+## Architecture
+
+Daedalus is split up into two parts:
+
+- [`packages/daedalus`](https://github.com/modrinth/code/tree/main/apps/daedalus_client): The library holding all the core logic for the service
+- [`apps/daedalus_client`](https://github.com/modrinth/code/tree/main/apps/daedalus_client): The API which exposes information gathered by daedalus
+
+## Ready to open a PR?
+
+
+
+1. Open a pull request in the [monorepo repository](https://github.com/modrinth/code)
+
+
\ No newline at end of file
diff --git a/apps/docs/src/content/docs/contributing/docs.md b/apps/docs/src/content/docs/contributing/docs.md
deleted file mode 100644
index fd0500ef93..0000000000
--- a/apps/docs/src/content/docs/contributing/docs.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Docs
-description: Guide for contributing to Modrinth's developer documentation
----
-
-This project is part of our [monorepo](https://github.com/modrinth/code). You can find it in the `apps/docs` directory.
-
-[Docs] are the very site you are looking at right now.
-They are here to help developers and contributors work with Modrinth's codebase and API.
-
-To set up a development environment, you will need to install [pnpm] and run the following commands:
-
-```bash
-pnpm install
-pnpm run docs:dev
-```
-
-When ready, you will have a hot-reloading environment of the docs site running on port 4321.
-
-#### Ready to open a PR?
-
-While there is no linting requirement on Docs, we do ask that you quickly check your writing before contributing.
-
-[docs]: https://github.com/modrinth/code/tree/main/apps/docs
-[pnpm]: https://pnpm.io
diff --git a/apps/docs/src/content/docs/contributing/docs.mdx b/apps/docs/src/content/docs/contributing/docs.mdx
new file mode 100644
index 0000000000..82fc2791e1
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/docs.mdx
@@ -0,0 +1,46 @@
+---
+title: Docs
+description: Docs contributing guide
+---
+
+import { Steps } from '@astrojs/starlight/components';
+
+Modrinth Docs is the site you are looking at right now. It's here to help us work with Modrinth's projects and provide various information.
+
+The Docs are built using [Astro](https://astro.build) a content focused framework and the [Starlight](https://starlight.astro.build) theme specifically designed for documentation sites.
+
+The codebase is kept in Modrinth's [monorepo](https://github.com/modrinth/code). You can find it in the [`/apps/docs`](https://github.com/modrinth/code/tree/main/apps/docs) directory.
+
+## Setup
+
+
+
+1. Follow [Getting started](/contributing/getting-started#installation) guide
+
+2. Start the development server from the root of the monorepo by running
+ ```bash
+ pnpm run docs:dev
+ ```
+
+ or inside the docs directory, as it doesn't rely on any internal package to be built, by running
+ ```bash
+ pnpm run dev
+ ```
+
+3. Open your browser at [http://localhost:4321](http://localhost:4321)
+
+
+
+Pages are written using [Markdown](https://www.markdownguide.org/basic-syntax) and [MDX](https://mdxjs.com) and are stored in the `/src/content/docs` directory.
+The [API spec](/api) is auto generated with [starlight-openapi](https://github.com/HiDeoo/starlight-openapi) from the `/public/openapi.yaml` file.
+
+
+## Ready to open a PR?
+
+
+
+1. While there is no linting requirement, we do ask that you quickly check your code before opening a pull request.
+
+2. Open a pull request on the [monorepo repository](https://github.com/modrinth/code)
+
+
\ No newline at end of file
diff --git a/apps/docs/src/content/docs/contributing/getting-started.md b/apps/docs/src/content/docs/contributing/getting-started.md
deleted file mode 100644
index 28bec6a4ff..0000000000
--- a/apps/docs/src/content/docs/contributing/getting-started.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: Getting started
-description: How can I contribute to Modrinth?
-sidebar:
- order: 1
----
-
-# Contributing to Modrinth
-
-Every public-facing aspect of Modrinth, including everything from our [API/backend][labrinth] and [frontend][knossos] to our [Gradle plugin][minotaur] and [launcher][theseus], is released under free and open source licenses on [GitHub]. As such, we love contributions from community members! Before proceeding to do so, though, there are a number of things you'll want to keep in mind throughout the process, as well as some details specific to certain projects.
-
-## Things to keep in mind
-
-### Consult people on Discord
-
-There are a number of reasons to want to consult with people on our [Discord] before making a pull request. For example, if you're not sure whether something is a good idea or not, if you're not sure how to implement something, or if you can't get something working, these would all be good opportunities to create a thread in the `#development` forum channel.
-
-If you intend to work on new features, to make significant codebase changes, or to make UI/design changes, please open a discussion thread first to ensure your work is put to its best use.
-
-### Don't get discouraged
-
-At times, pull requests may be rejected or left unmerged for a variation of reasons. Don't take it personally, and don't get discouraged! Sometimes a contribution just isn't the right fit for the time, or it might have just been lost in the mess of other things to do. Remember, the core Modrinth team are often busy, whether it be on a specific project/task or on external factors such as offline responsibilities. It all falls back to the same thing: don't get discouraged!
-
-### Code isn't the only way to contribute
-
-You don't need to know how to program to contribute to Modrinth. Quality assurance, supporting the community, coming up with feature ideas, and making sure your voice is heard in public decisions are all great ways to contribute to Modrinth. If you find bugs, reporting them on the appropriate issue tracker is your responsibility; however, remember that potential security breaches and exploits must instead be reported in accordance with our [security policy](https://modrinth.com/legal/security).
-
-## Project-specific details
-
-If you wish to contribute code to a specific project, here's the place to start. Most of Modrinth is written in the [Rust language](https://www.rust-lang.org), but some things are written in other languages/frameworks like [Nuxt.js](https://nuxtjs.org) or Java.
-
-Most of Modrinth's code is in our monorepo, which you can find [here](https://github.com/modrinth/code). Our monorepo is powered by [Turborepo](https://turborepo.org).
-
-Follow the project-specific instructions below to get started:
-
-- [Knossos (frontend)](/contributing/knossos)
-- [Theseus (Modrinth App)](/contributing/theseus)
-- [Minotaur (Gradle plugin)](/contributing/minotaur)
-- [Labrinth (API/backend)](/contributing/labrinth)
-- [Daedalus (Metadata service)](/contributing/daedalus)
-- [Docs (Developer/Contributor Documentation)](/contributing/docs)
-
-[Discord]: https://discord.modrinth.com
-[GitHub]: https://github.com/modrinth
-[knossos]: https://github.com/modrinth/code/tree/main/apps/frontend
-[labrinth]: https://github.com/modrinth/labrinth
-[theseus]: https://github.com/modrinth/theseus
-[minotaur]: https://github.com/modrinth/minotaur
-[docs]: https://github.com/modrinth/code/tree/main/apps/docs
-[Rust]: https://www.rust-lang.org/tools/install
-[pnpm]: https://pnpm.io
diff --git a/apps/docs/src/content/docs/contributing/getting-started.mdx b/apps/docs/src/content/docs/contributing/getting-started.mdx
new file mode 100644
index 0000000000..cf493dc2d1
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/getting-started.mdx
@@ -0,0 +1,53 @@
+---
+title: Getting started
+description: Setup your environment to contribute to Modrinth
+sidebar:
+ order: 1
+---
+
+import { Steps } from '@astrojs/starlight/components';
+
+Most of Modrinth's code is in our [monorepo](https://github.com/modrinth/code) which is powered by [Turborepo](https://turborepo.org).
+Modrinth projects are written using languages like [Rust](https://www.rust-lang.org), [Java](https://www.java.com) and frameworks like [Nuxt](https://nuxtjs.org) and [Astro](https://astro.build).
+
+## Prerequisites
+- [Node](https://nodejs.org) installed on your machine
+- [Pnpm](https://pnpm.io) installed on your machine
+
+Some projects may require additional tooling and setups and they will be specified in their respective pages.
+
+## Installation
+
+
+
+1. Fork Modrinth's [monorepo](https://github.com/modrinth/code) from GitHub
+
+ :::note
+ Please be awere and read about our [copying guidelines](https://github.com/modrinth/code/blob/main/COPYING.md) regarding some content you'll find in the monorepo
+ :::
+
+2. Open the monorepo with your preferred code editor
+
+2. Install the dependencies by running
+ ```bash
+ pnpm install
+ ```
+
+
+
+## Projects
+
+Project-specific documentation pages:
+
+Apps:
+- [Daedalus (Metadata service)](/contributing/daedalus)
+- [Docs](/contributing/docs)
+- [Knossos (Frontend)](/contributing/knossos)
+- [Labrinth (API)](/contributing/labrinth)
+- [Theseus (Modrinth App)](/contributing/theseus)
+
+Packages:
+- [Ariadne](/contributing/ariadne)
+- [Minotaur (Gradle plugin)](/contributing/minotaur)
+
+Modrinth developers are silly so they decided to name their projects after greek mitology lore
\ No newline at end of file
diff --git a/apps/docs/src/content/docs/contributing/knossos.md b/apps/docs/src/content/docs/contributing/knossos.md
deleted file mode 100644
index ed166164b8..0000000000
--- a/apps/docs/src/content/docs/contributing/knossos.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Knossos (Frontend)
-description: Guide for contributing to Modrinth's frontend
----
-
-This project is part of our [monorepo](https://github.com/modrinth/code). You can find it in the `apps/frontend` directory.
-
-[knossos] is the Nuxt.js frontend. You will need to install [pnpm] and run the standard commands:
-
-```bash
-pnpm install
-pnpm run web:dev
-```
-
-Once that's done, you'll be serving knossos on `localhost:3000` with hot reloading. You can replace the `dev` in `pnpm run dev` with `build` to build for a production server and `start` to start the server. You can also use `pnpm run lint` to find any eslint problems, and `pnpm run fix` to try automatically fixing those problems.
-
-
-.env variables & command line options
-
-#### Basic configuration
-
-`SITE_URL`: The URL of the site (used for auth redirects). Default: `http://localhost:3000`
-`BASE_URL`: The base URL for the API. Default: `https://staging-api.modrinth.com/v2/`
-`BROWSER_BASE_URL`: The base URL for the API used in the browser. Default: `https://staging-api.modrinth.com/v2/`
-
-
-
-#### Ready to open a PR?
-
-If you're prepared to contribute by submitting a pull request, ensure you have met the following criteria:
-
-- `pnpm run fix` has been run.
-
-[knossos]: https://github.com/modrinth/code/tree/main/apps/frontend
-[pnpm]: https://pnpm.io
diff --git a/apps/docs/src/content/docs/contributing/knossos.mdx b/apps/docs/src/content/docs/contributing/knossos.mdx
new file mode 100644
index 0000000000..39e9d91bc3
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/knossos.mdx
@@ -0,0 +1,57 @@
+---
+title: Knossos (Frontend)
+description: Knossos contributing guide
+---
+
+import { Steps } from '@astrojs/starlight/components';
+
+[Knossos](https://modrinth.com) is Modrinth's [website](https://modrinth.com) frontend built using [Nuxt](https://nuxtjs.org) a framework for building [Vue](https://vuejs.org) applications and [Tailwind](https://tailwindcss.com) for styling.
+
+The codebase is kept in Modrinth's [monorepo](https://github.com/modrinth/code). You can find it in the [`/apps/frontend`](https://github.com/modrinth/code/tree/main/apps/frontend) directory.
+
+## Setup
+
+
+
+1. Follow [Getting started](/contributing/getting-started#installation) guide
+
+2. Start the development server from the root of the monorepo by running
+ ```bash
+ pnpm run web:dev
+ ```
+
+ or inside the directory after running the respective build scripts for `@modrinth/assets`, `@modrinth/ui` and `@modrinth/utils` which Knossos use as internal packages
+
+ ```bash
+ pnpm run dev
+ ```
+
+3. Open you browser at [http://localhost:3000](http://localhost:3000)
+
+
+
+Nuxt supports hot-reloading: any changes you make to the code will automatically shown in the browser.
+
+You can compile the project to test a production server by running `pnpm run build` and `pnpm run preview` to open it in the browser.
+
+You can also use `pnpm run lint` to find any eslint problems, and `pnpm run fix` to try automatically fixing them.
+
+### Environment variables
+
+| Env variable | Description | Default value |
+| --- | --- | --- |
+| `BASE_URL` | The base URL for the API | `https://staging-api.modrinth.com/v2/` |
+| `BROWSER_BASE_URL` | The base URL for the API used in the browser | `https://staging-api.modrinth.com/v2/` |
+| `SITE_URL` | The URL of the site needed for auth redirects | `http://localhost:3000` |
+
+## Ready to open a PR?
+
+
+
+1. Run `pnpm run lint` to check problems and lint the code.
+
+2. Run `pnpm run fix` to fix problems and make sure no errors are found.
+
+3. Open a pull request on the [monorepo repository](https://github.com/modrinth/code).
+
+
diff --git a/apps/docs/src/content/docs/contributing/labrinth.md b/apps/docs/src/content/docs/contributing/labrinth.md
deleted file mode 100644
index 16a2e77b0c..0000000000
--- a/apps/docs/src/content/docs/contributing/labrinth.md
+++ /dev/null
@@ -1,116 +0,0 @@
----
-title: Labrinth (API)
-description: Guide for contributing to Modrinth's backend
----
-
-This project is part of our [monorepo](https://github.com/modrinth/code). You can find it in the `apps/labrinth` directory.
-
-[labrinth] is the Rust-based backend serving Modrinth's API with the help of the [Actix](https://actix.rs) framework. To get started with a labrinth instance, install docker, docker-compose (which comes with Docker), and [Rust]. The initial startup can be done simply with the command `docker-compose up`, or with `docker compose up` (Compose V2 and later). That will deploy a PostgreSQL database on port 5432 and a MeiliSearch instance on port 7700. To run the API itself, you'll need to use the `cargo run` command, this will deploy the API on port 8000.
-
-To get a basic configuration, copy the `.env.example` file to `.env`. Now, you'll have to install the sqlx CLI, which can be done with cargo:
-
-```bash
-cargo install --git https://github.com/launchbadge/sqlx sqlx-cli --no-default-features --features postgres,rustls
-```
-
-From there, you can create the database and perform all database migrations with one simple command:
-
-```bash
-sqlx database setup
-```
-
-Finally, if on Linux, you will need the OpenSSL library. On Debian-based systems, this involves the `pkg-config` and `libssl-dev` packages.
-
-To enable labrinth to create a project, you need to add two things.
-
-1. An entry in the `loaders` table.
-2. An entry in the `loaders_project_types` table.
-
-A minimal setup can be done from the command line with [psql](https://www.postgresql.org/docs/current/app-psql.html):
-
-```bash
-psql --host=localhost --port=5432 -U -W
-```
-
-The default password for the database is `labrinth`. Once you've connected, run
-
-```sql
-INSERT INTO loaders VALUES (0, 'placeholder_loader');
-INSERT INTO loaders_project_types VALUES (0, 1); -- modloader id, supported type id
-INSERT INTO categories VALUES (0, 'placeholder_category', 1); -- category id, category, project type id
-```
-
-This will initialize your database with a modloader called 'placeholder_loader', with id 0, and marked as supporting mods only. It will also create a category called 'placeholder_category' that is marked as supporting mods only
-If you would like 'placeholder_loader' to be marked as supporting modpacks too, run
-
-```sql
-INSERT INTO loaders_project_types VALUES (0, 2); -- modloader id, supported type id
-```
-
-If you would like 'placeholder_category' to be marked as supporting modpacks too, run
-
-```sql
-INSERT INTO categories VALUES (0, 'placeholder_category', 2); -- modloader id, supported type id
-```
-
-The majority of configuration is done at runtime using [dotenvy](https://crates.io/crates/dotenvy) and the `.env` file. Each of the variables and what they do can be found in the dropdown below. Additionally, there are three command line options that can be used to specify to MeiliSearch what you want to do.
-
-
-.env variables & command line options
-
-#### Basic configuration
-
-`DEBUG`: Whether debugging tools should be enabled
-`RUST_LOG`: Specifies what information to log, from rust's [`env-logger`](https://github.com/env-logger-rs/env_logger); a reasonable default is `info,sqlx::query=warn`
-`SITE_URL`: The main URL to be used for CORS
-`CDN_URL`: The publicly accessible base URL for files uploaded to the CDN
-`MODERATION_DISCORD_WEBHOOK`: The URL for a Discord webhook where projects pending approval will be sent
-`CLOUDFLARE_INTEGRATION`: Whether labrinth should integrate with Cloudflare's spam protection
-`DATABASE_URL`: The URL for the PostgreSQL database
-`DATABASE_MIN_CONNECTIONS`: The minimum number of concurrent connections allowed to the database at the same time
-`DATABASE_MAX_CONNECTIONS`: The maximum number of concurrent connections allowed to the database at the same time
-`MEILISEARCH_ADDR`: The URL for the MeiliSearch instance used for search
-`MEILISEARCH_KEY`: The name that MeiliSearch is given
-`BIND_ADDR`: The bind address for the server. Supports both IPv4 and IPv6
-`MOCK_FILE_PATH`: The path used to store uploaded files; this has no default value and will panic if unspecified
-
-#### CDN options
-
-`STORAGE_BACKEND`: Controls what storage backend is used. This can be either `local`, `backblaze`, or `s3`, but defaults to `local`
-
-The Backblaze and S3 configuration options are fairly self-explanatory in name, so here's simply their names:
-`BACKBLAZE_KEY_ID`, `BACKBLAZE_KEY`, `BACKBLAZE_BUCKET_ID`
-`S3_ACCESS_TOKEN`, `S3_SECRET`, `S3_URL`, `S3_REGION`, `S3_BUCKET_NAME`
-
-#### Search, OAuth, and miscellaneous options
-
-`LOCAL_INDEX_INTERVAL`: The interval, in seconds, at which the local database is reindexed for searching. Defaults to `3600` seconds (1 hour).
-`VERSION_INDEX_INTERVAL`: The interval, in seconds, at which versions are reindexed for searching. Defaults to `1800` seconds (30 minutes).
-
-The OAuth configuration options are fairly self-explanatory. For help setting up authentication, please contact us on [Discord].
-
-`RATE_LIMIT_IGNORE_IPS`: An array of IPs that should have a lower rate limit factor. This can be useful for allowing the front-end to have a lower rate limit to prevent accidental timeouts.
-
-#### Command line options
-
-`--skip-first-index`: Skips indexing the local database on startup. This is useful to prevent doing unnecessary work when frequently restarting.
-`--reconfigure-indices`: Resets the MeiliSearch settings for the search indices and exits.
-`--reset-indices`: Resets the MeiliSearch indices and exits; this clears all previously indexed mods.
-
-
-
-#### Ready to open a PR?
-
-If you're prepared to contribute by submitting a pull request, ensure you have met the following criteria:
-
-- `cargo fmt` has been run.
-- `cargo clippy` has been run.
-- `cargo check` has been run.
-- `cargo sqlx prepare` has been run.
-
-> Note: If you encounter issues with `sqlx` saying 'no queries found' after running `cargo sqlx prepare`, you may need to ensure the installed version of `sqlx-cli` matches the current version of `sqlx` used [in labrinth](https://github.com/modrinth/labrinth/blob/master/Cargo.toml).
-
-[Discord]: https://discord.modrinth.com
-[GitHub]: https://github.com/modrinth
-[labrinth]: https://github.com/modrinth/labrinth
-[Rust]: https://www.rust-lang.org/tools/install
diff --git a/apps/docs/src/content/docs/contributing/labrinth.mdx b/apps/docs/src/content/docs/contributing/labrinth.mdx
new file mode 100644
index 0000000000..283d4491d5
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/labrinth.mdx
@@ -0,0 +1,143 @@
+---
+title: Labrinth (API)
+description: Labyrinth contributing guide
+---
+
+import { Steps } from '@astrojs/starlight/components';
+
+[Labrinth](https://github.com/modrinth/code/tree/main/apps/labyrinth) is the [Rust](https://www.rust-lang.org/)-based backend serving Modrinth's API with the help of the [Actix](https://actix.rs) framework.
+
+The codebase is kept in Modrinth's [monorepo](https://github.com/modrinth/code). You can find it in the [`/apps/labyrinth`](https://github.com/modrinth/code/tree/main/apps/labrinth) directory.
+
+:::note
+If were looking for the Labrinth API docs you can find it [here](https://docs.modrinth.com/api).
+:::
+
+## Setup
+
+
+
+1. Follow [Getting started](/contributing/getting-started#installation) guide
+
+2. Install [Docker](https://www.docker.com/) (it will also install docker-compose)
+
+3. Install [Rust](https://www.rust-lang.org/)
+
+4. Prepare the environment by running `docker compose up` to deploy a [PostgreSQL](https://www.postgresql.org/) database on port `5432` and a [MeiliSearch](https://www.meilisearch.com/) instance on port `7700`
+
+5. Run `cargo run` to start the API on port `8000`
+
+6. Install the [sqlx CLI](https://crates.io/crates/sqlx-cli/0.5.2) by running
+ ```bash
+ cargo install --git https://github.com/launchbadge/sqlx sqlx-cli --no-default-features --features postgres,rustls
+ ```
+
+7. Create all the necessary tables and perform all migrations by running
+ ```bash
+ sqlx database setup
+ ```
+
+8. If on Linux, you will need the OpenSSL library. On Debian-based systems, this involves the `pkg-config` and `libssl-dev` packages.
+
+
+
+
+To enable labrinth to create a project, you need to add two things.
+
+1. An entry in the `loaders` table.
+2. An entry in the `loaders_project_types` table.
+
+A minimal setup can be done from the command line with [psql](https://www.postgresql.org/docs/current/app-psql.html):
+
+```bash
+psql --host=localhost --port=5432 -U -W
+```
+
+The default password for the database is `labrinth`. Once you've connected, run
+
+```sql
+INSERT INTO loaders VALUES (0, 'placeholder_loader');
+INSERT INTO loaders_project_types VALUES (0, 1); -- modloader id, supported type id
+INSERT INTO categories VALUES (0, 'placeholder_category', 1); -- category id, category, project type id
+```
+
+This will initialize your database with a modloader called 'placeholder_loader', with id 0, and marked as supporting mods only.
+It will also create a category called 'placeholder_category' that is marked as supporting mods only.
+If you would like 'placeholder_loader' to be marked as supporting modpacks too, run
+
+```sql
+INSERT INTO loaders_project_types VALUES (0, 2); -- modloader id, supported type id
+```
+
+If you would like 'placeholder_category' to be marked as supporting modpacks too, run
+
+```sql
+INSERT INTO categories VALUES (0, 'placeholder_category', 2); -- modloader id, supported type id
+```
+
+Additionally, there are three command line options that can be used to specify to MeiliSearch what you want to do.
+
+- `--skip-first-index`: Skips indexing the local database on startup. This is useful to prevent doing unnecessary work when frequently restarting.
+- `--reconfigure-indices`: Resets the MeiliSearch settings for the search indices and exits.
+- `--reset-indices`: Resets the MeiliSearch indices and exits; this clears all previously indexed mods.
+
+### Environment variables
+
+The majority of configuration is done at runtime using [dotenvy](https://crates.io/crates/dotenvy) and the `.env` file.
+
+:::note
+Copy the `.env.example` file to `.env` to get basic configuration.
+:::
+
+| Env variable | Description | Default value |
+| --- | --- | --- |
+| `DEBUG` | Whether debugging tools should be enabled | `false` |
+| `RUST_LOG` | Specifies what information to log, from rust's [`env-logger`](https://github.com/env-logger-rs/env_logger). A reasonable default is `info,sqlx::query=warn` | `info,sqlx::query=warn` |
+| `SITE_URL` | The main URL to be used for CORS | `https://modrinth.com` |
+| `CDN_URL` | The publicly accessible base URL for files uploaded to the CDN | `https://staging-cdn.modrinth.com` |
+| `MODERATION_DISCORD_WEBHOOK` | The URL for a Discord webhook where projects pending approval will be sent | |
+| `CLOUDFLARE_INTEGRATION` | Whether labrinth should integrate with Cloudflare's spam protection | `false` |
+| `DATABASE_URL` | The URL for the PostgreSQL database | `postgresql://labrinth:labrinth@localhost/labrinth` |
+| `DATABASE_MIN_CONNECTIONS` | The minimum number of concurrent connections allowed to the database at the same time | `0` |
+| `DATABASE_MAX_CONNECTIONS` | The maximum number of concurrent connections allowed to the database at the same time | `16` |
+| `MEILISEARCH_ADDR` | The URL for the MeiliSearch instance used for search | `http://localhost:7700` |
+| `MEILISEARCH_KEY` | The name that MeiliSearch is given | `modrinth` |
+| `BIND_ADDR` | The bind address for the server. Supports both IPv4 and IPv6 | `127.0.0.1:8000` |
+| `MOCK_FILE_PATH` | The path used to store uploaded files; this has no default value and will panic if unspecified | `/tmp/modrinth` |
+
+#### CDN options
+
+`STORAGE_BACKEND`: Controls what storage backend is used. This can be either `local`, `backblaze`, or `s3`, but defaults to `local`
+
+The Backblaze and S3 configuration options are fairly self-explanatory in name, so here's simply their names:
+`BACKBLAZE_KEY_ID`, `BACKBLAZE_KEY`, `BACKBLAZE_BUCKET_ID`
+`S3_ACCESS_TOKEN`, `S3_SECRET`, `S3_URL`, `S3_REGION`, `S3_BUCKET_NAME`
+
+#### Search, OAuth, and miscellaneous options
+
+`LOCAL_INDEX_INTERVAL`: The interval, in seconds, at which the local database is reindexed for searching. Defaults to `3600` seconds (1 hour).
+`VERSION_INDEX_INTERVAL`: The interval, in seconds, at which versions are reindexed for searching. Defaults to `1800` seconds (30 minutes).
+
+The OAuth configuration options are fairly self-explanatory. For help setting up authentication, please contact us on [Discord].
+
+`RATE_LIMIT_IGNORE_IPS`: An array of IPs that should have a lower rate limit factor. This can be useful for allowing the front-end to have a lower rate limit to prevent accidental timeouts.
+
+## Ready to open a PR?
+
+
+
+1. Run `cargo fmt` to format rust code
+
+2. Run `cargo clippy` to validate rust code
+
+3. Run `cargo check` to try to compile the package to ensure everything works as expected
+
+4. Run `cargo sqlx prepare` to prepare the database
+
+5. Open a pull request on the [monorepo repository](https://github.com/modrinth/code)
+
+
+
+:::note
+If you encounter issues with `sqlx` saying `no queries found` after running `cargo sqlx prepare`, you may need to ensure the installed version of `sqlx-cli` matches the current version of `sqlx` used [in labrinth](https://github.com/modrinth/labrinth/blob/master/Cargo.toml).
+:::
diff --git a/apps/docs/src/content/docs/contributing/minotaur.md b/apps/docs/src/content/docs/contributing/minotaur.md
deleted file mode 100644
index 130ca6879c..0000000000
--- a/apps/docs/src/content/docs/contributing/minotaur.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Minotaur (Gradle plugin)
-description: Guide for contributing to Modrinth's gradle plugin
----
-
-[Minotaur][minotaur] is the Gradle plugin used to automatically publish artifacts to Modrinth. To run your copy of the plugin in a project, publish it to your local Maven with `./gradlew publishToMavenLocal` and add `mavenLocal()` to your buildscript.
-
-Minotaur contains two test environments within it - one with ForgeGradle and one with Fabric Loom. You may tweak with these environments to test whatever you may be trying; just make sure that the `modrinth` task within each still functions properly. GitHub Actions will validate this if you're making a pull request, so you may want to use [`act pull_request`](https://github.com/nektos/act) to test them locally.
-
-[minotaur]: https://github.com/modrinth/minotaur
diff --git a/apps/docs/src/content/docs/contributing/minotaur.mdx b/apps/docs/src/content/docs/contributing/minotaur.mdx
new file mode 100644
index 0000000000..d04402bf86
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/minotaur.mdx
@@ -0,0 +1,32 @@
+---
+title: Minotaur (Gradle plugin)
+description: Minotaur contributing guide
+---
+
+import { Steps } from '@astrojs/starlight/components';
+
+[Minotaur](https://github.com/modrinth/minotaur) is the [Gradle](https://gradle.org/) plugin used to automatically publish artifacts to Modrinth.
+
+The codebase is kept in the [modrinth/minotaur GitHub repo](https://github.com/modrinth/minotaur).
+
+## Setup
+
+Run a copy of the plugin in a project
+
+
+
+1. Publish it to your local Maven with `./gradlew publishToMavenLocal` and add `mavenLocal()` to your buildscript.
+
+
+
+Minotaur contains two test environments within it - one with [ForgeGradle](https://github.com/MinecraftForge/ForgeGradle) and one with [Fabric Loom](https://github.com/FabricMC/fabric-loom), you may want to tweak these environments.
+
+## Ready to open a PR?
+
+
+
+1. Make sure that the `modrinth` task within each test environments still functions properly. GitHub Actions will validate this on pull requests, you can use [`act pull_request`](https://github.com/nektos/act) to test them locally.
+
+2. Open a pull request on the [Minotaur repository](https://github.com/modrinth/minotaur).
+
+
diff --git a/apps/docs/src/content/docs/contributing/overview.md b/apps/docs/src/content/docs/contributing/overview.md
new file mode 100644
index 0000000000..aa70a70eda
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/overview.md
@@ -0,0 +1,24 @@
+---
+title: Overview
+description: How can I contribute to Modrinth?
+sidebar:
+ order: 0
+---
+
+Every public-facing aspect of Modrinth is released under free and open source licenses on [GitHub](https://github.com/modrinth). As such, we love contributions from community members! Before proceeding to do so, though, there are a number of things you'll want to keep in mind throughout the process, as well as some details specific to certain projects.
+
+## Things to keep in mind
+
+### Consult people on Discord
+
+There are a number of reasons to want to consult with people on our [Discord](https://discord.modrinth.com) before making a pull request. For example, if you're not sure whether something is a good idea or not, if you're not sure how to implement something, or if you can't get something working, these would all be good opportunities to create a thread in the `#development` forum channel.
+
+If you intend to work on new features, to make significant codebase changes, or to make UI/design changes, please open a discussion thread first to ensure your work is put to its best use without wasting time.
+
+### Don't get discouraged!
+
+Sometimes pull requests may be rejected or left unmerged for a variation of reasons. Don't take it personally and don't get discouraged! Sometimes a contribution just isn't the right fit for the time, or it might have just been lost in the mess of other things to do. Remember, the core Modrinth team are often busy, whether it be on a specific project/task or on external factors such as offline responsibilities. It all falls back to the same thing: don't get discouraged!
+
+### Code isn't the only way to contribute
+
+You don't need to know how to code to contribute to Modrinth. Quality assurance, supporting the community, coming up with feature ideas, and making sure your voice is heard in public decisions are all great ways to contribute to Modrinth. If you find bugs, [report them](https://github.com/modrinth/code/issues) on the appropriate issue tracker and remember that potential security breaches and exploits must always be reported in accordance with our [Security policy](https://modrinth.com/legal/security).
diff --git a/apps/docs/src/content/docs/contributing/theseus.md b/apps/docs/src/content/docs/contributing/theseus.md
deleted file mode 100644
index 1138f04a45..0000000000
--- a/apps/docs/src/content/docs/contributing/theseus.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Theseus (Modrinth App)
-description: Guide for contributing to Modrinth's desktop app
----
-
-This project is part of our [monorepo](https://github.com/modrinth/code). You can find it in the `apps/app` directory.
-
-[theseus] is the Tauri-based launcher that lets users conveniently play any mod or modpack on Modrinth. It uses the Rust-based Tauri as the backend and Vue.js as the frontend. To get started, install [pnpm], [Rust], and the [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/) for your system. Then, run the following commands:
-
-```bash
-pnpm install
-pnpm run app:dev
-```
-
-Once the commands finish, you'll be viewing a Tauri window with Nuxt.js hot reloading.
-
-You can use `pnpm run lint` to find any eslint problems, and `pnpm run fix` to try automatically fixing those problems.
-
-### Theseus Architecture
-
-Theseus is split up into three parts:
-
-- `apps/app-frontend`: The Vue.JS frontend for the app
-- `packages/app-lib`: The library holding all the core logic for the desktop app
-- `apps/app`: The Tauri-based Rust app. This primarily wraps around the library with some additional logic for Tauri.
-
-The app's internal database is stored in SQLite. For production builds, this is found at /app.db.
-
-When running SQLX commands, be sure to set the `DATABASE_URL` environment variable to the path of the database.
-
-You can edit the app's data directory using the `THESEUS_CONFIG_DIR` environment variable.
-
-#### Ready to open a PR?
-
-If you're prepared to contribute by submitting a pull request, ensure you have met the following criteria:
-
-- Run `pnpm run fix` to address any fixable issues automatically.
-- Run `cargo fmt` to format Rust-related code.
-- Run `cargo clippy` to validate Rust-related code.
-- Run `cargo sqlx prepare --package theseus` if you've changed any SQL code to validate statements.
-
-[theseus]: https://github.com/modrinth/code/tree/main/apps/app
-[Rust]: https://www.rust-lang.org/tools/install
-[pnpm]: https://pnpm.io
diff --git a/apps/docs/src/content/docs/contributing/theseus.mdx b/apps/docs/src/content/docs/contributing/theseus.mdx
new file mode 100644
index 0000000000..47fe60fb0e
--- /dev/null
+++ b/apps/docs/src/content/docs/contributing/theseus.mdx
@@ -0,0 +1,68 @@
+---
+title: Theseus (Modrinth App)
+description: Theseus contributing guide
+---
+
+import { Steps } from '@astrojs/starlight/components';
+
+[Theseus](https://modrinth.com/app) is Modrinth's Minecraft launcher that lets users play with any projects like mods, shaders and modpacks aviable on [Modrinth](https://modrinth.com/).
+
+It's a [Tauri](https://v2.tauri.app/) app which uses [Rust](https://rust-lang.org) as the backend and [Vue.js](https://vuejs.org/) on the frontend.
+
+The codebase is kept in Modrinth's [monorepo](https://github.com/modrinth/code).
+
+## Architecture
+
+Theseus is split up into three parts:
+
+- [`apps/app`](https://github.com/modrinth/code/tree/main/apps/app): The Tauri-based Rust app. This primarily wraps around the library with some additional logic for Tauri.
+- [`apps/app-frontend`](https://github.com/modrinth/code/tree/main/apps/app-frontend): The Vue.JS frontend for the app
+- [`packages/app-lib`](https://github.com/modrinth/code/tree/main/packages/app-lib): The library holding all the core logic for the desktop app
+
+
+## Setup
+
+
+
+1. Follow [Getting started](/contributing/getting-started#installation) guide
+
+2. Install [Rust](https://www.rust-lang.org/) and the [Tauri prerequisites](https://v2.tauri.app/start/prerequisites/)
+
+3. Start the development server from the root of the monorepo by running
+ ```bash
+ pnpm run app:dev
+ ```
+
+ or inside the directory after running the respective build scripts for `@modrinth/app-frontend`, `@modrinth/app-lib` and `@modrinth/daedalus` which Theseus use as internal packages
+
+ ```bash
+ pnpm run dev
+ ```
+
+
+
+Nuxt supports hot-reloading: any changes you make to the code will automatically shown in the window.
+
+You can also use `pnpm run lint` to find any eslint problems, and `pnpm run fix` to try automatically fixing them.
+
+The app's internal database is stored in SQLite. For production builds, this is found at `/app.db`.
+
+When running SQLX commands, be sure to set the `DATABASE_URL` environment variable to the path of the database.
+
+You can edit the app's data directory using the `THESEUS_CONFIG_DIR` environment variable.
+
+## Ready to open a PR?
+
+
+
+1. Run `pnpm run fix` to address any fixable issues automatically
+
+2. Run `cargo fmt` to format rust code
+
+3. Run `cargo clippy` to validate rust code
+
+4. Run `cargo sqlx prepare --package theseus` if you've changed any SQL code to validate statements
+
+5. Open a pull request on the [monorepo repository](https://github.com/modrinth/code)
+
+
diff --git a/apps/docs/src/content/docs/index.mdx b/apps/docs/src/content/docs/index.mdx
index 728aff05cd..5cadd5eff2 100644
--- a/apps/docs/src/content/docs/index.mdx
+++ b/apps/docs/src/content/docs/index.mdx
@@ -5,11 +5,20 @@ template: splash
hero:
tagline: Developer documentation for Modrinth
actions:
- - text: API documentation
- link: /api
+ - text: Read the docs
+ link: /overview
icon: right-arrow
- text: Get support with Modrinth
link: https://support.modrinth.com
icon: external
variant: minimal
---
+
+import { CardGrid, LinkCard } from '@astrojs/starlight/components';
+
+## References
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/docs/src/content/docs/overview.mdx b/apps/docs/src/content/docs/overview.mdx
new file mode 100644
index 0000000000..2cb26cb018
--- /dev/null
+++ b/apps/docs/src/content/docs/overview.mdx
@@ -0,0 +1,21 @@
+---
+title: Overview
+description: Welcome to the Modrinth docs!
+---
+
+import { CardGrid, LinkCard } from '@astrojs/starlight/components';
+
+Welcome to the Modrinth docs! This site aims to provide you as much information as possible about Modrinth's projects.
+
+The docs are divided into the [API spec](/api) and the [Contributing guide](/contributing/overview).
+
+The API docs provide information about the Modrinth API: which endpoints are aviable, endpoint specific query params, the response data shape and status codes if you want to implement Modrinth API in your code.
+
+The contributing guide provides information on how to set up Modrinth's monorepo on your machine if you would like to contribute to it and in depth information about each project.
+
+## References
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/frontend/README.md b/apps/frontend/README.md
index f7d2adbe36..fc27138884 100644
--- a/apps/frontend/README.md
+++ b/apps/frontend/README.md
@@ -1,27 +1,9 @@
# 
-# Modrinth Web Interface
+# Modrinth Web (Knossos)
Welcome to the Modrinth Web Interface! This web-based platform is designed for discovering, downloading, and managing Minecraft mods.
If you're not a developer and you've stumbled upon this repository, you can access the web interface on the [Modrinth website](https://modrinth.com).
-## Development
-
-### Pre-requisites
-
-Before you begin, ensure you have the following installed on your machine:
-
-- [Node.js](https://nodejs.org/en/)
-- [pnpm](https://pnpm.io/)
-
-### Setup
-
-Follow these steps to set up your development environment:
-
-```bash
-pnpm install
-pnpm web:dev
-```
-
-You should now have a development build of the web interface running with hot-reloading enabled. Any changes you make to the code will automatically refresh the browser.
+Read more about this projects and how to contribute to it on the [Knossos contributing page](https://docs.modrinth.com/contributing/knossos/).
\ No newline at end of file
diff --git a/apps/labrinth/README.md b/apps/labrinth/README.md
index 6377ee2f2f..7f7f4c4e8a 100644
--- a/apps/labrinth/README.md
+++ b/apps/labrinth/README.md
@@ -1,5 +1,7 @@

-## Modrinth's laboratory for its backend service & API!
+## Modrinth API (Labrinth)
-For contributing information, please see the labrinth section of the [Modrinth contributing guide](https://docs.modrinth.com/contributing/labrinth/). For documentation on the API itself, see the [API Spec](https://docs.modrinth.com/api/).
+Read more about the API and how to use it in the [API spec](https://docs.modrinth.com/api/).
+
+Read more about this projects and how to contribute to it on the [Labrinth contributing page](https://docs.modrinth.com/contributing/labrinth/).
\ No newline at end of file
diff --git a/packages/daedalus/README.md b/packages/daedalus/README.md
index 346d89809e..5f445f6540 100644
--- a/packages/daedalus/README.md
+++ b/packages/daedalus/README.md
@@ -1,4 +1,6 @@
-# Daedalus
+# Daedalus (Metadata service)
Daedalus (the rust library) is a library providing model structs and methods for requesting and parsing things
from Minecraft and other mod loaders meta APIs.
+
+Read more about this projects and how to contribute to it on the [Daedalus contributing page](https://docs.modrinth.com/contributing/daedalus/).
\ No newline at end of file