# Summary

[What is Perspective](./perspective.md)

# Concepts

- [Data Architecture](./explanation/architecture.md)
    - [Client-only](./explanation/architecture/client_only.md)
    - [Client/Server replicated](./explanation/architecture/client_server.md)
    - [Server only](./explanation/architecture/server_only.md)
- [Virtual Servers](./explanation/virtual_servers.md)
- [`Table`](./explanation/table.md)
    - [Schema and column types](./explanation/table/schema.md)
    - [Loading data](./explanation/table/loading_data.md)
    - [Construct an empty `Table` from a schema](./explanation/table/constructing_schema.md)
    - [`index` and `limit` options](./explanation/table/options.md)
    - [`update()` and `remove()` streaming methods](./explanation/table/update_and_remove.md)
    - [`clear()` and `replace()` start-over methods](./explanation/table/clear_and_replace.md)
- [`View`](./explanation/view.md)
    - [Querying data](./explanation/view/querying.md)
        - [Grouping and Pivots](./explanation/view/config/grouping_and_pivots.md)
        - [Selection and Ordering](./explanation/view/config/selection_and_ordering.md)
        - [`expressions`](./explanation/view/config/expressions.md)
    - [Advanced View Operations](./explanation/view/advanced.md)
- [`Join`](./explanation/join.md)
    - [Join Types](./explanation/join/join_types.md)
    - [Join Options](./explanation/join/options.md)
    - [Reactivity and Constraints](./explanation/join/reactivity.md)

# JavaScript

- [Installation and Module Structure](./how_to/javascript/installation.md)
- [Importing with or without a bundler](./how_to/javascript/importing.md)
- [`perspective` data engine library](./how_to/javascript/worker.md)
    - [Serializing data](./how_to/javascript/serializing.md)
    - [Cleaning up resources](./how_to/javascript/deleting.md)
    - [Hosting a `WebSocketServer` in Node.js](./how_to/javascript/nodejs_server.md)
    - [Customizing `perspective.worker()`](./how_to/javascript/custom_worker.md)
    - [Joining Tables](./how_to/javascript/join.md)
- [`perspective-viewer` Custom Element library](./how_to/javascript/viewer.md)
    - [Loading data](./how_to/javascript/loading_data.md)
    - [Theming](./how_to/javascript/theming.md)
    - [Saving and restoring UI state](./how_to/javascript/save_restore.md)
    - [Listening for events](./how_to/javascript/events.md)
    - [Plugin render limits](./how_to/javascript/plugin_settings.md)
- [Virtual Servers](./how_to/javascript/virtual_server.md)
    - [DuckDB](./how_to/javascript/virtual_server/duckdb.md)
    - [ClickHouse](./how_to/javascript/virtual_server/clickhouse.md)
    - [Custom](./how_to/javascript/virtual_server/custom.md)
- [React Component](./how_to/javascript/react.md)

# Python

- [Overview](./explanation/python.md)
- [Installation](./how_to/python/installation.md)
- [Loading data into a `Table`](./how_to/python/table.md)
    - [`pandas`, `polars` and `pyarrow` integration](./how_to/python/table_data.md)
- [Callbacks and events](./how_to/python/callbacks.md)
- [Multithreading](./how_to/python/multithreading.md)
- [Hosting a WebSocket server](./how_to/python/websocket.md)
- [Joining Tables](./how_to/python/join.md)
- [`PerspectiveWidget` for JupyterLab](./how_to/python/jupyterlab.md)
- [Virtual Servers](./how_to/python/virtual_server.md)
    - [DuckDB](./how_to/python/virtual_server/duckdb.md)
    - [ClickHouse](./how_to/python/virtual_server/clickhouse.md)
    - [Polars](./how_to/python/virtual_server/polars.md)
    - [Custom](./how_to/python/virtual_server/custom.md)

# Rust

- [Getting Started](./how_to/rust.md)

# Tutorials

- [A `tornado` server in Python](./tutorials/python/tornado.md)

# API Reference

- [API Reference](./api_reference.md)

# FAQ

- [FAQ](./FAQ.md)
