diff --git a/.github/workflows/Documentation.yml b/.github/workflows/Documentation.yml
new file mode 100644
index 00000000..88893b3c
--- /dev/null
+++ b/.github/workflows/Documentation.yml
@@ -0,0 +1,28 @@
+name: Documentation
+
+on:
+ push:
+ branches:
+ - master
+ tags: '*'
+ pull_request:
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: julia-actions/setup-julia@latest
+ with:
+ version: '1'
+ - name: Install dependencies
+ run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()'
+ - name: Build and deploy
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For authentication with GitHub Actions token
+ DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # For authentication with SSH deploy key
+ run: julia --project=docs/ --code-coverage=user docs/make.jl
+ - uses: julia-actions/julia-processcoverage@v1
+ - uses: codecov/codecov-action@v1
+ with:
+ file: lcov.info
diff --git a/docs/.gitignore b/docs/.gitignore
new file mode 100644
index 00000000..a303fff2
--- /dev/null
+++ b/docs/.gitignore
@@ -0,0 +1,2 @@
+build/
+site/
diff --git a/docs/Project.toml b/docs/Project.toml
new file mode 100644
index 00000000..d2106b21
--- /dev/null
+++ b/docs/Project.toml
@@ -0,0 +1,7 @@
+[deps]
+SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5"
+Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
+
+[compat]
+Documenter = "0.27"
+SymbolicIndexingInterface = "0.1"
diff --git a/docs/make.jl b/docs/make.jl
new file mode 100644
index 00000000..10204e85
--- /dev/null
+++ b/docs/make.jl
@@ -0,0 +1,22 @@
+using Documenter, SymbolicIndexingInterface
+
+cp("./docs/Manifest.toml", "./docs/src/assets/Manifest.toml", force = true)
+cp("./docs/Project.toml", "./docs/src/assets/Project.toml", force = true)
+
+include("pages.jl")
+
+makedocs(
+ sitename="SymbolicIndexingInterface.jl",
+ authors="Chris Rackauckas",
+ modules=[SymbolicIndexingInterface],
+ clean=true,doctest=false,
+ format = Documenter.HTML(analytics = "UA-90474609-3",
+ assets = ["assets/favicon.ico"],
+ canonical="https://docs.sciml.ai/SymbolicIndexingInterface/stable/"),
+ pages=pages
+)
+
+deploydocs(
+ repo = "github.com/SciML/SymbolicIndexingInterface.jl.git";
+ push_preview = true
+)
diff --git a/docs/pages.jl b/docs/pages.jl
new file mode 100644
index 00000000..cef4ccb7
--- /dev/null
+++ b/docs/pages.jl
@@ -0,0 +1,6 @@
+# Put in a separate page so it can be used by SciMLDocs.jl
+
+pages=[
+ "Home" => "index.md",
+ "API" => "api.md",
+]
\ No newline at end of file
diff --git a/docs/src/api.md b/docs/src/api.md
new file mode 100644
index 00000000..06eaa07c
--- /dev/null
+++ b/docs/src/api.md
@@ -0,0 +1,18 @@
+# Interface Functions
+
+```@docs
+independent_variables
+is_indep_sym
+states
+state_sym_to_index
+is_state_sym
+parameters
+param_sym_to_index
+is_param_sym
+```
+
+## Concrete Types
+
+```@docs
+SymbolCache
+```
\ No newline at end of file
diff --git a/docs/src/assets/favicon.ico b/docs/src/assets/favicon.ico
new file mode 100644
index 00000000..3c6bd470
Binary files /dev/null and b/docs/src/assets/favicon.ico differ
diff --git a/docs/src/assets/logo.png b/docs/src/assets/logo.png
new file mode 100644
index 00000000..6f4c3e26
Binary files /dev/null and b/docs/src/assets/logo.png differ
diff --git a/docs/src/index.md b/docs/src/index.md
new file mode 100644
index 00000000..6e6f536d
--- /dev/null
+++ b/docs/src/index.md
@@ -0,0 +1,79 @@
+# SymbolicIndexingInterface.jl: Arrays of Arrays and Even Deeper
+
+SymbolicIndexingInterface.jl is a set of interface functions for handling containers
+of symbolic variables. It also contains one such container: `SymbolCache`.
+
+## Installation
+
+To install SymbolicIndexingInterface.jl, use the Julia package manager:
+
+```julia
+using Pkg
+Pkg.add("SymbolicIndexingInterface")
+```
+
+## Contributing
+
+- Please refer to the
+ [SciML ColPrac: Contributor's Guide on Collaborative Practices for Community Packages](https://github.com/SciML/ColPrac/blob/master/README.md)
+ for guidance on PRs, issues, and other matters relating to contributing to SciML.
+- There are a few community forums:
+ - the #diffeq-bridged channel in the [Julia Slack](https://julialang.org/slack/)
+ - [JuliaDiffEq](https://gitter.im/JuliaDiffEq/Lobby) on Gitter
+ - on the [Julia Discourse forums](https://discourse.julialang.org)
+ - see also [SciML Community page](https://sciml.ai/community/)
+
+## Reproducibility
+```@raw html
+The documentation of this SciML package was built using these direct dependencies,
+```
+```@example
+using Pkg # hide
+Pkg.status() # hide
+```
+```@raw html
+
+```
+```@raw html
+and using this machine and Julia version.
+```
+```@example
+using InteractiveUtils # hide
+versioninfo() # hide
+```
+```@raw html
+
+```
+```@raw html
+A more complete overview of all dependencies and their versions is also provided.
+```
+```@example
+using Pkg # hide
+Pkg.status(;mode = PKGMODE_MANIFEST) # hide
+```
+```@raw html
+
+```
+```@raw html
+You can also download the
+manifest file and the
+project file.
+```
\ No newline at end of file