Skip to content

Setup Development Environment

Prerequisites

  1. Fork the repository and clone it to your local machine.

  2. Install the required software:

  3. Install the required dependencies:

    • Node.js 22 LTS or higher
    • Bun or use npm if you dont't change dependencies
    • Watchman (for Linux or macOS users)
  4. In addition is recommended to use the ESLint and Prettier extensions for your IDE to get real-time feedback on your code.

  5. Install project dependencies by running the following command in the project directory:

    sh
    bun install
  6. Setup the emulator

    Android (Windows, macOS, and Linux):

    iOS (macOS only):

  7. Copy the .env.local.example file to .env.local and fill in the variables.
    See the notes on the API key.

env
EXPO_PUBLIC_THI_API_KEY=abc123
EXPO_PUBLIC_THI_API_KEY=SUPER_SECRET_API_KEY
  1. Create a development build for your desired platform.

    sh
    bun ios
    bun android

Note

Step 8 is required every time the dependencies are updated.

Development

  1. Create a new branch from your fork to contribute to the project. Use a descriptive branch name.

  2. Make your changes and ensure that the code follows our coding style and conventions.

  3. Run the app locally with Expo by running the following command in the project directory:

    sh
    bun start

    This allows you to run the app one the previously created development build. Expo Go is not supported for development.

Submitting Changes

  1. Commit your changes to your branch. To ensure descriptive commit messages and automatic changelog generation, we require using the Angular commit message style for your commit messages.
  2. Create a pull request from your branch to the develop branch of this repository.
  3. Provide a clear and descriptive title and description for your pull request, summarizing the changes you made. Also make sure use the Angular commit message style for the pull request title.
  4. Once your pull request is submitted, our team will review your changes and provide feedback or request further modifications if needed.
Details on the Angular commit message style
<type>(<scope>): <short summary>
  │       │             │
  │       │             └─⫸ Summary in present tense. Not capitalized. No period at the end.
  │       │
  │       └─⫸ Commit Scope: animations|bazel|benchpress|common|compiler|compiler-cli|core|
  │                          elements|forms|http|language-service|localize|platform-browser|
  │                          platform-browser-dynamic|platform-server|router|service-worker|
  │                          upgrade|zone.js|packaging|changelog|docs-infra|migrations|
  │                          devtools

  └─⫸ Commit Type: build|ci|docs|feat|fix|perf|refactor|test

Code Style

  • Follow the existing code style and conventions used in the project.

  • Use meaningful variable and function names to improve code readability.

  • Document your code when necessary using inline comments.

  • Follow the existing code style and conventions used in the project.

  • Use meaningful variable and function names to improve code readability.

  • Document your code when necessary using inline comments.

We use the Husky git hook to automatically fix commits according to ESLint rules, format them using Prettier and to enforce the commit message style. But you can also run these commands manually:

  • bun lint to check for linting errors
  • bun lint:fix to automatically fix linting errors
  • bun format to format the code using Prettier

Issues and Discussions

  • Feel free to open an issue if you encounter a bug or want to suggest an improvement.
  • For questions or more general concerns, create a thread in the discussion tab.