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]