Compare commits

...

1 Commits

Author SHA1 Message Date
timonrieger 7e0dd0f61b chore: update documentation to use mise commands 2026-05-20 13:03:41 +02:00
7 changed files with 84 additions and 67 deletions
+2 -2
View File
@@ -5,7 +5,7 @@ After making any changes in the `server/src/schema`, a database migration need t
1. Run the command 1. Run the command
```bash ```bash
pnpm run migrations:generate <migration-name> mise //server:migrations generate <migration-name>
``` ```
2. Check if the migration file makes sense. 2. Check if the migration file makes sense.
@@ -18,7 +18,7 @@ The server will automatically detect `*.ts` file changes and restart. Part of th
If you need to undo the most recently applied migration—for example, when developing or testing on schema changes—run: If you need to undo the most recently applied migration—for example, when developing or testing on schema changes—run:
```bash ```bash
pnpm run migrations:revert mise //server:migrations revert
``` ```
This command rolls back the latest migration and brings the database schema back to its previous state. This command rolls back the latest migration and brings the database schema back to its previous state.
+19 -30
View File
@@ -252,44 +252,33 @@ To connect the mobile app to your Dev Container:
The Dev Container supports multiple ways to run tests: The Dev Container supports multiple ways to run tests:
#### Using Mise Commands (Recommended)
```bash ```bash
# Run tests for specific components # Server
mise run checklist # in `server/`, `web/`, `packages/cli` mise //server:test # unit tests
mise //server:test-medium # medium / integration tests
# Web
mise //web:test # unit tests
# E2E
mise //e2e:test # API tests
mise //e2e:test-web # web UI tests (Playwright)
# Run all checks for a component
mise //server:checklist
mise //web:checklist
``` ```
#### Using PNPM Directly ### Additional Commands
```bash
# Server tests
cd /workspaces/immich/server
pnpm test # Run all tests
pnpm run test:medium # Medium tests (integration tests)
pnpm run test:watch # Watch mode
pnpm run test:cov # Coverage report
# Web tests
cd /workspaces/immich/web
pnpm test # Run all tests
pnpm run test:watch # Watch mode
# E2E tests
cd /workspaces/immich/e2e
pnpm run test # Run API tests
pnpm run test:web # Run web UI tests
```
### Additional Make Commands
```bash ```bash
# API generation # API generation
make open-api # Generate OpenAPI specs mise //:open-api # Generate OpenAPI specs
make open-api-typescript # Generate TypeScript SDK mise //:open-api-typescript # Generate TypeScript SDK
make open-api-dart # Generate Dart SDK mise //:open-api-dart # Generate Dart SDK
# Database # Database
mise sql # Sync database schema mise //server:sql # Sync database schema
``` ```
### Debugging ### Debugging
+32 -13
View File
@@ -8,34 +8,42 @@ When contributing code through a pull request, please check the following:
## Web Checks ## Web Checks
- [ ] `pnpm run lint` (linting via ESLint) - [ ] `mise //web:lint` (linting via ESLint)
- [ ] `pnpm run format` (formatting via Prettier) - [ ] `mise //web:format` (formatting via Prettier)
- [ ] `pnpm run check:svelte` (Type checking via SvelteKit) - [ ] `mise //web:check-svelte` (type checking via SvelteKit)
- [ ] `pnpm run check:typescript` (check typescript) - [ ] `mise //web:check-typescript` (type checking via `tsc`)
- [ ] `pnpm test` (unit tests) - [ ] `mise //web:test` (unit tests)
:::tip AIO :::tip AIO
Run all web checks with `pnpm run check:all` Run all web checks with `mise //web:checklist`
:::
:::tip Auto Fix
Use `mise //web:lint-fix` and `mise //web:format-fix` to automatically correct some issues.
::: :::
## Documentation ## Documentation
- [ ] `pnpm run format` (formatting via Prettier) - [ ] `mise //docs:format` (formatting via Prettier)
- [ ] Update the `_redirects` file if you have renamed a page or removed it from the documentation. - [ ] Update the `_redirects` file if you have renamed a page or removed it from the documentation.
:::tip Auto Fix
Use `mise //docs:format-fix` to automatically fix formatting.
:::
## Server Checks ## Server Checks
- [ ] `pnpm run lint` (linting via ESLint) - [ ] `mise //server:lint` (linting via ESLint)
- [ ] `pnpm run format` (formatting via Prettier) - [ ] `mise //server:format` (formatting via Prettier)
- [ ] `pnpm run check` (Type checking via `tsc`) - [ ] `mise //server:check` (type checking via `tsc`)
- [ ] `pnpm test` (unit tests) - [ ] `mise //server:test` (unit tests)
:::tip AIO :::tip AIO
Run all server checks with `pnpm run check:all` Run all server checks with `mise //server:checklist`
::: :::
:::tip Auto Fix :::tip Auto Fix
You can use `pnpm run __:fix` to potentially correct some issues automatically for `pnpm run format` and `lint`. Use `mise //server:lint-fix` and `mise //server:format-fix` to automatically correct some issues.
::: :::
## Mobile Checklist ## Mobile Checklist
@@ -53,6 +61,17 @@ Run all these commands at once with `mise //mobile:checklist`
You can use `mise //mobile:lint-fix` to potentially correct some issues automatically for `mise //mobile:lint`. You can use `mise //mobile:lint-fix` to potentially correct some issues automatically for `mise //mobile:lint`.
::: :::
## Machine Learning Checklist
- [ ] `mise //machine-learning:lint` (linting via ruff)
- [ ] `mise //machine-learning:format` (formatting via ruff)
- [ ] `mise //machine-learning:check` (type checking via mypy)
- [ ] `mise //machine-learning:test` (unit tests via pytest)
:::tip AIO
Run all machine learning checks with `mise //machine-learning:checklist`
:::
## OpenAPI ## OpenAPI
The OpenAPI client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file. Note that you should not modify this file directly as it is auto-generated. See [OpenAPI](/api.md) for more details. The OpenAPI client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file. Note that you should not modify this file directly as it is auto-generated. See [OpenAPI](/api.md) for more details.
+18 -17
View File
@@ -32,6 +32,10 @@ This environment includes the services below. Additional details are available i
All the services are packaged to run as with single Docker Compose command. All the services are packaged to run as with single Docker Compose command.
:::tip mise
[mise](https://mise.jdx.dev) is used throughout the project to manage tool versions and run tasks. [Install mise](https://mise.jdx.dev/installing-mise.html), then from the repo root run `mise trust` and `mise install` to get all required tools. Tasks for each service can be run from the repo root using `mise //namespace:task` (e.g. `mise //server:lint`). To list all available tasks, run `mise tasks ls --all`.
:::
### Server and web apps ### Server and web apps
1. Clone the project repo. 1. Clone the project repo.
@@ -56,22 +60,23 @@ You can access the web from `http://your-machine-ip:3000` or `http://localhost:3
#### Connect web to a remote backend #### Connect web to a remote backend
If you only want to do web development connected to an existing, remote backend, follow these steps: If you only want to do web development connected to an existing, remote backend, run from the repo root:
1. Build the Immich SDK - `pnpm --filter @immich/sdk install && pnpm --filter @immich/sdk build`
2. Enter the web directory - `cd web/`
3. Install web dependencies - `pnpm i`
4. Start the web development server
```bash ```bash
IMMICH_SERVER_URL=https://demo.immich.app/ pnpm run dev IMMICH_SERVER_URL=https://demo.immich.app/ mise //web:start
```
This will install all dependencies (including the SDK) and start the dev server in one step. To connect to the hosted demo server specifically, use the shorthand:
```bash
mise //web:start-demo
``` ```
If you're using PowerShell on Windows you may need to set the env var separately like so: If you're using PowerShell on Windows you may need to set the env var separately like so:
```powershell ```powershell
$env:IMMICH_SERVER_URL = "https://demo.immich.app/" $env:IMMICH_SERVER_URL = "https://demo.immich.app/"
pnpm run dev mise //web:start
``` ```
#### `@immich/ui` #### `@immich/ui`
@@ -90,20 +95,16 @@ To see local changes to `@immich/ui` in Immich, do the following:
#### Setup #### Setup
1. [Install mise](https://mise.jdx.dev/installing-mise.html). 1. Run `mise //mobile:install` to install Flutter dependencies.
2. Change to the immich (root) directory and trust the mise config with `mise trust`. 2. Run `mise //mobile:translation` to generate the translation file.
3. Install tools with mise: `mise install`. 3. Change to the `mobile/` directory and run `flutter run` to start the app.
4. Change to the `mobile/` directory.
5. Run `flutter pub get` to install the dependencies.
6. Run `make translation` to generate the translation file.
7. Run `flutter run` to start the app.
#### Translation #### Translation
To add a new translation text, enter the key-value pair in the `i18n/en.json` in the root of the immich project. Then, from the `mobile/` directory, run To add a new translation text, enter the key-value pair in the `i18n/en.json` in the root of the immich project. Then run:
```bash ```bash
make translation mise //mobile:translation
``` ```
The mobile app asks you what backend to connect to. You can utilize the demo backend (https://demo.immich.app/) if you don't need to change server code or upload photos. Alternatively, you can run the server yourself per the instructions above. The mobile app asks you what backend to connect to. You can utilize the demo backend (https://demo.immich.app/) if you don't need to change server code or upload photos. Alternatively, you can run the server yourself per the instructions above.
+3 -4
View File
@@ -4,8 +4,8 @@
### Unit tests ### Unit tests
Unit are run by calling `pnpm run test` from the `server/` directory. Unit tests are run with `mise //server:test`.
You need to run `pnpm install` (in `server/`) before _once_. You need to run `mise //server:install` before _once_.
### End to end tests ### End to end tests
@@ -17,8 +17,7 @@ make e2e
Before you can run the tests, you need to run the following commands _once_: Before you can run the tests, you need to run the following commands _once_:
- `pnpm install` - `mise //e2e:ci-setup` (installs e2e, SDK, and CLI dependencies)
- `pnpm --filter @immich/sdk --filter @immich/cli build`
- `mise //:open-api` - `mise //:open-api`
Once the test environment is running, the e2e tests can be run via: Once the test environment is running, the e2e tests can be run via:
+1 -1
View File
@@ -3,7 +3,7 @@ run = "pnpm install --filter documentation --frozen-lockfile"
[tasks.start] [tasks.start]
env._.path = "./node_modules/.bin" env._.path = "./node_modules/.bin"
run = "docusaurus --port 3005" run = "docusaurus start --port 3005"
[tasks.build] [tasks.build]
env._.path = "./node_modules/.bin" env._.path = "./node_modules/.bin"
+9
View File
@@ -78,6 +78,15 @@ alias = "migration"
description = "Generate database migrations" description = "Generate database migrations"
run = "dart run drift_dev make-migrations" run = "dart run drift_dev make-migrations"
[tasks.install]
alias = "install"
description = "Install flutter dependencies"
run = "flutter pub get"
[tasks.start]
alias = "start"
description = "Start flutter app"
run = "flutter run"
# Internal tasks # Internal tasks
[tasks."i18n:loader"] [tasks."i18n:loader"]