{% extends "zerver/portico.html" %} {% block title %}
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_dbRun 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 | 
Development-specific management commands live in zilencer/management/commands.  Highlights include:
            
./manage.py populate_db: Rebuilds database. Has options to, for example, create 3K users for testing../manage.py mark_all_messages_unread: Useful for testing reading messages../manage.py create_realm: Add a new realm. Useful for testing onboarding../manage.py create_user: Add a new user. Useful for testing onboarding../manage.py add_mock_conversation: Add test messages, streams, images, emoji, etc.
                    into the dev environment. First edit zilencer/management/commands/add_mock_conversation.py
                    to add the data you're testing.
                We also have documentation on testing LDAP, Google & GitHub authentication in the development environment.
./manage.py dbshell: Connect to
                PostgreSQL database via your terminal.
            provision creates a ~/.pgpass file,
                so psql -U zulip -h localhost works too.
            To connect using a graphical PostgreSQL client like pgAdmin, use the following credentials:
local_database_password in zulip/zproject/dev-secrets.confThese commands are to run the project for an ongoing migration for our help center docs to use @astrojs/starlight. You can track the progress for the project at #30450.
./tools/build-help-center will convert the existing help center MD files to MDX.
                It will also create a production build for the converted MDX files. You can run
                ./tools/convert-help-center-docs-to-mdx to convert the files separately.
                You can run pnpm build within the help-beta directory
                to run the build step separately.
            ./tools/run-dev --help-center will host the generated build on
                /help-beta url. You will need to have run the build steps before this step.
                The docs search will work with this flag.
            ./tools/run-dev --help-center-dev-server will run a dev server at
                /help-beta that supports hot reload. But, with this flag, the search will not work.
                 This mode is ideal when you're editing a document and want to visualize the changes quickly.
                You will need the converted MDX files to be already generated before you run this step.