-
Notifications
You must be signed in to change notification settings - Fork 76
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1,833 changed files
with
11,998 additions
and
202,661 deletions.
There are no files selected for viewing
File renamed without changes.
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,41 +1,60 @@ | ||
# Placemark | ||
|
||
This is the open source project Placemark, which was previously a SaaS app. | ||
Placemark is a _tool for creating, editing, and visualizing_ map data, | ||
in a variety of formats including GeoJSON, KML, Shapefiles, CSV, and many | ||
more. | ||
|
||
This is a monorepo and it contains multiple subprojects: | ||
|
||
## Subprojects | ||
|
||
- [Play](https://github.com/placemark/placemark/tree/main/packages/play) is the | ||
free-to-use interface accessible at [play.placemark.io](https://play.placemark.io/). | ||
It has no server backend or map storage, but it supports all other features. | ||
- [Placemark-app](https://github.com/placemark/placemark/tree/main/packages/placemark-app) | ||
is a simplified version of the Placemark SaaS app that supports server storage | ||
and realtime sync and collaboration. | ||
- The [SaaS branch](https://github.com/placemark/placemark/tree/saas) contains | ||
the unsimplified, full-fledged code for the Placemark product, which is a superset | ||
of Placemark-app and includes things like billing and account provisioning. | ||
|
||
--- | ||
|
||
### Placemark could be useful to you if | ||
|
||
- You need to edit, preview, create map data and want something similar to [geojson.io](https://geojson.io/), | ||
a project originally by the same author. | ||
- You want to build a SaaS on this code. It is very liberally licensed. If you want | ||
to create a startup on this, you can. | ||
- You want to extract patterns or modules from the codebase. It has implementations | ||
of many things in it. | ||
|
||
### Placemark is **not** | ||
|
||
- An alternative to Mapbox GL, Maplibre, Deck.gl, etc: it uses Mapbox GL. | ||
It is a tool for editing maps, it uses existing tech to render the maps. | ||
- A library you can use in your app. But you could possibly extract such a library | ||
from the codebase with a bit of time and effort. | ||
- A product with customer support. It _used to be_, but is now an open source product | ||
mostly developed and maintained by [Tom MacWright](https://macwright.com/) in | ||
his (my) free time. | ||
# Play | ||
|
||
At some point during Placemark development, I tried making a free-as-in-beer | ||
interface that supported a lot of the things that Placemark could, but for free. | ||
The main difference between this and the main application being that Placemark Play | ||
wouldn't have a real server component, so it incurred no real storage or server | ||
costs for me. | ||
|
||
People like free stuff and a lot of people don't want or need Placemark's server | ||
storage for maps, so Play got a bit of a following. This subproject is trying to | ||
run Play again. | ||
|
||
It's not easy, I'll tell you that! Placemark was, for many reasons, a monolithic | ||
application, and Play was part of that monolith. So there are challenges to slicing | ||
off just a bit of the application. | ||
|
||
This directory is basically the application, _minus_ Blitz and the database layer | ||
and all of that. It's a real experiment - expect breakage, and hopefully contribute | ||
pull requests. I'm happy to try and make Placemark useful to folks, and don't | ||
feel bad or bitter about the fate of the company, but realistically if the | ||
open source project is to succeed, it'll need contributors as well as users. | ||
|
||
## Getting started | ||
|
||
There are more sophisticated approaches using Docker or Render (see files), but | ||
the following simple approach works locally on macOS: | ||
|
||
1. Clone the repository, change to this directory, and install dependencies: | ||
|
||
``` | ||
git clone | ||
cd placemark/packages/play | ||
pnpm install | ||
``` | ||
|
||
2. Obtain a [Mapbox public access token](https://account.mapbox.com/) | ||
([docs](https://docs.mapbox.com/help/getting-started/access-tokens/)) and | ||
[Geocode Earth token](https://app.geocode.earth/keys) | ||
([docs](https://geocode.earth/docs/intro/authentication/)). | ||
|
||
4. Build the package with the tokens from the previous step: | ||
|
||
```sh | ||
NEXT_PUBLIC_MAPBOX_TOKEN="<your Mapbox public access token>" \ | ||
NEXT_PUBLIC_GEOCODE_EARTH_TOKEN="<your Geocode Earth token>" \ | ||
pnpm build | ||
|
||
``` | ||
|
||
4. Start the server: | ||
|
||
```sh | ||
npx serve@latest out | ||
``` | ||
|
||
5. Visit [http://localhost:3000](http://localhost:3000) | ||
|
||
If you're planning to run this often or publicly, take care to secure your | ||
tokens better by adding [URL restrictions to the Mapbox token](https://docs.mapbox.com/help/getting-started/access-tokens/#url-restrictions) and setting allowed Referrer Hostnames to the Geocode Earth one, | ||
and consider copying and revising the `.env.sample` file. |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Oops, something went wrong.