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.
Allmaps is an open source project and consists of multiple apps and packages, all written in TypeScript and contained by this monorepo.
Apps:
- Allmaps Editor
- Allmaps Viewer
- Allmaps Tile Server
- Allmaps Latest
- Allmaps CLI
- Allmaps Explore
- Allmaps IIIF Viewer
- Allmaps Here
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
To see how these apps and packages are related, check out the dependency graph.
We're welcoming contributions! You can read more about the many ways you can contribute here.
Make sure you have Node.js (version 20.8 or higher) and pnpm installed.
You can install pnpm with Corepack:
corepack enable
corepack use [email protected]Then, clone this repository locally:
git clone https://github.com/allmaps/allmaps.git
cd allmapsFinally, initialize the repository:
pnpm run initThe 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.
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 watchAnd then run the dev script of the app in another:
pnpm --filter "@allmaps/viewer" run devYou can also run the dev script from the app's directory instead:
cd apps/viewer
pnpm run devTo run the watch and dev scripts for all packages and apps, run the following in one terminal window:
pnpm run watchAnd this in another:
pnpm run devIf things don't work, it might help to reinitialize the SvelteKit apps:
pnpm run checkOr, reinstall dependencies and create the monorepo's symlinks:
pnpm install -rAs a last resort, you can try to remove some (or all) node_modules directories using npkill:
pnpm dlx npkillThis 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-verifyCheck TypeScript types for all packages:
pnpm run typesRun Prettier and ESLint for all packages:
pnpm run lintRun tests for all packages and apps:
pnpm run testRun tests for a single package:
pnpm --filter "@allmaps/transform" testYou can run the tests from the package's directory instead:
cd packages/transform
pnpm testCreate prerelease versions:
lerna version prereleasePublish beta versions to npm:
lerna publish from-git --dist-tag betaPromoting unchanged pre-release versions:
lerna version --conventional-commits --conventional-graduate