The web frontend for LibrePhotos — a self-hosted, open-source photo management service.
Built with React 18, TypeScript, and Vite.
| Category | Technology |
|---|---|
| UI Framework | React 18 with TypeScript |
| Build Tool | Vite |
| Component Library | Mantine 8 |
| Routing | TanStack Router |
| Data Fetching | TanStack Query |
| Maps | MapLibre GL via react-map-gl |
| Charts | Recharts |
| Internationalization | i18next |
| Form Validation | Zod |
| Testing | Vitest |
The easiest way to develop is via Docker Compose, which sets up the full stack (backend, frontend, database, proxy) with hot-reload enabled. See the development install guide and the backend CONTRIBUTING.md for step-by-step instructions.
If you want to work on the frontend independently:
# Install dependencies
yarn install
# Start the development server
yarn start
# Run tests
yarn test
# Run tests with coverage
yarn test:coverage
# Production build
yarn buildNote: The frontend expects a running LibrePhotos backend. See the backend repo for setup instructions.
The project uses ESLint and Prettier with pre-commit hooks via Husky and lint-staged.
# Check for linting errors
yarn lint:error
# Auto-fix linting issues
yarn lint:warning:fixCode style conventions:
- Line length: 120 characters
- Prettier for formatting (configured in
prettier.config.cjs) - Functional components with hooks
- TypeScript types preferred over interfaces
Contributions are welcome! Please see the CONTRIBUTING.md in the backend repository for:
- Development environment setup
- Docker architecture overview
- Code quality standards
- Pull request guidelines
For translations, help out on Weblate.
| Repository | Description |
|---|---|
| librephotos | Django backend (API, ML models, background jobs) |
| librephotos-docker | Docker Compose deployment configurations |
| librephotos.docs | Documentation website source |
This project is licensed under the MIT License.