v 1.0.0, and how to create a new release
diff --git a/README.md b/README.md
index 0cbda17..d43c59a 100644
--- a/README.md
+++ b/README.md
@@ -66,3 +66,39 @@
registers Django apps under the entry_point group name of `airavata.djangoapp`,
but you can change this. Just make sure that when you call `dynamic_apps.load`
that you pass as the second argument the name of the entry_point group.
+
+## Developing
+
+### Making a new release
+
+1. Update the version in setup.cfg.
+2. Commit the update to setup.cfg.
+3. Tag the repo with the same version, with the format `v${version_number}`. For
+ example, if the version number in setup.cfg is "1.2" then tag the repo with
+ "v1.2".
+
+ ```
+ VERSION=...
+ git tag -m $VERSION $VERSION
+ git push --follow-tags
+ ```
+
+4. In a clean checkout
+
+ ```
+ cd /tmp/
+ git clone /path/to/airavata-django-portal-commons/ -b $VERSION
+ cd airavata-django-portal-commons
+ python3 -m venv venv
+ source venv/bin/activate
+ python3 -m pip install --upgrade build
+ python3 -m build
+ ```
+
+5. Push to pypi.org. Optionally can push to test.pypi.org. See
+ <https://packaging.python.org/tutorials/packaging-projects/> for more info.
+
+ ```
+ python3 -m pip install --upgrade twine
+ python3 -m twine upload dist/*
+ ```
diff --git a/setup.cfg b/setup.cfg
index 3eb1eb6..b3429ee 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,6 +1,6 @@
[metadata]
-name = airavata_django_portal_commons
-version = 0.1.0
+name = airavata-django-portal-commons
+version = 1.0.0
description = Utilities for working with dynamically loaded Django apps.
[options]