Allmaps
100,000s of maps are available through IIIF, across libraries, archives and museums worldwide. Allmaps makes it easier and more inspiring to curate, georeference and explore collections of digitized maps.
👉 For more information about the Allmaps project, see allmaps.org.
Contents
Allmaps is an open source project and consists of multiple apps, packages and workers, all written in TypeScript and contained by this monorepo.
Apps:
Packages:
- @allmaps/annotation
- @allmaps/basemap
- @allmaps/id
- @allmaps/iiif-parser
- @allmaps/leaflet
- @allmaps/maplibre
- @allmaps/openlayers
- @allmaps/render
- @allmaps/schemas
- @allmaps/stdlib
- @allmaps/tailwind
- @allmaps/transform
- @allmaps/triangulate
- @allmaps/types
- @allmaps/ui
Workers:
To see how these components are related, check out the dependency graph.
Contributing
We're welcoming contributions! You can read more about the many ways you can contribute here.
License
- Apps: all apps are licensed under the GPL-3.0 license, except the homepage and the CLI, which are licensed under the MIT license.
- Packages: all packages are licensed under the MIT license.
- Workers: all workers are licensed under the MIT license.
- Data: georeference data published through the Allmaps project is licensed under the CC0 license
- Base map: ODbL, © OpenStreetMap contributors. See Protomap's licensing and attribution guidelines for more details.
Installation
Make sure you have Node.js (version 20.8 or higher) and pnpm installed.
You can install pnpm with Corepack:
corepack enable
corepack use pnpm@8.10.0
Then, clone this repository locally:
git clone https://github.com/allmaps/allmaps.git
cd allmaps
Finally, initialize the repository:
pnpm run init
The init
script is a shorthand for the following commands:
pnpm install --recursive
: install all dependencies for all packages and apps.pnpm run build:packages
: build all packages to ensure all JavaScript exports are created from TypeScript files.pnpm run check
: initialize SvelteKit apps.pnpm run build:apps
: build SvelteKit apps.
If things stop working later on, you can always run the init
script again.
Running a single app locally
To run the dev
script for a single app, you need to run the watch
scripts of all packages in one terminal window:
pnpm run watch
And then run the dev
script of the app in another:
pnpm --filter "@allmaps/viewer" run dev
You can also run the dev
script from the app's directory instead:
cd apps/viewer
pnpm run dev
Running all packages and apps locally
To run the watch
and dev
scripts for all packages and apps, run the following in one terminal window:
pnpm run watch
And this in another:
pnpm run dev
Troubleshooting
If things don't work, it might help to reinitialize the SvelteKit apps:
pnpm run check
Or, reinstall dependencies and create the monorepo's symlinks:
pnpm install -r
As a last resort, you can try to remove some (or all) node_modules
directories using npkill:
pnpm dlx npkill
Commit changes
This repository uses Husky to run type checking, code linting and tests before each commit.
To skip these tests, you can use git's --no-verify
option:
git commit --no-verify
Check formatting and types
Check TypeScript types for all packages:
pnpm run types
Run Prettier and ESLint for all packages:
pnpm run lint
Run tests
Run tests for all packages and apps:
pnpm run test
Run tests for a single package:
pnpm --filter "@allmaps/transform" test
You can run the tests from the package's directory instead:
cd packages/transform
pnpm test
Versioning & publishing
Create prerelease versions:
pnpm run version-prerelease
Publish beta versions to npm:
pnpm run publish-beta