# Client Design

FoundationDB supports language bindings for application development using the ordered key-value store. The following documents cover use of the bindings, from getting started and design principles to best practices and data modeling. The latest changes are detailed in Release Notes.

- Getting Started on macOS explains how to install a local FoundationDB server suitable for development on macOS.

- Getting Started on Linux explains how to install a local FoundationDB server suitable for development on Linux.

- Downloads describes the FoundationDB packages available on our website.

- Developer Guide explains principles of application development applicable across all language bindings.

- Data Modeling explains recommended techniques for representing application data in the key-value store.

- Client Testing Explains how one can use workloads to test client code.

- Using FoundationDB Clients contains information on FoundationDB clients applicable across all language bindings.

- Transaction Tagging contains information about using transaction tags in your client code to enable targeted transaction throttling.

- API Version Upgrade Guide contains information about upgrading client code to a new API version.

- Transaction profiling and analyzing contains information about enabling transaction profiling and analyzing.

- Known Limitations describes both long-term design limitations of FoundationDB and short-term limitations applicable to the current version.

- Tenants describes the use of the tenants feature to define named transaction domains.

- Automatic Idempotency describes the use of a transaction option to prevent transactions from failing with `commit_unknown_result`.