Files
archived-teslamate/website/docs/development.md
Eden Yemini c8b0df802f Docker compose command fixes (#3025)
* Replace `docker-compose` commands with `docker compose`

* Use official and up to date documentation for Docker and Compose installation

* Revert IDE automatic style changes

* Fix a dash from merging the upstream
2023-06-12 12:13:41 +02:00

93 lines
2.2 KiB
Markdown

---
id: development
title: Development and Contributing
sidebar_label: Development and Contributing
---
## Requirements
- **Elixir** >= 1.12
- **Postgres** >= 10
- An **MQTT broker** e.g. mosquitto (_optional_)
- **NodeJS** >= 14
## Initial Setup
To run the TeslaMate test suite you need a database named `teslamate_test`:
```bash
# download dependencies, create the dev database and run migrations
mix setup
# create the test database
MIX_ENV=test mix ecto.setup
```
## Running locally
Start an iex session in another terminal window:
```elixir
iex -S mix phx.server
```
Then sign in with a Tesla account.
## Hot reloading
To immediately apply your local changes open or reload [http://localhost:4000](http://localhost:4000). You can also reload specific modules via `iex`, for example:
```elixir
iex> r TeslaMate.Vehicles.Vehicle
```
To only compile the changes:
```bash
mix compile
```
## Code formatting
```bash
mix format
```
## Testing
To ensure a commit passes CI you should run `mix ci` locally, which executes the following commands:
- Check formatting (`mix format --check-formatted`)
- Run all tests (`mix test`)
## Making Changes to Grafana Dashboards
To update dashboards you need Grafana running locally. The following _docker-compose.yml_ can be used for this purpose:
```yml
version: "3"
services:
grafana:
image: teslamate-grafana:latest
environment:
- DATABASE_USER=postgres
- DATABASE_PASS=postgres
- DATABASE_NAME=teslamate_dev
- DATABASE_HOST=host.docker.internal
ports:
- 3000:3000
volumes:
- grafana-data:/var/lib/grafana
volumes:
grafana-data:
```
_(on Linux use the actual IP address of the host as `DATABASE_HOST`instead of `host.docker.internal`)_
Then build the image with `make grafana` and run the container via `docker compose up grafana`.
Access the Grafana at [http://localhost:3000](http://localhost:3000) and sign in with the default user `admin` and password `admin`.
Then edit the respective dashboard(s) locally. To export a dashboard hit the 'Save' button and select `Save JSON to file`. The final JSON file belongs in the directory `./grafana/dashboards/`. To apply the changes rebuild the image and start the container.