Skip to content

Latest commit

 

History

History
98 lines (77 loc) · 13.1 KB

File metadata and controls

98 lines (77 loc) · 13.1 KB
sidebar_position 1

Tools

Operating system

All Bitwarden developers are issued with a MacBook or Windows laptop. The tooling recommendations and instructions in this documentation assume that you’re using one of these operating systems, noting where a tool may apply to only one of them.

This may require some adaptation if you’re using a different operating system.

Recommended tools

The following tools are strongly recommended as part of the "standard" developer setup. We recommend that any new Bitwarden developer install all of them as part of setting up their local development environment.

IDEs

Tool How we use it
JetBrains Rider Fully featured IDE for C#, .NET & more. Bitwarden developers should contact IT for a license.
Visual Studio Used for C# development on Windows.
Visual Studio Code Used for all Typescript projects. Suboptimal for C#. Be sure to install extensions.
Xcode Required for iOS Mobile development and Safari web extension.

Local environment

Tool How we use it
.NET SDK Required for server and other back-end development environments.
Docker Required for server development only. Bitwarden developers should contact IT for a license for Docker Desktop.
Git Commit signing is strongly recommended.
Homebrew Package manager for macOS.
Iterm2 A better terminal emulator (available via Homebrew).
NodeJS Check the engines in package.json for the current version. We recommend using a node version manager.
npm Check the engines in package.json for the current version. It is included with NodeJS.
PowerShell Available via Homebrew on macOS: brew install powershell.
Rust We stay on the latest stable version - preferably installed via rustup.
Various browsers It's nice to have a slew of browsers ready to test the extension in a host of scenarios. You can also use multiple browsers to have different browser extension version installed to compare them.

Mobile-specific tooling

Tool How we use it
adb For interacting with Android sims.
Android Studio Nice for setting up and running Android Simulators.
Apple Icons Generator Gist Script to generate Apple icons from an image.

Databases

Tool How we use it
Microsoft Azure Storage Explorer For connecting to or working with local Azure table storage and queues.
MSSQL VSCode Extension For working with your local SQL Server.
MySQLWorkbench Useful for fiddling with MySQL db.
PgAdmin4 Useful for fiddling with PostgreSQL db.
SQLiteStudio Useful for fiddling with SQLite db.

Visual Studio Code extensions

There are some VS Code extensions that are very helpful in our codebase. A list of highly recommended ones include the following:

Type Extension Notes
C# .NET Core Test Explorer Test explorer for .NET tests.
C# .NET Core User Secrets Edit secrets files by right clicking on a .proj and selecting "Manage User Secrets".
C# C# Omnisharp integrations.
Databases MySQL Syntax Syntax highlighting for MySQL.
Databases PostgreSQL Syntax highlighting for PostgreSQL.
General Back & Forth Adds forward and back buttons to top right of your editor. Simple, but incredibly useful.
General Code Spell Checker Can be annoying, but has saved lots of tmes form writting oragnizations.
General LiveShare For pair programming.
Git Git Graph Fantastic git visualization tool.
Git Git History More Git history.
Git Git Lens Even more Git options.
Rust CodeLLDB For Rust debugging.
Rust Even Better TOML For handling TOML (cargo config).
Rust rust-analyzer Great Rust language server.
Typescript / Angular Angular Language Service Understands Angular templates.
Typescript / Angular ESLint Integrations for ESLint.
Typescript / Angular Jest Jest test runner.
Typescript / Angular Prettier Integrate with prettier code formatting.

Optional tools

The following tools may be useful depending on your preferences or what you're developing.

Tool How we use it
Parallels For running Windows or Linux VMs on macOS machines.
Sourcetree Git GUI. For the Git hooks to behave correctly on macOS when using nvm, please follow these instructions.