<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ohcnwiki.tellmey.fyi/index.php?action=history&amp;feed=atom&amp;title=Contributing%2FLocal_development%2FBackend_setup</id>
	<title>Contributing/Local development/Backend setup - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ohcnwiki.tellmey.fyi/index.php?action=history&amp;feed=atom&amp;title=Contributing%2FLocal_development%2FBackend_setup"/>
	<link rel="alternate" type="text/html" href="https://ohcnwiki.tellmey.fyi/index.php?title=Contributing/Local_development/Backend_setup&amp;action=history"/>
	<updated>2026-07-06T05:19:18Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.4</generator>
	<entry>
		<id>https://ohcnwiki.tellmey.fyi/index.php?title=Contributing/Local_development/Backend_setup&amp;diff=464&amp;oldid=prev</id>
		<title>Admin: Add Navbox contributing (via update-page on MediaWiki MCP Server)</title>
		<link rel="alternate" type="text/html" href="https://ohcnwiki.tellmey.fyi/index.php?title=Contributing/Local_development/Backend_setup&amp;diff=464&amp;oldid=prev"/>
		<updated>2026-07-06T04:21:49Z</updated>

		<summary type="html">&lt;p&gt;Add Navbox contributing (via update-page on MediaWiki MCP Server)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:51, 6 July 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 191:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 191:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Prefer a reproducible toolchain? See the [[Contributing/Local development/Nix development environment|Nix dev environment]].&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Prefer a reproducible toolchain? See the [[Contributing/Local development/Nix development environment|Nix dev environment]].&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Ready to contribute? Read the [[Contributing/Contribution workflow|contribution workflow]].&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Ready to contribute? Read the [[Contributing/Contribution workflow|contribution workflow]].&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-empty diff-side-deleted&quot;&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Navbox contributing}}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Related}}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Related}}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://ohcnwiki.tellmey.fyi/index.php?title=Contributing/Local_development/Backend_setup&amp;diff=196&amp;oldid=prev</id>
		<title>Admin: OHC identity seed</title>
		<link rel="alternate" type="text/html" href="https://ohcnwiki.tellmey.fyi/index.php?title=Contributing/Local_development/Backend_setup&amp;diff=196&amp;oldid=prev"/>
		<updated>2026-07-04T23:07:12Z</updated>

		<summary type="html">&lt;p&gt;OHC identity seed&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Doc header&lt;br /&gt;
|type=guide&lt;br /&gt;
|domain=contributing&lt;br /&gt;
|title=Backend setup&lt;br /&gt;
|order=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This page walks you through running the Care backend ([&amp;lt;nowiki/&amp;gt;https://github.com/ohcnetwork/care ohcnetwork/care]) on your machine. It is a Django application that exposes the Care REST API and depends on PostgreSQL, Redis, a Celery worker, and an S3-compatible object store (MinIO locally).&lt;br /&gt;
&lt;br /&gt;
There are two supported paths:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Docker Compose&amp;#039;&amp;#039;&amp;#039; (recommended) — every dependency runs in a container, so there are no conflicting local installs.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Manual / virtualenv&amp;#039;&amp;#039;&amp;#039; — you run Django directly against a PostgreSQL and Redis you provide yourself.&lt;br /&gt;
&lt;br /&gt;
Most contributors should use Docker Compose. Use the manual path only if you cannot run Docker, or you need to attach native tooling.&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=The default branch for contributions is &amp;lt;code&amp;gt;develop&amp;lt;/code&amp;gt;. Clone and base your work on it. See the [[Contributing/Contribution workflow|contribution workflow]] for branching and PR conventions.}}&lt;br /&gt;
&lt;br /&gt;
== Docker Compose (recommended) ==&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
* [&amp;lt;nowiki/&amp;gt;https://docs.docker.com/get-docker/ Docker]&lt;br /&gt;
* Docker Compose (bundled with Docker Desktop)&lt;br /&gt;
&lt;br /&gt;
The Compose stack runs the following containers:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Container&lt;br /&gt;
! Role&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;backend&amp;lt;/code&amp;gt;&lt;br /&gt;
| Care Django application (serves the API)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;db&amp;lt;/code&amp;gt;&lt;br /&gt;
| PostgreSQL database&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;redis&amp;lt;/code&amp;gt;&lt;br /&gt;
| In-memory cache and Celery broker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;celery&amp;lt;/code&amp;gt;&lt;br /&gt;
| Background task worker&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;minio&amp;lt;/code&amp;gt;&lt;br /&gt;
| S3-compatible object store (mimics AWS locally)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1. Build the images ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;make build&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The first build pulls base images and installs dependencies, so it can take a while depending on your machine and network speed.&lt;br /&gt;
&lt;br /&gt;
=== 2. Start the stack ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;make up&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This starts all containers in the background and waits for them to become healthy. Once it returns, the API is available at [http://localhost:9000 http://localhost:9000].&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=To attach the VS Code debugger, set &amp;lt;code&amp;gt;DJANGO_DEBUG=True&amp;lt;/code&amp;gt; in your &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file before starting the stack.}}&lt;br /&gt;
&lt;br /&gt;
=== 3. Seed data ===&lt;br /&gt;
&lt;br /&gt;
Load the fixtures (base roles, permissions, and reference data) so the app is usable:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;make load-fixtures&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== 4. Create an admin user ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;docker compose exec backend python manage.py createsuperuser&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Follow the prompts to set the username, email, and password. You can now sign in to the API and (with the [[Contributing/Local development/Frontend setup|frontend]] running) the web app.&lt;br /&gt;
&lt;br /&gt;
=== Running tests ===&lt;br /&gt;
&lt;br /&gt;
Run the full test suite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;make test&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Run a single test file, class, or method by passing a dotted &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;make test path=&amp;lt;dotted.path&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Stopping and resetting ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;# Stop and remove containers, keeping your data volumes&lt;br /&gt;
make down&lt;br /&gt;
&lt;br /&gt;
# Stop and remove containers AND their volumes (wipes the database)&lt;br /&gt;
make teardown&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== After changing dependencies or migrations ===&lt;br /&gt;
&lt;br /&gt;
Whenever you update a Python dependency or add a migration that must run inside the container, rebuild the image without cache:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;make re-build&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|1=&amp;lt;code&amp;gt;make re-build&amp;lt;/code&amp;gt; rebuilds with &amp;lt;code&amp;gt;--no-cache&amp;lt;/code&amp;gt;, so it is slower than &amp;lt;code&amp;gt;make build&amp;lt;/code&amp;gt;. Use it specifically when a plain &amp;lt;code&amp;gt;make up&amp;lt;/code&amp;gt; no longer reflects your dependency or migration changes.}}&lt;br /&gt;
&lt;br /&gt;
== Manual / virtualenv setup ==&lt;br /&gt;
&lt;br /&gt;
Use this path only if you are not using Docker. You are responsible for running PostgreSQL and Redis yourself.&lt;br /&gt;
&lt;br /&gt;
=== 1. Provision PostgreSQL ===&lt;br /&gt;
&lt;br /&gt;
Create a role and database. For example, in &amp;lt;code&amp;gt;psql&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;CREATE ROLE my_username LOGIN PASSWORD &amp;#039;my_password&amp;#039;;&lt;br /&gt;
CREATE DATABASE care WITH OWNER = my_username;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== 2. Create a virtual environment and install dependencies ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python3 -m venv .venv&lt;br /&gt;
source .venv/bin/activate&lt;br /&gt;
pipenv sync --categories &amp;quot;packages dev-packages docs&amp;quot;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== 3. Configure environment ===&lt;br /&gt;
&lt;br /&gt;
Put your database connection string in a &amp;lt;code&amp;gt;.env&amp;lt;/code&amp;gt; file at the repository root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;env&amp;quot;&amp;gt;DATABASE_URL=postgres://my_username:my_password@localhost:5432/care&amp;lt;/pre&amp;gt;&lt;br /&gt;
Tell Django to read it:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;export DJANGO_READ_DOT_ENV_FILE=true&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== 4. Migrate and run ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python manage.py migrate&lt;br /&gt;
python manage.py runserver&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Seed data and create an admin user the same way as in the Docker path, but run the commands directly:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python manage.py load_fixtures&lt;br /&gt;
python manage.py createsuperuser&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Run the test suite with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;python manage.py test&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{Note|title=macOS troubleshooting|1=If you installed PostgreSQL via [&amp;lt;nowiki/&amp;gt;https://postgresapp.com/ Postgres.app], add its binaries to your &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; so &amp;lt;code&amp;gt;psql&amp;lt;/code&amp;gt; and friends are found (adjust the version to match your install):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/14/bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If &amp;lt;code&amp;gt;pipenv sync&amp;lt;/code&amp;gt; fails while building Pillow, install its native image libraries first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;brew install libjpeg libtiff little-cms2 openjpeg webp freetype harfbuzz fribidi&lt;br /&gt;
```}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Pre-commit hooks&lt;br /&gt;
&lt;br /&gt;
Care uses [https://pre-commit.com/ pre-commit] to run linters and formatters before each commit. Install the hooks once after cloning:&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
pre-commit install&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To run the hooks against only the files you have changed relative to &amp;lt;code&amp;gt;develop&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;pre-commit run --files $(git diff --name-only develop...HEAD)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Useful &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; targets ==&lt;br /&gt;
&lt;br /&gt;
These targets are defined in the repository&amp;#039;s &amp;lt;code&amp;gt;Makefile&amp;lt;/code&amp;gt; and wrap the most common Docker Compose workflows.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Target&lt;br /&gt;
! What it does&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make build&amp;lt;/code&amp;gt;&lt;br /&gt;
| Build the Docker images&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make re-build&amp;lt;/code&amp;gt;&lt;br /&gt;
| Rebuild the images with &amp;lt;code&amp;gt;--no-cache&amp;lt;/code&amp;gt; (after dependency or migration changes)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make up&amp;lt;/code&amp;gt;&lt;br /&gt;
| Start the stack in the background and wait until healthy&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make down&amp;lt;/code&amp;gt;&lt;br /&gt;
| Stop and remove containers, keeping volumes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make teardown&amp;lt;/code&amp;gt;&lt;br /&gt;
| Stop and remove containers and volumes (wipes data)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make load-fixtures&amp;lt;/code&amp;gt;&lt;br /&gt;
| Load seed/reference data into the database&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make migrate&amp;lt;/code&amp;gt;&lt;br /&gt;
| Apply database migrations&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make makemigrations&amp;lt;/code&amp;gt;&lt;br /&gt;
| Generate new migrations from model changes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make test&amp;lt;/code&amp;gt;&lt;br /&gt;
| Run the test suite (pass &amp;lt;code&amp;gt;path=&amp;amp;lt;dotted.path&amp;amp;gt;&amp;lt;/code&amp;gt; for one test)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make logs&amp;lt;/code&amp;gt;&lt;br /&gt;
| Show logs for the stack&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;make reset-and-setup&amp;lt;/code&amp;gt;&lt;br /&gt;
| Reset the database, then migrate and reload fixtures&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Next steps ==&lt;br /&gt;
&lt;br /&gt;
* Set up the [[Contributing/Local development/Frontend setup|frontend]] to use the web app against this API.&lt;br /&gt;
* Prefer a reproducible toolchain? See the [[Contributing/Local development/Nix development environment|Nix dev environment]].&lt;br /&gt;
* Ready to contribute? Read the [[Contributing/Contribution workflow|contribution workflow]].&lt;br /&gt;
&lt;br /&gt;
{{Related}}&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>