Skip to content

Commit

Permalink
Play in root
Browse files Browse the repository at this point in the history
  • Loading branch information
tmcw committed May 27, 2024
1 parent 24fbf52 commit be96cae
Show file tree
Hide file tree
Showing 1,833 changed files with 11,998 additions and 202,661 deletions.
File renamed without changes.
File renamed without changes.
101 changes: 60 additions & 41 deletions README.md
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.
Loading

0 comments on commit be96cae

Please sign in to comment.