diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644
index 0000000..c5587fb
--- /dev/null
+++ b/.readthedocs.yaml
@@ -0,0 +1,19 @@
+# Read the Docs configuration file for MkDocs projects
+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
+
+# Required
+version: 2
+
+# Set the version of Python and other tools you might need
+build:
+ os: ubuntu-22.04
+ tools:
+ python: "3.11"
+
+mkdocs:
+ configuration: mkdocs.yml
+
+# Optionally declare the Python requirements required to build your docs
+python:
+ install:
+ - requirements: docs/requirements.txt
diff --git a/docs/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..deb3b69
--- /dev/null
+++ b/docs/CODE_OF_CONDUCT.md
@@ -0,0 +1,137 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, caste, color, religion, or sexual
+identity and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the overall
+ community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or advances of
+ any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email address,
+ without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement, Noah Fahlgren
+[nfahlgren@danforthcenter.org](mailto:nfahlgren@danforthcenter.org) and
+Malia Gehan [mgehan@danforthcenter.org](mailto:mgehan@danforthcenter.org).
+Alternatively, information about contacting the Danforth Center Human Resources
+department (including anonymous reporting) can be found at
+[https://www.danforthcenter.org/about-us/accountability/][accountability].
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series of
+actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or permanent
+ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within the
+community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.1, available at
+[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
+
+Community Impact Guidelines were inspired by
+[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
+
+For answers to common questions about this code of conduct, see the FAQ at
+[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
+[https://www.contributor-covenant.org/translations][translations].
+
+[homepage]: https://www.contributor-covenant.org
+[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
+[Mozilla CoC]: https://github.com/mozilla/diversity
+[FAQ]: https://www.contributor-covenant.org/faq
+[translations]: https://www.contributor-covenant.org/translations
+[accountability]: https://www.danforthcenter.org/about-us/accountability
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
new file mode 100644
index 0000000..4d1482a
--- /dev/null
+++ b/docs/CONTRIBUTING.md
@@ -0,0 +1,19 @@
+# Contrbution to PlantCV-Annotate
+
+!!! note
+ PlantCV-Annotate is an add-on package to PlantCV so please first refer to the main package's [contributing guide](https://plantcv.readthedocs.io/en/latest/CONTRIBUTING/) for the majority of the information on what and how to contribute to either project (including but not limited to reporting bugs, requesting new features, add/revise documentation, and adding tutorials).
+
+## Overview Of What To Contribute to PlantCV-Annotate vs. Other Packages
+
+This document aims to give an overview of what to contribute to PlantCV-Annotate, and guidelines to
+decide which repository is the most appropriate place for new features. Please
+[create an issue in GitHub](https://github.com/danforthcenter/plantcv-annotate/issues) assuming one
+does not already exist.
+
+Functions in the Annotate toolbox are considered lower throughput, since they
+usually involve interacting with data on a per-image basis, compared to tools from the main PlantCV
+package which aim to build modularly into workflows that can be batch processed.
+
+Data annotation is helpful when downstream analysis steps include machine learning or deep learning,
+but it's also helpful for tuning computer vision algorithm approaches by ground truthing a
+dataset with annotation and comparing results from the two methods.
diff --git a/docs/Points.md b/docs/Points.md
new file mode 100644
index 0000000..a1fd3a4
--- /dev/null
+++ b/docs/Points.md
@@ -0,0 +1,49 @@
+## Interactive Point Annotation Tool
+
+Using [Jupyter Notebooks](jupyter.md) it is possible to interactively click to collect coordinates from an image, which can be used in various downstream applications. Left click on the image to collect a point. Right click removes the
+closest collected point.
+
+**plantcv.annotate.Points**(*img, figsize=(12,6), label="dafault"*)
+
+**returns** interactive image class
+
+- **Parameters:**
+ - img - Image data
+ - figsize - Interactive plot figure size (default = (12,6))
+ - label - The current label (default = "default")
+
+- **Attributes:**
+ - coords - dictionary of all coordinates per group label
+ - events - includes right and left click events
+ - count - dictionary that save the counts of different groups (labels)
+ - label - the current label
+ - sample_labels - list of all sample labels, one to one with coordinates collected
+ - view_all - flag indicating whether or not to view all labels
+ - color - current color
+ - colors - all used colors
+ - figsize - size of the interactive plotting figure
+
+- **Context:**
+ - Used to define a list of coordinates of interest.
+ -
+- **Example use:**
+ - (pcv.roi.multi)
+ - (pcv.roi.custom)
+
+
+```python
+import plantcv.plantcv as pcv
+import plantcv.annotate as an
+
+# Create an instance of the Points class
+marker = an.Points(img=img, figsize=(12,6))
+
+# Click on the plotted image to collect coordinates
+
+# Use the identified coordinates to create a custom polygon ROI
+roi = pcv.roi.custom(img=img, vertices=marker.coords['default'])
+
+```
+
+
+**Source Code:** [Here](https://github.com/danforthcenter/plantcv-annotate/blob/main/plantcv/annoate/classes.py)
diff --git a/docs/changelog.md b/docs/changelog.md
new file mode 100644
index 0000000..820a7f1
--- /dev/null
+++ b/docs/changelog.md
@@ -0,0 +1,3 @@
+## Changelog
+
+All notable changes to this project will be documented below.
diff --git a/docs/documentation.md b/docs/documentation.md
new file mode 100644
index 0000000..ed43a4e
--- /dev/null
+++ b/docs/documentation.md
@@ -0,0 +1,19 @@
+## Documentation
+
+PlantCV documentation is hosted on [Read the Docs](https://readthedocs.org/).
+Using Read the Docs allows the documentation to be versioned along with
+the code. Because Read the Docs supports static content build tools like
+[Mkdocs](http://www.mkdocs.org/), documentation can be written in simple
+Markdown format that will be built into HTML automatically whenever a
+new version of code is pushed to the PlantCV GitHub repository.
+
+### Updating PlantCV documentation
+
+Follow the [installation guide](installation.md#installing-plantcv-for-contributors) to learn how clone a copy of the PlantCV-Annotate
+repository. Then see the main PlantCV [contribution guide](https://plantcv.readthedocs.io/en/latest/CONTRIBUTING/) for an overview on how to edit files, and generate a `pull` request to merge your updates.
+Changes to PlantCV-Annotate should be done in a branch, and pull against the
+`main` branch which corresponds to the `latest` version of the documentation on Read the Docs.
+
+PlantCV-Annotate is an add-on package to compliment functionality of
+[PlantCV](https://plantcv.org) so please refer to the
+[updating guide here](https://plantcv.readthedocs.io/en/latest/documentation/).
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..d61d74a
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,26 @@
+# Welcome to the documentation for PlantCV-Annotate
+
+## Overview
+
+[PlantCV-annotate](https://github.com/danforthcenter/plantcv-annotate) is composed of modular functions in order to be applicable to a
+variety of plant types and imaging systems. In the following documentation we will describe use of each function and
+provide tutorials on how each function is used in the context of an overall image-processing workflow. Development of
+PlantCV-Annotate is ongoing---we encourage input from the greater plant phenomics community. Please post questions and comments
+on the [GitHub issues page](https://github.com/danforthcenter/plantcv-annotate/issues).
+
+## Getting started
+
+The documentation can be navigated using the sidebar table of contents. Documentation for individual PlantCV-Annotate functions
+are listed under the headings "PlantCV Namespace". For general information on installation,
+updating, and other questions, see:
+
+* [Installing PlantCV-Annotate](installation.md)
+
+## Contributing
+
+If you are interested in contributing to PlantCV-Annotate, please see:
+
+* [Contribution Guide](CONTRIBUTING.md)
+* [Code of Conduct](CODE_OF_CONDUCT.md)
+
+[Return to the PlantCV homepage](https://plantcv.org)
diff --git a/docs/installation.md b/docs/installation.md
new file mode 100644
index 0000000..f9f52d0
--- /dev/null
+++ b/docs/installation.md
@@ -0,0 +1,27 @@
+## Installation
+
+### Table of contents
+1. [Supported platforms and dependencies](#dependencies)
+2. [Installing PlantCV for contributors](#contributors)
+
+### Supported platforms and dependencies
+- Linux 64-bit, x86 processors
+- macOS x86 (Intel) and M (ARM) processors
+- Windows 64-bit, x86 processors
+
+PlantCV requires Python and these [Python packages](https://github.com/danforthcenter/plantcv/blob/main/requirements.txt).
+Additionally, we recommend installing [JupyterLab](https://jupyter.org/).
+
+### Installing PlantCV for contributors
+Before getting started, please read our [contributor guidelines](CONTRIBUTING.md) and [code of conduct](CODE_OF_CONDUCT.md).
+
+You can follow the [PlantCV Installation for Contributors Guide](https://plantcv.readthedocs.io/en/latest/installation/#contributors) and then continue with the instructions below to add PlantCV-Annotate to
+your development environment.
+
+```bash
+# Activate the plantcv environment (you will have to do this each time you start a new session)
+conda activate plantcv
+# Install plantcv-annotate in editable mode so that it updates as you work on new features/updates
+pip install plantcv-annotate
+pip install -e .
+```
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 0000000..59fde8e
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1 @@
+mkdocs>1
diff --git a/mkdocs.yml b/mkdocs.yml
new file mode 100644
index 0000000..7d71deb
--- /dev/null
+++ b/mkdocs.yml
@@ -0,0 +1,24 @@
+site_name: PlantCV-annotate
+site_url: https://plantcv-annotate.readthedocs.io/
+site_description: Plant phenotyping annotation using computer vision
+site_author: PlantCV Development Team
+repo_url: https://github.com/danforthcenter/plantcv-annotate
+copyright: Copyright 2024, Donald Danforth Plant Science Center
+theme: readthedocs
+
+nav:
+- Home: index.md
+- Documentation:
+ - 'Installation': installation.md
+ - 'Change Log': changelog.md
+ - 'Contributing':
+ - 'Contributing Guide': CONTRIBUTING.md
+ - 'Code of Conduct': CODE_OF_CONDUCT.md
+ - 'Adding/Editing Documentation': documentation.md
+ - 'PlantCV Namespace':
+ - 'Annotation Tools':
+ - Points: Points.md
+markdown_extensions:
+ - toc:
+ permalink: True
+ - admonition