(developer)=
# Developer
Welcome to the developer/expert section of the BEC documentation! This section serves as a comprehensive resource for developers looking to delve into the underlying architecture of BEC (Beamline Experiment Control). Whether you are customizing BEC for specific beamlines or setups, exploring BEC plugins, integrating devices at the beamline, or actively participating in the development of core services, this documentation is tailored to meet your needs.

```{toctree}
---
maxdepth: 1
hidden: true
---

architecture/
contributing/
install_developer_env/
logs/
vscode/
bec_cli/
bec_sim/
bec_gui/
bec_config/
data_access/
event_data/
ophyd/
external_sources/
bec_plugins/
glossary/
reference/
```

***
**Developer Documentation for BEC**

Here, we aim to provide you with all the essential information to kickstart your journey with BEC. From understanding the intricate architecture to contributing effectively to the project, we've got you covered. Explore the following key topics:

* [Architecture](#developer.architecture): Gain insights into the underlying structure of BEC.
* [Contributing](#developer.contributing): Learn how to actively participate and contribute to the development of BEC.
* [Installing Developer Environment](#developer.install_developer_env): Set up your developer environment to work with BEC.
* [Developing with Visual Studio Code](#developer.vscode): Learn how to set up Visual Studio Code for developing Python applications and how to use it to work with BEC.
* [Logging](#developer.logging): Understand how to use the logger in BEC and monitor log messages in real-time.
* [BEC Command Line Interface (CLI)](#developer.bec_cli): Explore the command-line tool and customize its behaviour.
* [BEC Simulation Framework](#developer.bec_sim): The simulation framework allows you to explore, test or develop within the BEC ecosystem with direct feedback.
* [BEC Graphical User Interface (GUI)](#developer.bec_gui): Learn how to use the graphical user interface to interact with BEC and explore how to create your own GUIs.
* [BEC Configuration](#developer.bec_config): Learn about the different ways of customizing BEC to your needs.
* [Data Access](#developer.data_access): Explore different ways of accessing data acquired with BEC.
* [Event Data](#developer.data_access): Explore the handling of event data in BEC to streamline your data analysis and live feedback.
* [Ophyd](#developer.ophyd): Familiarize yourself with Ophyd, the underlying library for device control in BEC, and learn how to integrate and work with Ophyd devices in the BEC context.
* [External Sources](#developer.external_sources): Understand how to incorporate external data sources into your BEC workflow.
* [BEC Plugins](#developer.bec_plugins): Learn how to create and use plugins to extend BEC's functionality and tailor it to your needs.
* [Writing tests](#developer.tests): how to write tests for your code, and usage information about BEC fixtures
* [Glossary](#developer.glossary): Refer to a glossary of terms used throughout the BEC documentation.
* [Reference](#developer.reference): Access a comprehensive reference of all BEC classes, functions, and methods.


We invite you to embark on your BEC development journey, empowering you to contribute to this dynamic project and tailor it to the unique requirements of your experiments. Happy coding!





