mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	docs: update contributing pages (#2503)
This commit is contained in:
		
							
								
								
									
										32
									
								
								dev-setup.md
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								dev-setup.md
									
									
									
									
									
								
							| @@ -1,32 +0,0 @@ | |||||||
| # Development Setup |  | ||||||
|  |  | ||||||
| ## Lint / format extensions |  | ||||||
|  |  | ||||||
| Setting these in the IDE give a better developer experience auto-formatting code on save and providing instant feedback on lint issues. |  | ||||||
|  |  | ||||||
| ### VSCode |  | ||||||
| Install Prettier, ESLint and Svelte extensions. |  | ||||||
|  |  | ||||||
| in User `settings.json` (`cmd + shift + p` and search for Open User Settings JSON) add the following: |  | ||||||
|  |  | ||||||
| ```json |  | ||||||
| { |  | ||||||
|   "editor.formatOnSave": true, |  | ||||||
|   "[javascript][typescript][css]": { |  | ||||||
|     "editor.defaultFormatter": "esbenp.prettier-vscode", |  | ||||||
|     "editor.tabSize": 2, |  | ||||||
|     "editor.formatOnSave": true |  | ||||||
|   }, |  | ||||||
|   "[svelte]": { |  | ||||||
|     "editor.defaultFormatter": "svelte.svelte-vscode", |  | ||||||
|     "editor.tabSize": 2 |  | ||||||
|   }, |  | ||||||
|   "svelte.enable-ts-plugin": true, |  | ||||||
|   "eslint.validate": ["javascript", "svelte"] |  | ||||||
| } |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| ## Running tests / checks |  | ||||||
|  |  | ||||||
| In both server and web: |  | ||||||
| `npm run check:all` |  | ||||||
							
								
								
									
										14
									
								
								docs/docs/developer/database-migrations.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								docs/docs/developer/database-migrations.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | # Database Migrations | ||||||
|  |  | ||||||
|  | After making any changes in the `server/libs/database/src/entities`, a database migration need to run in order to register the changes in the database. Follow the steps below to create a new migration. | ||||||
|  |  | ||||||
|  | 1. Run the command | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | npm run typeorm:migrations:generate ./libs/infra/src/<migration-name> | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | 2. Check if the migration file makes sense. | ||||||
|  | 3. Move the migration file to folder `server/libs/database/src/migrations` in your code editor. | ||||||
|  |  | ||||||
|  | The server will automatically detect `*.ts` file changes and restart. Part of the server start-up process includes running any new migrations, so it will be applied immediately. | ||||||
| @@ -1,7 +1,17 @@ | |||||||
| --- |  | ||||||
| sidebar_position: 5 |  | ||||||
| --- |  | ||||||
|  |  | ||||||
| # Open API | # Open API | ||||||
|  |  | ||||||
| Immich uses the [Open API](https://swagger.io/specification/) standard to generate API documentation. To view the published docs see [here](/docs/api). | Immich uses the [Open API](https://swagger.io/specification/) standard to generate API documentation. To view the published docs see [here](/docs/api). | ||||||
|  |  | ||||||
|  | ## Generator | ||||||
|  |  | ||||||
|  | OpenAPI is used to generate the client (Typescript, Dart) SDK. `openapi-generator-cli` can be installed [here](https://openapi-generator.tech/docs/installation/). When you add a new or modify an existing endpoint, you must run the command below to update the client SDK. | ||||||
|  |  | ||||||
|  | ```bash | ||||||
|  | npm run api:generate # Run from the `server/` directory | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | You can find the generated client SDK in the `web/src/api` for Typescript SDK and `mobile/openapi` for Dart SDK. | ||||||
|  |  | ||||||
|  | :::tip | ||||||
|  | This can also be run via `make api` from the project root directory (not in the `server` folder) | ||||||
|  | ::: | ||||||
|   | |||||||
| @@ -1,16 +1,8 @@ | |||||||
| --- | # PR Checklist | ||||||
| sidebar_position: 3 |  | ||||||
| --- |  | ||||||
| 
 |  | ||||||
| # Contributing |  | ||||||
| 
 |  | ||||||
| Contributions are welcome! |  | ||||||
| 
 |  | ||||||
| ## PR Checklist |  | ||||||
| 
 | 
 | ||||||
| When contributing code through a pull request, please check the following: | When contributing code through a pull request, please check the following: | ||||||
| 
 | 
 | ||||||
| ### Web Checks | ## Web Checks | ||||||
| 
 | 
 | ||||||
| - [ ] `npm run lint` (linting via ESLint) | - [ ] `npm run lint` (linting via ESLint) | ||||||
| - [ ] `npm run format` (formatting via Prettier) | - [ ] `npm run format` (formatting via Prettier) | ||||||
| @@ -21,7 +13,7 @@ When contributing code through a pull request, please check the following: | |||||||
| Run all web checks with `npm run check:all` | Run all web checks with `npm run check:all` | ||||||
| ::: | ::: | ||||||
| 
 | 
 | ||||||
| ### Server Checks | ## Server Checks | ||||||
| 
 | 
 | ||||||
| - [ ] `npm run lint` (linting via ESLint) | - [ ] `npm run lint` (linting via ESLint) | ||||||
| - [ ] `npm run format` (formatting via Prettier) | - [ ] `npm run format` (formatting via Prettier) | ||||||
| @@ -32,12 +24,10 @@ Run all web checks with `npm run check:all` | |||||||
| Run all server checks with `npm run check:all` | Run all server checks with `npm run check:all` | ||||||
| ::: | ::: | ||||||
| 
 | 
 | ||||||
| ### Open API | ## Open API | ||||||
| 
 | 
 | ||||||
| The Open API client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file. | The Open API client libraries need to be regenerated whenever there are changes to the `immich-openapi-specs.json` file. See [Open API](/docs/developer/open-api.md) for more details. | ||||||
| 
 | 
 | ||||||
| - [ ] `npm run api:generate` | ## Database Migrations | ||||||
| 
 | 
 | ||||||
| :::tip | A database migration needs to be generated whenever there are changes to `server/libs/infra/src/entities`. See [Database Migration](/docs/developer/database-migrations.md) for more details. | ||||||
| This can also be run via `make api` from the project root directory (not in the `server` folder) |  | ||||||
| ::: |  | ||||||
| @@ -92,27 +92,3 @@ in User `settings.json` (`cmd + shift + p` and search for `Open User Settings JS | |||||||
|   } |   } | ||||||
| } | } | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ## OpenAPI generator |  | ||||||
|  |  | ||||||
| OpenAPI is used to generate the client (Typescript, Dart) SDK. `openapi-generator-cli` can be installed [here](https://openapi-generator.tech/docs/installation/). When you add a new or modify an existing endpoint, you must run the command below to update the client SDK. |  | ||||||
|  |  | ||||||
| ```bash |  | ||||||
| npm run api:generate # Run from the `server` directory |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| You can find the generated client SDK in the `web/src/api` for Typescript SDK and `mobile/openapi` for Dart SDK. |  | ||||||
|  |  | ||||||
| ## Database migrations |  | ||||||
|  |  | ||||||
| After making any changes in the `server/libs/database/src/entities`, a database migration need to run in order to register the changes in the database. Follow the steps below to create a new migration. |  | ||||||
|  |  | ||||||
| 1. Attached to the server container shell. |  | ||||||
| 2. Run |  | ||||||
|  |  | ||||||
| ```bash |  | ||||||
| npm run typeorm:migrations:generate ./libs/infra/src/<migration-name> |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| 3. Check if the migration file makes sense. |  | ||||||
| 4. Move the migration file to folder `server/libs/database/src/migrations` in your code editor. |  | ||||||
|   | |||||||
| @@ -22,6 +22,7 @@ | |||||||
|     { "source": "/docs/features/password-login", "destination": "/docs/administration/password-login" }, |     { "source": "/docs/features/password-login", "destination": "/docs/administration/password-login" }, | ||||||
|     { "source": "/docs/features/server-commands", "destination": "/docs/administration/server-commands" }, |     { "source": "/docs/features/server-commands", "destination": "/docs/administration/server-commands" }, | ||||||
|     { "source": "/docs/features/storage-template", "destination": "/docs/administration/storage-template" }, |     { "source": "/docs/features/storage-template", "destination": "/docs/administration/storage-template" }, | ||||||
|     { "source": "/docs/features/user-management", "destination": "/docs/administration/user-management" } |     { "source": "/docs/features/user-management", "destination": "/docs/administration/user-management" }, | ||||||
|  |     { "source": "/docs/developer/contributing", "destination": "/docs/developer/pr-checklist" } | ||||||
|   ] |   ] | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user