# Development

This section is for people who want to understand how Tap works inside, or to change it. You
don't need any of it to write tests.

<div class="grid cards" markdown>

-   **[Architecture](architecture.md)**

    The driver, the server and the clients: what each does, where it lives in the repository,
    how a command travels, and the rules the design is built around.

-   **[Building and testing](building-and-testing.md)**

    Setting up a checkout, building the server and the driver, and running the unit, client
    and device test suites.

</div>

## Contributing

Bug reports, ideas and pull requests are welcome. The
[contributing guide](https://github.com/NoamCohen48/tap/blob/main/CONTRIBUTING.md) explains
how to propose a change and what a pull request needs; the
[Code of Conduct](https://github.com/NoamCohen48/tap/blob/main/CODE_OF_CONDUCT.md) applies to
everyone taking part.
