diff --git a/docs/configuration/custom-statuses.md b/docs/configuration/custom-statuses.md
index 6ab0fe7..05b9715 100644
--- a/docs/configuration/custom-statuses.md
+++ b/docs/configuration/custom-statuses.md
@@ -6,6 +6,8 @@ sidebar_position: 5
Custom Statuses and Staffing allow you have your own actions for personnel and units to perform when using the apps. For example if you didn't want the Default Resgrid statuses for Personnel (i.e. Responding, Not Responding, On Scene, etc) you could create a custom Personnel Status set with your own options (Yes, No, Coming, Not Coming, etc).
+You can have Custom Statuses for Personnel Actions (Statuses), Personal Staffing Levels and for each Unit Type defined in the system.
+
## Default Statuses and Staffing Levels
Resgrid default custom Statuses and Staffings are as follows
@@ -59,13 +61,62 @@ Here are the current Base Statuses that you can assign to your own Custom Status
| -------------------- | ------------------------------------------------------------ |
| None | This Custom Status does not equate to a base type |
| Available | Status equates to an Available to respond to calls |
-| NotResponding | Status equates to an Not Responding to a call |
+| Not Responding | Status equates to an Not Responding to a call |
| Responding | Status equates to Responding to an active call |
-| OnScene | Status equates to is at the Scene/Location of a call |
-| MadeContact | Status equates to making contact with RP or patient |
+| On Scene | Status equates to is at the Scene/Location of a call |
+| Made Contact | Status equates to making contact with RP or patient |
| Investigating | Status equates to investigating in the area of a call |
| Dispatched | Status equates to being dispatched to a call |
| Cleared | Status equates to being cleared of a call |
| Returning | Status equates to returning from a call to a station |
| Staging | Status equates to being staged at a call location or station |
-| Unavailable | Status equates to being Out of Service; unable to take calls |
\ No newline at end of file
+| Unavailable | Status equates to being Out of Service; unable to take calls |
+
+
+## Creating and Editing Custom Levels
+Under the Department menu you can select the Custom Statuses option to see what custom statuses you have defined and add/edit/remove them.
+
+:::warning Note
+When you added, edit or remove Custom Statuses all of your users mobile applications will need to re-sync by logging out of the application and back in. For example the Resgrid Responder and Resgrid Unit app. This is because those custom statuses get stored locally on the device for quick retrieval and for offline operations. It's recommended that you setup your custom statuses for Personnel before onboarding them onto the mobile apps.
+:::
+
+![Custom Statuses Page](/img/apps/configuration/custom-statuses/CustomStatusesPage.png)
+
+### For Personnel
+
+On the there are 2 sections for your Personnel and they are the right two boxes on the page; Custom Personnel Statuses (Actions) and Custom Personnel Staffing Levels. You can only have one of each active and by default it uses the above default. If the button in the box say "Set Custom Statuses/Staffing Levels" you are currently using the default Resgrid ones.
+
+![New Custom Statuses Page](/img/apps/configuration/custom-statuses/NewUnitStatusesPage.png)
+
+The Options Table in the page defines the buttons your users will see. You can add as many or as little as you want. Some departments only have 2 buttons, while others have dozens. When you click "Add Option" you will see a dialog like this:
+
+![New Custom Statuses Option](/img/apps/configuration/custom-statuses/NewButtonoption.png)
+
+| Name | Description |
+| -------------------- | ------------------------------------------------------------ |
+| Button Text | The Text of the Button and the Text shown in Reports |
+| Button Color | Color of the button also the Color of Text in Report |
+| Text Color | Color of the Button Text (choose something high contrast) |
+| Base Type | Does this Custom Status equate to a Base Status Type above |
+| Require GPS | Does this status require GPS Coordinates (only for mobile) |
+| Detail Type | Can you select what Call and/or Station for this status |
+| Note Type | Do you want to allow an optional note or require one |
+
+Order Defines the order in which the buttons will appear on any page or list. They order for LOWEST to HIGHEST number and default to the order in which they were added originally.
+
+:::warning Updating or Removing Statuses and Staffing
+When you update or remove a custom status this can impact the Reset To department setting where you can pick a time to reset Statuses and Staffings to a baseline. Also users who have custom Staffing level changes will also need to update theirs to ensure it's still correct. Make sure after you change your Personnel Statuses or Staffing Levels that you also update your Department Settings and let users know to check/update their own personal Staffing Level scheduled changes.
+:::
+
+
+### For Units
+
+You can have as many Custom Statuses for Units as you like. You assign statuses to Units via the Unit Type (Department Menu->Types).
+
+![Unit Types](/img/apps/configuration/custom-statuses/UnitTypesList.png)
+
+The Action Set/Action Field is where you designate what Custom Unit Statuses to use.
+
+![Unit Types Add](/img/apps/configuration/custom-statuses/NewUnitTypeDialog.png)
+
+All other options between Unit Custom Statuses and Personnel as the same.
\ No newline at end of file
diff --git a/docs/configuration/types.md b/docs/configuration/types.md
new file mode 100644
index 0000000..feb9e3a
--- /dev/null
+++ b/docs/configuration/types.md
@@ -0,0 +1,80 @@
+---
+sidebar_position: 21
+---
+
+# Department Wide Types
+
+Under the Department Menu in the Types menu option allows you set a number a department wide and module specific types or selection options.
+
+## Call Types
+
+By default there are no Call Types defined. A call type allows you organize calls into a category for example, "Structure Fire" or "Motor Vehicle Accident".
+
+![Call Types List](/img/apps/configuration/types/CallTypes.png)
+
+Call Types are assignable on Call Creation and are also used in other systems to interact with calls. For example a Protocol or Call Template may utilize the Call Type to set data or perform an operation.
+
+![Call Types List](/img/apps/configuration/types/NewCallType.png)
+
+You cannot delete a Call Type once it's been used. If you wish to delete the Call Type you need to delete or update any systems where you used it, for example Protocols, Call Templates, Command Definitions, etc. Once those have been deleted or updated to another type you can then delete the Call Type.
+
+:::tip Call Types in Calls
+Call Type names are used in the Call when stored in the Database, thus changes or deletion of the call type won't impact previously entered calls.
+:::
+
+## Call Priorities
+
+By default there are 4 Call Priorities defined in Resgrid; Low, Medium, High and Emergency all with default sounds and options.
+
+![Call Priorities List](/img/apps/configuration/types/CallPriorities.png)
+
+Once you create one new Call Priority the default ones will be deactivated and you will only have the option to select the Call Priorities you define. To return to the system defaults you will need to delete all your custom call Priorities.
+
+![New Call Priority](/img/apps/configuration/types/NewCallPriority.png)
+
+| Name | Description |
+| -------------------- | ------------------------------------------------------------ |
+| Priority Name | Name of the Call Priority that is selectable/shown |
+| Priority Color | Color of the Priority also the Color of Text in Report |
+| Sort Order | Lower means first on the lists, default (0) is order created |
+| Is Default | Can only be ONE, is the default Priority for automation |
+| Dispatch Personnel | Automation, does this priority dispatch Personnel directly |
+| Dispatch Units | Automation, does this priority dispatch Units directly |
+| Alert Sound | For Push Notifications and the UI, the sound for new calls |
+
+:::tip Dispatch Personnel and Units
+The Dispatch Personnel and Dispatch Units check boxes mean that Calls with this Priority can dispatch those entities (Persons or Units) when used in an automation. For example say you have a "Low" Call Priority and you don't want to wake up Personnel expect those currently staffing a Unit, you would only check the "Dispatch Units" checkbox and when any automation runs to automatically determine who to dispatch it won't automatically select personnel (that meet the automation criteria). For
+manually entered in calls the "Dispatch Personnel" and "Dispatch Units" options don't come into play as the person entering the call can select whomever to dispatch.
+:::
+
+## Unit Types
+
+There are no default Unit Types in the Resgrid system. Unit Types allow you to assign some common aspect between your Units in Resgrid, for example their Map Icon and what Custom Statuses buttons they should be using.
+
+![Unit Types List](/img/apps/configuration/types/UnitTypes.png)
+
+When you create Custom Statuses (Actions) for Units, you need to assign that status to a Unit Type and then that Unit Type to a Unit (when you add or update a Unit in the Units Module) for the actions to be visible for a particular unit in the Resgrid Unit or Web Application.
+
+![Add Unit Type](/img/apps/configuration/types/NewUnitType.png)
+
+## Certification Types
+
+Certifications allow you're users to add in Certifications and their information in their own profile. With the Certification Types you can add the certifications you want users to add and maintain in your Resgrid Department.
+
+![Certifications Types List](/img/apps/configuration/types/CertificationTypes.png)
+
+Adding a new Certification Type requires you just specific the name of the Certification.
+
+![Add Certification Type](/img/apps/configuration/types/NewCertificationType.png)
+
+## Document Categories
+
+Document Categories (Types) allow you to organize documents together. For example all of your Standard Operating Procedures and all of your Pre-Plan documents could be in different categories to make it easier to find the one your are looking for.
+
+![Document Types List](/img/apps/configuration/types/DocumentCategories.png)
+
+Adding a new Document Category is as easy as adding the name of the Category you want to assign Documents to.
+
+![Add Document Type](/img/apps/configuration/types/NewDocumentCategory.png)
+
+The Category text name is saved with the Document, changes to these Document Categories will only impact newly created documents.
\ No newline at end of file
diff --git a/docs/intro.md b/docs/intro.md
index 40e3327..7bd0253 100644
--- a/docs/intro.md
+++ b/docs/intro.md
@@ -12,11 +12,15 @@ Originally started as a hosted only solution in 2014, the Resgrid system as proc
Resgrid is written on the Microsoft .Net and .Net Core Frameworks utilizing Microsoft SQL Server as the primary data repository.
-:::danger Note
+:::danger Work In Progress
This documentation is an on-going Work-In-Progress (WIP) and is not complete. There many sections that are empty to help organize, give landing areas and structure for documentation. Documentation is usually added when we address issues or get questions. If you need information and the area of the documentation is missing or incomplete, please create a Github issue
with the question and we will address it.
:::
+:::tip User Interface Changes
+We update our User Interfaces for our websites and applications every couple of years. As such the UI shown in Pictures in this documentation may not match what is currently in production. Functionality should remain the same but may be presented differently. We don't update the pictures/documentation unless there is a major overhaul of the functionality.
+:::
+
## Features
- **Personnel Management**: Define personnel, contact information, details, certification, roles, status and availability for all personnel
diff --git a/docs/modules/documents.md b/docs/modules/documents.md
index f48311a..208e629 100644
--- a/docs/modules/documents.md
+++ b/docs/modules/documents.md
@@ -3,3 +3,13 @@ sidebar_position: 9
---
# Documents
+
+The Documents systems allows you to upload and store documents in Resgrid that you want shared with your entire department.
+
+![Documents Home](/img/apps/modules/documents/DocumentsHome.png)
+
+
+To view or download the document, you would click the file icon in the item (the Green box highlighted below). If you wanted to Edit the file you would click the name (highlighted in the Blue box below). You can only Edit a document if you are a Department Admin or have rights to Create Documents (and you created the document).
+
+![Document](/img/apps/modules/documents/DocumentItem.png)
+
diff --git a/docs/self-hosted/laptop.md b/docs/self-hosted/laptop.md
new file mode 100644
index 0000000..f3d20eb
--- /dev/null
+++ b/docs/self-hosted/laptop.md
@@ -0,0 +1,130 @@
+---
+sidebar_position: 3
+---
+
+# Offline Laptop
+
+In this guide we will get Resgrid up in running via Docker Compose for local (single user) use on a Windows computer.
+
+## Use Case
+
+This setup is intended to get Resgrid up and running on a single-user environment, like a laptop that will not be connected to or have internet access. No external users (i.e. from another machine or mobile device) will be connecting to this installation. For example you are coordinate rescue and recovery efforts for a hurricane from a location on your laptop, you are communicate with your field teams only via a radio as there is no power or cell phone data/WiFi Internet.
+
+## System Requirements
+
+1.) Windows 10 or Windows 11 Laptop with WSL2 (Windows Subsystem for Linux)
+2.) Docker Desktop with WSL2 Enabled
+3.) Enough HDD Space to handle Mapping Data (if you want a large region like North America you'll need 30+ GB)
+4.) 4 or more Core Processor
+5.) 16GB or more of RAM
+
+## Setup Notice
+
+There is no redundancy, backup or fail-over in this setup. Everything runs on the local computer and is not intended to be accessed by anyone off of the local computer. If the local computer gets damaged this could result in loss of data. It's recommend that you have a USB drive that you can backup the database to (ideally the whole resgrid directory) periodically during the operation.
+
+## Prerequisites & Dependencies
+
+1. Update Windows
+2. Install WSL2 and Ubuntu 22.04
+3. Open up your Ubuntu 22.04 instance and finalize the setup (set password).
+4. Install Docker and enable WSL2 backend.
+
+## Docker Compose Setup
+
+1. Open Notepad as Administrator and open C:\Windows\System32\drivers\etc\hosts file.
+
+2. Add the following lines to the hosts file and save.
+```
+127.0.0.1 rg.mylocal
+127.0.0.1 rgapi.mylocal
+127.0.0.1 rgevents.mylocal
+127.0.0.1 rgtile.mylocal
+```
+
+If you get a permissions error you didn't open up Notepad as Administrator, also don't use any RichText editor (Wordpad, Word, etc).
+
+3. Navigate to Geofabrik and download the .osm.pbf file the region you will be operating in.
+
+It is not recommend to try and pull an entire Sub Region (i.e. North America) as that will take quite a long time to import into the database. Instead it's recommended to import and additional Sub (Sub) Region, like a US State (i.e. Florida) or a Special Sub Region if they are available (i.e. US South).
+
+4. Using the Windows File Explorer move the osm.pbf file into Linux (left side bar) Ubuntu-22.04, home and your username folder. This will put it in your home directory.
+
+5. Start your Ubuntu-22.04 WSL2 Instance so the command prompt is visible.
+
+6. Clone the setup scripts for the Laptop compose:
+
+```bash
+git clone https://github.com/Resgrid/resgrid-setup.git -b laptop resgrid
+```
+
+You should now have a folder called resgrid in your current directory.
+
+7. Open the resgrid directory:
+
+```bash
+cd resgrid
+```
+
+8. Import the osm.pbf you downloaded and placed in your home directory into the tile server. Change /home/yourname/yourregion.osm.pbf in the command below to the correct home directory name (yourname) and the name of the region file you downloaded (yourregion).
+
+```bash
+docker run \
+ -v /home/yourname/yourregion.osm.pbf:/data/region.osm.pbf \
+ -v osm-data:/docker-data/osm/ \
+ overv/openstreetmap-tile-server \
+ import
+```
+
+If the container exits without errors, then your data has been successfully imported and you are now ready to run the tile server. If you selected a very large region, like North America this process can take days.
+
+
+## Run the Docker Compose
+
+Once you have setup the environment variables you can now run the docker compose file in the resgrid directory:
+
+```bash
+docker compose up
+```
+
+That will run the interactive version of the containers, Ctrl+C will stop the containers.
+
+If you want to run the containers in the background, use the -d option:
+
+```bash
+docker compose up -d
+```
+
+The Resgrid system will take about 5 minutes to start up fully, this is due to the startup order of the containers. The last container to startup will be the web container, once that one is ready, you can now access the system.
+
+
+## Initial Web Login
+
+Open up your web browser and navigate to **https://rg.mylocal**, **https://rgapi.mylocal**, **https://rgevents.mylocal** and **https://rgtile.mylocal**. You will need to accept the self-signed cert for each url and add exceptions in the browsers. You can follow this guide to add those exceptions.
+
+Once you have completed the steps above you will be able to log into the web applications user interface. Open up a web browser and navigate to **https://rg.mylocal**, you will then be prompted by the login screen. Your default administrator credentials are **admin/changeme1234**. Once you log into the system it’s recommended that you change your admin password from the Edit Profile page by clicking on the Administrator name in the upper left hand corner.
+
+## Updating
+
+To update Resgrid you'll need to stop the system, clear the current containers and restart.
+
+Stop all running containers.
+
+```bash
+docker compose down
+```
+
+Remove all cached images (to ensure we get new ones).
+
+```bash
+docker rmi -f $(docker images -aq)
+```
+
+Restart the containers and they will pull new containers.
+
+```bash
+docker compose up -d
+```
+
+## What's Next?
+
+This Quick Start gets the system running via local host, but not externally or within your network. You will need to create DNS entries in your internal or external DNS server to point to the server that is running the containers. It's also recommend you change some default values in the resgrid.env file to ensure proper security.
\ No newline at end of file
diff --git a/static/img/configuration/custom-statuses/CustomStatusesPage.png b/static/img/configuration/custom-statuses/CustomStatusesPage.png
new file mode 100644
index 0000000..d3153ad
Binary files /dev/null and b/static/img/configuration/custom-statuses/CustomStatusesPage.png differ
diff --git a/static/img/configuration/custom-statuses/EditCustomStatuses.png b/static/img/configuration/custom-statuses/EditCustomStatuses.png
new file mode 100644
index 0000000..fcca96a
Binary files /dev/null and b/static/img/configuration/custom-statuses/EditCustomStatuses.png differ
diff --git a/static/img/configuration/custom-statuses/NewButtonoption.png b/static/img/configuration/custom-statuses/NewButtonoption.png
new file mode 100644
index 0000000..bc07727
Binary files /dev/null and b/static/img/configuration/custom-statuses/NewButtonoption.png differ
diff --git a/static/img/configuration/custom-statuses/NewUnitStatusesPage.png b/static/img/configuration/custom-statuses/NewUnitStatusesPage.png
new file mode 100644
index 0000000..85f841c
Binary files /dev/null and b/static/img/configuration/custom-statuses/NewUnitStatusesPage.png differ
diff --git a/static/img/configuration/custom-statuses/NewUnitTypeDialog.png b/static/img/configuration/custom-statuses/NewUnitTypeDialog.png
new file mode 100644
index 0000000..5ee41cc
Binary files /dev/null and b/static/img/configuration/custom-statuses/NewUnitTypeDialog.png differ
diff --git a/static/img/configuration/custom-statuses/UnitTypesList.png b/static/img/configuration/custom-statuses/UnitTypesList.png
new file mode 100644
index 0000000..78af5c9
Binary files /dev/null and b/static/img/configuration/custom-statuses/UnitTypesList.png differ
diff --git a/static/img/configuration/types/CallPriorities.png b/static/img/configuration/types/CallPriorities.png
new file mode 100644
index 0000000..108f42f
Binary files /dev/null and b/static/img/configuration/types/CallPriorities.png differ
diff --git a/static/img/configuration/types/CallTypes.png b/static/img/configuration/types/CallTypes.png
new file mode 100644
index 0000000..37af5fb
Binary files /dev/null and b/static/img/configuration/types/CallTypes.png differ
diff --git a/static/img/configuration/types/CertificationTypes.png b/static/img/configuration/types/CertificationTypes.png
new file mode 100644
index 0000000..3f2d4f9
Binary files /dev/null and b/static/img/configuration/types/CertificationTypes.png differ
diff --git a/static/img/configuration/types/DocumentCategories.png b/static/img/configuration/types/DocumentCategories.png
new file mode 100644
index 0000000..465d161
Binary files /dev/null and b/static/img/configuration/types/DocumentCategories.png differ
diff --git a/static/img/configuration/types/NewCallPriority.png b/static/img/configuration/types/NewCallPriority.png
new file mode 100644
index 0000000..60475fb
Binary files /dev/null and b/static/img/configuration/types/NewCallPriority.png differ
diff --git a/static/img/configuration/types/NewCallType.png b/static/img/configuration/types/NewCallType.png
new file mode 100644
index 0000000..70c4ca1
Binary files /dev/null and b/static/img/configuration/types/NewCallType.png differ
diff --git a/static/img/configuration/types/NewCertificationType.png b/static/img/configuration/types/NewCertificationType.png
new file mode 100644
index 0000000..9867684
Binary files /dev/null and b/static/img/configuration/types/NewCertificationType.png differ
diff --git a/static/img/configuration/types/NewDocumentCategory.png b/static/img/configuration/types/NewDocumentCategory.png
new file mode 100644
index 0000000..b13ec1a
Binary files /dev/null and b/static/img/configuration/types/NewDocumentCategory.png differ
diff --git a/static/img/configuration/types/NewUnitType.png b/static/img/configuration/types/NewUnitType.png
new file mode 100644
index 0000000..e98f037
Binary files /dev/null and b/static/img/configuration/types/NewUnitType.png differ
diff --git a/static/img/configuration/types/UnitTypes.png b/static/img/configuration/types/UnitTypes.png
new file mode 100644
index 0000000..fea223d
Binary files /dev/null and b/static/img/configuration/types/UnitTypes.png differ
diff --git a/static/img/modules/documents/DocumentItem.png b/static/img/modules/documents/DocumentItem.png
new file mode 100644
index 0000000..4cb74bd
Binary files /dev/null and b/static/img/modules/documents/DocumentItem.png differ
diff --git a/static/img/modules/documents/DocumentsHome.png b/static/img/modules/documents/DocumentsHome.png
new file mode 100644
index 0000000..7d98e34
Binary files /dev/null and b/static/img/modules/documents/DocumentsHome.png differ
diff --git a/static/img/modules/documents/EditDocument.png b/static/img/modules/documents/EditDocument.png
new file mode 100644
index 0000000..6c52c04
Binary files /dev/null and b/static/img/modules/documents/EditDocument.png differ
diff --git a/static/img/modules/documents/NewDocument.png b/static/img/modules/documents/NewDocument.png
new file mode 100644
index 0000000..e38ba21
Binary files /dev/null and b/static/img/modules/documents/NewDocument.png differ