The Photo ID app is a research tool that can be used for photo-identification methodologies for longitudinal mark-recapture studies. It allows for the organisation and matching of photographs containing unique identification markings (such as cetacean dorsal fins). It includes tools for editing and visually filtering photographs to help with identification of marks.
📚 For more information and user guides, check out the docs.
The app is made up of the following parts:
src/contains the main app codesrc/assetscontains app assets (e.g. icons)src/backendcontains backend (main) controllerssrc/contextscontains React contextssrc/frontendcontains frontend (renderer) views and componentssrc/modelscontains classes used in the frontendsrc/routescontains frontend routessrc/index.tsxcontains the frontend (renderer) entry pointsrc/main.tscontains the backend (main) entry pointsrc/preload.tscontains preloaded app methods
- Clone the repository
- Ensure you are using Node version >= 24 (
nvm install 24/nvm use 24) - Install the dependencies by running
npm ci - If using VS Code install the ESLint, Stylelint, and Prettier extensions
Below are the NPM commands that can be used for development:
| Command | Description |
|---|---|
start |
Starts the app in development mode. |
package |
Builds and packages the app. |
make |
Builds app distributables. |
publish |
Publishes the app. |
changesets:add |
Adds changeset. |
changesets:version |
Bumps the app version. |
changesets:tag |
Tags the app and pushes to remote. |
test |
Runs test:linting, test:types, and test:unit sequentially. |
test:linting |
Runs ESLint and Prettier tests. |
test:types |
Runs TypeScript tests. |
test:unit |
Runs unit tests and generates a coverage report. |
test:unit:watch |
Same as test:unit but runs it in watch mode. |
docs |
Builds and serves documentation locally |
Using VSCode, a debugger can be attached to the main process in Electron by running "Debug main process" in the Run and Debug view.
The app uses Sentry to track errors and logs for debugging in published production builds. To enable this locally, add an .env file to the root of the repository using the variables defined in .env.example. This file also needs to be created when publishing to ensure the values are included in the production build.