diff --git a/README.md b/README.md
index e69de29..f65b98f 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,109 @@
+# Matrix Synapse Registration System
+
+This is a user registration system for a Matrix server using Django and the Synapse Admin API. It handles user sign-ups, admin approvals, and account management.
+
+## Features
+
+- **User Registration Workflow**: A step-by-step registration process, including username checking, email verification, and submission of a reason for registration.
+- **Admin Approval**: Registrations require admin approval before activation.
+- **User Notifications**: Email notifications are sent throughout the registration process to ensure users and admins remain informed.
+- **Admin Portal**: Admins can manage registrations directly from the Django admin interface, approving or denying requests.
+
+## Installation
+
+1. **Clone the Repository**:
+
+```bash
+git clone https://git.private.coffee/PrivateCoffee/synapse-registration.git
+cd synapse-registration
+python3 -m venv venv
+source venv/bin/activate
+pip install .
+```
+
+2. **Create configuration file**:
+
+```bash
+cp config.dist.yaml config.yaml
+```
+
+3. **Edit configuration file**:
+
+Edit the `config.yaml` file to match your Matrix server and email settings.
+
+The following settings are available:
+
+- `debug`: Set to `true` to enable Django debug mode. Do not enable in production.
+- `secret_key`: Django secret key. If not set, a random key will be generated on startup.
+- `synapse`: Synapse server settings.
+ - `admin_token`: Access token of an admin user.
+ - `server`: Synapse server URL (e.g. `https://matrix.example.com`).
+ - `domain`: Matrix server domain (e.g. `example.com`).
+- `hosts`: List of domains that the registration system will be accessible at. At least one domain is required.
+- `email`: Email server settings.
+ - `host`: SMTP server hostname. Required.
+ - `port`: SMTP server port. Required.
+ - `username`: SMTP username. Required.
+ - `password`: SMTP password. Required.
+ - `tls`: Set to `true` to enable STARTTLS.
+ - `ssl`: Set to `true` to enable SSL.
+ - `from`: Email address to send notifications from. Defaults to the `username` setting.
+- `admin`: Admin user settings.
+ - `email`: Email address to send admin notifications to. Required.
+- `trust_proxy`: Set to `true` if the registration system is behind a reverse proxy. This ensures the correct IP address is logged.
+- `auto_join`: Optional list of rooms to automatically join users to after registration. The admin user must be in these rooms and have invite permissions.
+- `legal`: Optional list of legal documents to link to in the registration form. Each item must have a `title` and `url`.
+
+4. **Run migrations**:
+
+```bash
+synapse_registration migrate
+```
+
+5. **Create superuser**:
+
+```bash
+synapse_registration createsuperuser
+```
+
+6. **Run the server**:
+
+For development:
+
+```bash
+synapse_registration runserver
+```
+
+For production, use a WSGI server such as uWSGI, behind a reverse proxy such as Caddy.
+
+## Usage
+
+1. **Access the registration system**:
+
+Navigate to the domain you set in the `config.yaml` file. You should see the registration form.
+
+2. **Register a new user**:
+
+The registration process is as follows:
+
+- **Step 1**: Enter a username. The system will check if the username is available.
+- **Step 2**: Enter an email address. A verification email will be sent.
+- **Step 3**: Enter a password and reason for registration. The password will be stored in Synapse, the reason will be stored in the admin interface.
+- **Step 4**: Wait for an admin to approve the registration. You will receive an email when this happens.
+
+3. **Approve a registration**:
+
+- **Step 1**: Log in to the Django admin interface.
+- **Step 2**: Navigate to the `User registrations` section.
+- **Step 3**: Review the registration request and set the status to `Approved` or `Denied`. This will enable the Matrix account and send an email to the user.
+
+4. **Clean up registrations**:
+
+You can use the `synapse_registration cleanup` command to remove old registration requests.
+
+- Unverified registrations are removed after 48 hours.
+- Denied and approved registrations are removed after 30 days.
+
+## License
+
+This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
diff --git a/src/synapse_registration/registration/templates/base.html b/src/synapse_registration/registration/templates/base.html
index 8742e6f..107a7ab 100644
--- a/src/synapse_registration/registration/templates/base.html
+++ b/src/synapse_registration/registration/templates/base.html
@@ -9,7 +9,7 @@
{% endblock title %}
+ href="https://nobsdelivr.private.coffee/npm/bulma@1.0.2/css/bulma.min.css">
{% block css %}
{% endblock css %}
@@ -20,5 +20,16 @@
{% endblock content %}
+