mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	docs: Further update architecture overview intro.
This commit is contained in:
		@@ -4,29 +4,32 @@ Zulip architectural overview
 | 
				
			|||||||
Key Codebases
 | 
					Key Codebases
 | 
				
			||||||
-------------
 | 
					-------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The core Zulip application is at
 | 
					The main Zulip codebase is at <https://github.com/zulip/zulip>.  It
 | 
				
			||||||
<https://github.com/zulip/zulip> and
 | 
					contains the Zulip backend (written in Python 3.x and Django), the
 | 
				
			||||||
is a web application written in Python 3.x and using the Django framework. That
 | 
					webapp (written in JavaScript and TypeScript) and our library of
 | 
				
			||||||
codebase includes server-side code and the web client, as well as Python API
 | 
					incoming webhook [integrations](https://zulipchat.com/integrations)
 | 
				
			||||||
bindings and most of our integrations with other services and applications (see
 | 
					with other services and applications (see [the directory structure
 | 
				
			||||||
[the directory structure guide](../overview/directory-structure.html)).
 | 
					guide](../overview/directory-structure.html)).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[Zulip Mobile](https://github.com/zulip/zulip-mobile) is the official
 | 
					[Zulip Mobile](https://github.com/zulip/zulip-mobile) is the official
 | 
				
			||||||
mobile Zulip client supporting both iOS and Android, written in
 | 
					mobile Zulip client supporting both iOS and Android, written in
 | 
				
			||||||
JavaScript with React Native, and
 | 
					JavaScript with React Native, and [Zulip
 | 
				
			||||||
[Zulip Desktop](https://github.com/zulip/zulip-desktop) is the
 | 
					Desktop](https://github.com/zulip/zulip-desktop) is the official Zulip
 | 
				
			||||||
official Zulip desktop client for macOS, Linux, and Windows.
 | 
					desktop client for macOS, Linux, and Windows.  We also have an alpha
 | 
				
			||||||
 | 
					[Zulip Terminal](https://github.com/zulip/zulip-terminal) project.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
We also maintain several separate repositories for integrations and
 | 
					We also maintain several separate repositories for integrations and
 | 
				
			||||||
other glue code: a
 | 
					other glue code: [Python API
 | 
				
			||||||
[Hubot adapter](https://github.com/zulip/hubot-zulip); integrations
 | 
					bindings](https://github.com/zulip/python-zulip-api); [JavaScript API
 | 
				
			||||||
with [Phabricator](https://github.com/zulip/phabricator-to-zulip),
 | 
					bindings](https://github.com/zulip/zulip-js); a [Hubot
 | 
				
			||||||
 | 
					adapter](https://github.com/zulip/hubot-zulip); integrations with
 | 
				
			||||||
 | 
					[Phabricator](https://github.com/zulip/phabricator-to-zulip),
 | 
				
			||||||
[Jenkins](https://github.com/zulip/zulip-jenkins-plugin),
 | 
					[Jenkins](https://github.com/zulip/zulip-jenkins-plugin),
 | 
				
			||||||
[Puppet](https://github.com/matthewbarr/puppet-zulip),
 | 
					[Puppet](https://github.com/matthewbarr/puppet-zulip),
 | 
				
			||||||
[Redmine](https://github.com/zulip/zulip-redmine-plugin), and
 | 
					[Redmine](https://github.com/zulip/zulip-redmine-plugin), and
 | 
				
			||||||
[Trello](https://github.com/zulip/trello-to-zulip);
 | 
					[Trello](https://github.com/zulip/trello-to-zulip); our [full-text
 | 
				
			||||||
[node.js API bindings](https://github.com/zulip/zulip-node); and our
 | 
					search PostgreSQL extension](https://github.com/zulip/tsearch_extras);
 | 
				
			||||||
[full-text search PostgreSQL extension](https://github.com/zulip/tsearch_extras).
 | 
					and [many more](https://github.com/zulip/).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
We use [Transifex](https://www.transifex.com/zulip/zulip/) to do
 | 
					We use [Transifex](https://www.transifex.com/zulip/zulip/) to do
 | 
				
			||||||
translations.
 | 
					translations.
 | 
				
			||||||
@@ -37,44 +40,26 @@ application.
 | 
				
			|||||||
Usage assumptions and concepts
 | 
					Usage assumptions and concepts
 | 
				
			||||||
------------------------------
 | 
					------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Zulip is a real-time web-based chat application meant for companies
 | 
					Zulip is a real-time team chat application meant to provide a great
 | 
				
			||||||
and similar groups ranging in size from a small team to 10,000s of
 | 
					experience for a wide range of organizations, from companies to
 | 
				
			||||||
users. It features real-time notifications, message persistence and
 | 
					volunteer projects groups of friends, ranging in size from a small
 | 
				
			||||||
search, public group conversations (*streams*), private streams,
 | 
					team to 10,000s of users.  It has [hundreds of
 | 
				
			||||||
private one-on-one and group conversations, inline image previews,
 | 
					features](https://zulipchat.com/features) both larger and small, and
 | 
				
			||||||
team presence/buddy lists, a rich API, Markdown message support, and
 | 
					supports dedicated apps for iOS, Android, Linux, Windows, and macOS,
 | 
				
			||||||
numerous integrations with other services. It supports dedicated iOS,
 | 
					all modern web browsers, several cross-protocol chat clients, and
 | 
				
			||||||
Android, Linux, Windows, and macOS clients, as well as people using
 | 
					numerous dedicated [Zulip API](https://zulipchat.com/api) clients
 | 
				
			||||||
modern web browsers, cross-protocol chat tools, and dedicated [Zulip
 | 
					(e.g. bots).
 | 
				
			||||||
API](https://zulipchat.com/apoi) clients (e.g. bots).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
A server can host multiple Zulip *realms* (organizations) at the same
 | 
					 | 
				
			||||||
domain, each of which is a private chamber with its own users,
 | 
					 | 
				
			||||||
streams, customizations, and so on. This means that one person might
 | 
					 | 
				
			||||||
be a user of multiple Zulip realms. The administrators of an
 | 
					 | 
				
			||||||
organization have a great deal of control over who can register an
 | 
					 | 
				
			||||||
account, what permissions new users have, etc. For more on security
 | 
					 | 
				
			||||||
considerations and options, see [the security model
 | 
					 | 
				
			||||||
section](../production/security-model.html) and the [Zulip Help Center](https://zulipchat.com/help).
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The Zulip "All messages" screen is like a chronologically ordered inbox;
 | 
					 | 
				
			||||||
it displays messages, starting at the oldest message that the user
 | 
					 | 
				
			||||||
hasn't viewed yet (for more on that logic, see [the guide to the
 | 
					 | 
				
			||||||
pointer and unread counts](../subsystems/pointer.html)). The "All messages" screen displays
 | 
					 | 
				
			||||||
the most recent messages in all the streams a user has joined (except
 | 
					 | 
				
			||||||
for the streams they've muted), as well as private messages from other
 | 
					 | 
				
			||||||
users, in strict chronological order. A user can *narrow* to view only
 | 
					 | 
				
			||||||
the messages in a single stream, and can further narrow to focus on a
 | 
					 | 
				
			||||||
*topic* (thread) within that stream. Each narrow has its own URL. The
 | 
					 | 
				
			||||||
user can quickly see what conversation they're in -- the stream and
 | 
					 | 
				
			||||||
topic, or the names of the user(s) they're private messaging with
 | 
					 | 
				
			||||||
-- using *the recipient bar* displayed atop each conversation.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Zulip's philosophy is to provide sensible defaults but give the user
 | 
					 | 
				
			||||||
fine-grained control over their incoming information flow; a user can
 | 
					 | 
				
			||||||
mute topics and streams, and can make fine-grained choices to reduce
 | 
					 | 
				
			||||||
real-time notifications they find irrelevant.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A server can host multiple Zulip *realms* (organizations), each on its
 | 
				
			||||||
 | 
					own (sub)domain.  While most deployments host only organization, some
 | 
				
			||||||
 | 
					such as zulipchat.com host thousands.  Each organization is a private
 | 
				
			||||||
 | 
					chamber with its own users, streams, customizations, and so on. This
 | 
				
			||||||
 | 
					means that one person might be a user of multiple Zulip realms. The
 | 
				
			||||||
 | 
					administrators of an organization have a great deal of control over
 | 
				
			||||||
 | 
					who can register an account, what permissions new users have, etc. For
 | 
				
			||||||
 | 
					more on security considerations and options, see [the security model
 | 
				
			||||||
 | 
					section](../production/security-model.html) and the [Zulip Help
 | 
				
			||||||
 | 
					Center](https://zulipchat.com/help).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Components
 | 
					Components
 | 
				
			||||||
----------
 | 
					----------
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user