Directory structure =================== This page documents the Zulip directory structure and how to decide where to put a file. Scripts ------- * `scripts/` Scripts that production deployments might run manually (e.g., `restart-server`). * `scripts/lib/` Scripts that are needed on production deployments but humans should never run. * `scripts/setup/` Tools that production deployments will only run once, during installation. * `tools/` Development tools. --------------------------------------------------------- Bots ---- * `api/integrations/` Bots distributed as part of the Zulip API bundle. * `bots/` Previously Zulip internal bots. These usually need a bit of work. ----------------------------------------------------- Management commands ------------------- * `zerver/management/commands/` Management commands one might run at a production deployment site (e.g. scripts to change a value or deactivate a user properly) ------------------------------------------------------------------------- Views ----- * `zerver/tornadoviews.py` Tornado views * `zerver/views/webhooks.py` Webhook views * `zerver/views/messages.py` message-related views * `zerver/views/__init__.py` other Django views ---------------------------------------- Jinja2 Compatibility Files -------------------------- * `zproject/jinja2/__init__.py` Jinja2 environment * `zproject/jinja2/backends.py` Jinja2 backend * `zproject/jinja2/compressors.py` Jinja2 compatible functions of Django-Pipeline ----------------------------------------------------------------------- Static assets ------------- * `assets/` For assets not to be served to the web (e.g. the system to generate our favicons) * `static/` For things we do want to both serve to the web and distribute to production deployments (e.g. the webpages) --------------------------------------------------------------- Puppet ------ * `puppet/zulip/` For configuration for production deployments ------------------------------------------------------------------- Templates --------- * `templates/zerver/` For Jinja2 templates for the backend (for zerver app) * `static/templates/` Handlebars templates for the frontend ----------------------------------------------------------------------- Tests ----- * `zerver/tests/` Backend tests * `frontend_tests/node_tests/` Node Frontend unit tests * `frontend_tests/casper_tests/` Casper frontend tests ----------------------------------------------------------------------- Documentation ------------- * `docs/` Source for this 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`).