Important
This project is under initial development and is a work-in-progress.
A roadmap of the project is available here.
Source code for the Photo ID app. The app is a research tool used in photo-identification methodologies for longitudinal mark-recapture studies. It allows for the organisation, categorisation, and matching of photographs containing unique identification markings (e.g. cetacean dorsal fins). It also includes tools for editing and visually filtering photographs to improve marking identification confidence.
The app is built in Electron, TypeScript, Jest, React, and Primer.
The app is made up of the following parts:
src/
contains the main app codesrc/assets
contains app assets (e.g. icons)src/backend
contains backend (main) controllerssrc/frontend
contains frontend (renderer) viewssrc/frontend/App.tsx
contains the main React app wrappersrc/frontend/components
contains reusable UI componentssrc/frontend/modules
contains UI sections and pages
src/helpers
contains common helpers, utility functions, constants, and typessrc/models
contains classessrc/index.tsx
contains the frontend (renderer) entry pointsrc/main.ts
contains the backend (main) entry pointsrc/preload.ts
contains preloaded app methods
- Clone the repository
- Ensure you are using Node version >= 22 (
nvm install 22
/nvm use 22
) - 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. |
test |
Runs test:linting , test:types , and test:jest sequentially. |
test:linting |
Runs ESLint and Prettier tests. |
test:types |
Runs TypeScript tests. |
test:jest |
Runs unit and integration tests and generates a coverage report. |
test:jest:watch |
Same as test:jest but runs it in watch mode. |