Directory structure

This page documents the Zulip directory structure, where to find things, and how to decide where to put a file.

You may also find the new application feature tutorial helpful for understanding the flow through these files.

Core Python files

Zulip uses the Django web framework, so a lot of these paths will be familiar to Django developers.


HTML templates

See our docs for details on Zulip's templating systems.


JavaScript, TypeScript, and other static assets


Tests


Management commands

These are distinguished from scripts, below, by needing to run a Django context (i.e. with database access).


Scripts


API and bots


Production Puppet configuration

This is used to deploy essentially all configuration in production.


Additional Django apps


Jinja2 compatibility files


Translation files


Documentation


You can consult the repository's .gitattributes file to see exactly which components are excluded from production releases (release tarballs are generated using tools/build-release-tarball).