{% extends "zerver/portico.html" %} {% block title %} Tools and data sets | Zulip Dev {% endblock %} {# Login page. #} {% block portico_content %}

Useful development URLs

Below is a list of useful tools and data sets available only in the Zulip development environment that are often useful when contributing to Zulip. Most of these require you to run a command to build/generate the relevant content. This table specifies which command to use to update the data served by each page (since several of these, like test coverage, require a special command to be run to generate the data). Make sure your development server is still running when you visit these!

URL Command Description
/coverage/index.html ./tools/test-backend --coverage Backend (Django) test coverage report
/node-coverage/index.html ./tools/test-js-with-node --coverage Frontend (node) test coverage report
/docs/index.html ./tools/build-docs Developer documentation (ReadTheDocs) built locally
/emails View outgoing and example emails.
/stats/realm/analytics/ ./manage.py populate_analytics_db
Run the command after changing analytics data population logic.
View the /stats page with some pre-populated data
/webpack/5xx.html None needed Error 5xx page served by nginx (used when Django is totally broken)
/errors/404 None needed Error 404 page served by Django
/errors/5xx None needed Error 5xx page served by Django
/accounts/do_confirm/invalid None needed Invalid confirmation link page
/devtools/integrations None needed Test incoming webhook integrations
/devtools/buttons None needed Test button styles
/devtools/banners None needed Test banner styles
/devtools/inputs None needed Test input styles

Useful management commands

Development-specific management commands live in zilencer/management/commands. Highlights include:

We also have documentation on testing LDAP, Google & GitHub authentication in the development environment.

Connecting to the local PostgreSQL database

Development instructions for help center

Running ./tools/run-dev without any flags will not run the help center at all. The development server for the help center takes significant resources to run and we don't want to increase the minimum requirements to run Zulip for development.

Dev server (supports hot reload but not search)

This mode is useful when you are editing a help center file, and want to visualize the changes quickly in the help center documentation.

./tools/run-dev --only-help-center will run a dev server at /help that supports hot reload. Note that, with this flag, search will not work in the help center docs. In this mode, the Zulip web app and other related services will not run. Since the dev server consumes a significant amount of memory, this is the recommended way to run the dev server for the help center.

If you have a machine with resources significantly more than minimum requirements to run Zulip in development, you can choose to run the dev server alongside Zulip using ./tools/run-dev --help-center-dev-server. The dev server makes a bunch of request to base Zulip URL instead of scoping it to the astro/starlight base url. For this reason, in this mode, we run the dev server on it's own port and redirect help center requests to the appropriate port (9995 by default).

Serve static build (supports search but not hot reload)

Please run ./tools/build-help-center to generate a static build of the help center. ./tools/run-dev --help-center-static-build will host the generated build on /help. Note that you need to generate a build and pass the flag mentioned for the search to work.

{% endblock %}