Compare commits
24 Commits
60b2df5e90
...
new-redesi
| Author | SHA1 | Date | |
|---|---|---|---|
| d8a5d93342 | |||
| 2a72d1cecb | |||
| 537be9ed04 | |||
| f23f669f76 | |||
| e32bbee062 | |||
| 9228769274 | |||
| 0b850b97e1 | |||
| 72f517fdbb | |||
| e2392081bf | |||
| 52be65f6ba | |||
| 3af97b1d4d | |||
| 0297cca236 | |||
| 03e0a54399 | |||
| 18d7a3e7b1 | |||
| a33c4ca92b | |||
| b2ad4697f0 | |||
| 084a613467 | |||
| 60b0023a9d | |||
| 44e4ae5fa9 | |||
| 63efd8c449 | |||
| bd390adcc1 | |||
| 439b1fe95e | |||
| 898e2b6136 | |||
| a595129d6d |
@@ -1,4 +1,11 @@
|
||||
pipeline:
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
partial: false
|
||||
depth: 15
|
||||
|
||||
steps:
|
||||
build:
|
||||
image: docker
|
||||
commands:
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
FROM node:20-slim AS builder
|
||||
FROM node:20 AS builder
|
||||
|
||||
COPY . /src
|
||||
WORKDIR /src
|
||||
RUN npm install && node ./index.js
|
||||
|
||||
FROM caddy:2.6.4
|
||||
FROM caddy:2.7.5
|
||||
|
||||
COPY img /usr/share/caddy/img
|
||||
COPY css /usr/share/caddy/css
|
||||
|
||||
105
css/site.css
105
css/site.css
@@ -1,38 +1,33 @@
|
||||
/* Page Specific CSS */
|
||||
|
||||
body {
|
||||
font-family: "Lato", sans-serif;
|
||||
background: #fff;
|
||||
color: #333;
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
margin: 0px;
|
||||
padding: 20px 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
h1 {
|
||||
font-size: 80px;
|
||||
font-size: 40px;
|
||||
font-family: "Acme", sans-serif;
|
||||
font-weight: normal;
|
||||
margin: 0px;
|
||||
}
|
||||
h2 {
|
||||
font-size: 40px;
|
||||
font-size: 30px;
|
||||
font-family: "Acme", sans-serif;
|
||||
font-weight: normal;
|
||||
margin: 0px 0px;
|
||||
}
|
||||
h3 {
|
||||
font-family: "Acme", sans-serif;
|
||||
font-size: 30px;
|
||||
font-size: 20px;
|
||||
margin: 10px 0px;
|
||||
}
|
||||
h4 {
|
||||
font-family: "Lato", sans-serif;
|
||||
font-size: 24px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
p a,
|
||||
a {
|
||||
color: #333;
|
||||
@@ -43,10 +38,6 @@ a {
|
||||
a:hover {
|
||||
color: #47ccfc;
|
||||
}
|
||||
small {
|
||||
padding: 10px 0px;
|
||||
font-size: 10px;
|
||||
}
|
||||
p {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
@@ -56,22 +47,14 @@ li {
|
||||
line-height: 19px;
|
||||
font-size: 15px;
|
||||
}
|
||||
ol {
|
||||
line-height: 24px;
|
||||
}
|
||||
.clearfix {
|
||||
clear: both;
|
||||
}
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#map {
|
||||
height: 500px;
|
||||
width: 480px;
|
||||
min-width: 300px;
|
||||
height: 100vh;
|
||||
width: 100%;
|
||||
background: #ffffff;
|
||||
float: left;
|
||||
}
|
||||
#map a {
|
||||
border: none;
|
||||
@@ -83,13 +66,19 @@ ol {
|
||||
}
|
||||
|
||||
#wrapper {
|
||||
margin: 0px auto;
|
||||
padding: 40px;
|
||||
max-width: 1000px;
|
||||
max-width: 500px;
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
bottom: 10px;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
.container {
|
||||
margin: 24px 0px;
|
||||
.bubble {
|
||||
background-color: white;
|
||||
margin: 10px 0px;
|
||||
padding: 10px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
ul.nav {
|
||||
@@ -105,7 +94,7 @@ ul.nav li {
|
||||
}
|
||||
ul.nav li:not(:first-child) {
|
||||
border-left: 1px #333 solid;
|
||||
padding-left: 10px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
ul.nav li h2 {
|
||||
font-family: "Lato";
|
||||
@@ -126,15 +115,9 @@ ul.nav li a:hover {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
#selected {
|
||||
max-width: 500px;
|
||||
width: 100%;
|
||||
float: left;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
#selected .description {
|
||||
padding-top: 7px;
|
||||
font-size: 16px;
|
||||
padding: 4px 0px;
|
||||
line-height: 22px;
|
||||
text-align: justify;
|
||||
}
|
||||
@@ -143,61 +126,55 @@ ul.nav li a:hover {
|
||||
margin: 15px 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#info {
|
||||
max-width: 500px;
|
||||
width: 100%;
|
||||
float: left;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
.storeDetails {
|
||||
font-size: 15px;
|
||||
display: inline;
|
||||
padding-right: 6px;
|
||||
}
|
||||
#info p {
|
||||
font-size: 15px;
|
||||
padding: 4px;
|
||||
line-height: 22px;
|
||||
text-align: justify;
|
||||
}
|
||||
#info details {
|
||||
font-size: 15px;
|
||||
line-height: 22px;
|
||||
text-align: justify;
|
||||
}
|
||||
#info details summary {
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#Stores {
|
||||
margin: 0 auto;
|
||||
width: 80%;
|
||||
}
|
||||
#Stores tr {
|
||||
cursor: pointer;
|
||||
}
|
||||
#Stores tr td {
|
||||
padding: 4px 10px;
|
||||
padding: 2px 0px;
|
||||
}
|
||||
#Stores tr:not(:last-child) td {
|
||||
border-bottom: 1px #ddd solid;
|
||||
}
|
||||
|
||||
@media only screen and (-webkit-min-device-pixel-ratio: 2) and (min-width: 320px) and (max-width: 1120px) {
|
||||
h1 {
|
||||
font-size: 60px;
|
||||
}
|
||||
body {
|
||||
margin: 0px;
|
||||
padding: 5px;
|
||||
}
|
||||
#wrapper {
|
||||
max-width: 480px;
|
||||
padding-top: 20px;
|
||||
position: static;
|
||||
padding: 10px;
|
||||
}
|
||||
.bubble {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border-radius: 0px;
|
||||
}
|
||||
#map {
|
||||
height: 400px;
|
||||
}
|
||||
#Stores,
|
||||
#map {
|
||||
min-width: 224px;
|
||||
width: 100%;
|
||||
}
|
||||
#map,
|
||||
#info,
|
||||
#selected {
|
||||
width: 100%;
|
||||
margin: 10px 0px;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
410
index.html
410
index.html
@@ -2,7 +2,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<script
|
||||
defer
|
||||
defer=""
|
||||
data-domain="nycbookstores.org"
|
||||
src="https://stats.yetaga.in/js/script.hash.outbound-links.js"
|
||||
></script>
|
||||
@@ -31,7 +31,7 @@
|
||||
media="screen"
|
||||
rel="stylesheet"
|
||||
type="text/css"
|
||||
href="/css/site.css?1678239113605"
|
||||
href="/css/site.css?1698627633277"
|
||||
/>
|
||||
<meta
|
||||
property="title"
|
||||
@@ -66,15 +66,11 @@
|
||||
/>
|
||||
</head>
|
||||
<body>
|
||||
<div id="map"></div>
|
||||
<div id="wrapper">
|
||||
<h1>NYC Bookstores</h1>
|
||||
<div>
|
||||
<header class="bubble">
|
||||
<h1>NYC Bookstores</h1>
|
||||
<ul class="nav">
|
||||
<li>
|
||||
<h2 id="subhed">
|
||||
The Many Independent Bookstores of New York City
|
||||
</h2>
|
||||
</li>
|
||||
<li>
|
||||
<a id="viewInfo" href="#info" onclick="event.preventDefault()"
|
||||
>intro</a
|
||||
@@ -93,73 +89,87 @@
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="container">
|
||||
<div id="map"></div>
|
||||
<div id="info">
|
||||
<p>
|
||||
New York City loves its independent bookstores. It
|
||||
<a
|
||||
href="https://www.nytimes.com/2006/10/15/nyregion/thecity/15book.html"
|
||||
target="_blank"
|
||||
>eulogizes those that have faded</a
|
||||
>
|
||||
and celebrates when new ventures are launched. And while the
|
||||
historic
|
||||
<a
|
||||
href="https://untappedcities.com/2015/08/26/4th-avenue-the-history-of-nycs-book-row/"
|
||||
target="_blank"
|
||||
>Book Row may have passed away in the 80s</a
|
||||
>, there are still many indie bookstores dotting the map, across all
|
||||
five boroughs. Here, I have attempted to collect all of the
|
||||
currently-open general-interest independent booksellers in NYC. Any
|
||||
store with regular-ish hours (excluding religious booksellers and
|
||||
appointment-only rare book sellers) is included.
|
||||
</p>
|
||||
<p>
|
||||
While Manhattan and Brooklyn still lead the pack, Queens has a
|
||||
respectable number of stores, and all five boroughs are represented,
|
||||
with the Bronx and Staten Island both hosting lone independent
|
||||
stores. Lower Manhattan has the highest density of booksellers.
|
||||
</p>
|
||||
<p>
|
||||
The listings here are kept up-to-date to the best of my ability;
|
||||
however, I make no promises about either the accuracy or reliability
|
||||
of the information. If you spot an error, or I've missed a shop,
|
||||
please let me know by
|
||||
<a href="mailto:delta.mu.alpha@gmail.com" target="_blank">email</a>,
|
||||
<a href="https://icosahedron.website/@lazyreader" target="_blank"
|
||||
>mastodon</a
|
||||
>, or
|
||||
<a href="https://www.twitter.com/alazyreader" target="_blank"
|
||||
>twitter</a
|
||||
>. Originally based on the "<a
|
||||
href="https://github.com/jlord/hack-spots"
|
||||
target="_blank"
|
||||
>Hack Spots</a
|
||||
>" website by
|
||||
<a href="https://www.twitter.com/jllord" target="_blank">@jllord</a>
|
||||
(although I don't believe any of the actual underlying code still
|
||||
survives at this point).
|
||||
</p>
|
||||
<p>
|
||||
There are currently <span id="storeCount">111</span> stores indexed
|
||||
on this page. Last updated
|
||||
<span id="updatedOn">March 7, 2023</span>.
|
||||
</p>
|
||||
</div>
|
||||
<div id="selected"></div>
|
||||
</header>
|
||||
<div id="info" class="bubble">
|
||||
<p>
|
||||
New York City loves its independent bookstores. It
|
||||
<a
|
||||
href="https://www.nytimes.com/2006/10/15/nyregion/thecity/15book.html"
|
||||
target="_blank"
|
||||
>eulogizes those that have faded</a
|
||||
>
|
||||
and celebrates when new ventures are launched. And while the historic
|
||||
<a
|
||||
href="https://untappedcities.com/2015/08/26/4th-avenue-the-history-of-nycs-book-row/"
|
||||
target="_blank"
|
||||
>Book Row may have passed away in the 80s</a
|
||||
>, there are still many indie bookstores dotting the map, across all
|
||||
five boroughs. Here, I have attempted to collect all of the
|
||||
currently-open general-interest independent booksellers in NYC. Any
|
||||
store with regular-ish hours (excluding religious booksellers and
|
||||
appointment-only rare book sellers) is included.
|
||||
</p>
|
||||
<p>
|
||||
While Manhattan and Brooklyn still lead the pack, Queens has a
|
||||
respectable number of stores, and all five boroughs are represented,
|
||||
with the Bronx and Staten Island both hosting lone independent stores.
|
||||
Lower Manhattan has the highest density of booksellers.
|
||||
</p>
|
||||
<p>
|
||||
The listings here are kept up-to-date to the best of my ability;
|
||||
however, I make no promises about either the accuracy or reliability
|
||||
of the information. If you spot an error, or I've missed a shop,
|
||||
please let me know by
|
||||
<a href="mailto:delta.mu.alpha@gmail.com" target="_blank">email</a>,
|
||||
<a href="https://icosahedron.website/@lazyreader" target="_blank"
|
||||
>mastodon</a
|
||||
>, or
|
||||
<a href="https://www.twitter.com/alazyreader" target="_blank"
|
||||
>twitter</a
|
||||
>. Originally based on the "<a
|
||||
href="https://github.com/jlord/hack-spots"
|
||||
target="_blank"
|
||||
>Hack Spots</a
|
||||
>" website by
|
||||
<a href="https://www.twitter.com/jllord" target="_blank">@jllord</a>
|
||||
(although I don't believe any of the actual underlying code still
|
||||
survives at this point).
|
||||
</p>
|
||||
<p>
|
||||
There are currently <span id="storeCount">114</span> stores indexed on
|
||||
this page. Last updated <span id="updatedOn">October 29, 2023</span>.
|
||||
</p>
|
||||
<details>
|
||||
<summary>Recent Changes</summary>
|
||||
<ul id="changesList">
|
||||
<li>
|
||||
October 26, 2023 - Return Three Lives to its original corner
|
||||
location.
|
||||
</li>
|
||||
<li>
|
||||
October 26, 2023 - Idlewild Books appears to have transitioned
|
||||
entirely to language classes as opposed to bookselling
|
||||
</li>
|
||||
<li>
|
||||
October 26, 2023 - remove Boulevard Books; correct Alabaster
|
||||
Bookshop Instagram link
|
||||
</li>
|
||||
<li>
|
||||
October 26, 2023 - Add Topos Too, currently in a "soft opening"
|
||||
</li>
|
||||
</ul>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
<div id="selected" class="bubble hidden"></div>
|
||||
|
||||
<div class="container">
|
||||
<div class="bubble">
|
||||
<div id="Stores">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr id="0" class="spotRow">
|
||||
<td class="name">1804 Books</td>
|
||||
<td>320 W 37th Street, New York</td>
|
||||
<td>320 W 37th St, New York</td>
|
||||
</tr>
|
||||
<tr id="1" class="spotRow">
|
||||
<td class="name">192 Books</td>
|
||||
@@ -167,7 +177,7 @@
|
||||
</tr>
|
||||
<tr id="2" class="spotRow">
|
||||
<td class="name">Adanne</td>
|
||||
<td>234 Water Street, Brooklyn</td>
|
||||
<td>115 Ralph Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="3" class="spotRow">
|
||||
<td class="name">Aeon Bookstore</td>
|
||||
@@ -183,7 +193,7 @@
|
||||
</tr>
|
||||
<tr id="6" class="spotRow">
|
||||
<td class="name">Archestratus</td>
|
||||
<td>160 Huron St, Brooklyn</td>
|
||||
<td>164 Huron St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="7" class="spotRow">
|
||||
<td class="name">Argosy Books</td>
|
||||
@@ -191,24 +201,24 @@
|
||||
</tr>
|
||||
<tr id="8" class="spotRow">
|
||||
<td class="name">Astoria Bookshop</td>
|
||||
<td>31-29 31st St, Astoria</td>
|
||||
<td>36-19 30th St, Astoria</td>
|
||||
</tr>
|
||||
<tr id="9" class="spotRow">
|
||||
<td class="name">Avoid The Day Bookstore & Cafe</td>
|
||||
<td>99-04 A Rockaway Beach Blvd, Rockaway Park</td>
|
||||
</tr>
|
||||
<tr id="10" class="spotRow">
|
||||
<td class="name">Berl's Brooklyn Poetry Shop</td>
|
||||
<td>126A Front St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="11" class="spotRow">
|
||||
<tr id="10" class="spotRow">
|
||||
<td class="name">Better Read Than Dead</td>
|
||||
<td>867 Broadway, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="12" class="spotRow">
|
||||
<tr id="11" class="spotRow">
|
||||
<td class="name">Better Read Than Dead & Burly Coffee</td>
|
||||
<td>90 Kosciuszko St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="12" class="spotRow">
|
||||
<td class="name">Black Spring Books</td>
|
||||
<td>672 Driggs Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="13" class="spotRow">
|
||||
<td class="name">Bluestockings Cooperative</td>
|
||||
<td>116 Suffolk Street, New York</td>
|
||||
@@ -266,261 +276,259 @@
|
||||
<td>42 West 17th St, New York</td>
|
||||
</tr>
|
||||
<tr id="27" class="spotRow">
|
||||
<td class="name">Boulevard Books</td>
|
||||
<td>7518 13th Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="28" class="spotRow">
|
||||
<td class="name">Bravo's Book Nook</td>
|
||||
<td>115 MacDougal St, New York</td>
|
||||
</tr>
|
||||
<tr id="29" class="spotRow">
|
||||
<tr id="28" class="spotRow">
|
||||
<td class="name">Burnt Books</td>
|
||||
<td>1014 Manhattan Ave, Brooklyn</td>
|
||||
<td>157 Huron St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="30" class="spotRow">
|
||||
<tr id="29" class="spotRow">
|
||||
<td class="name">Cafe con Libros</td>
|
||||
<td>724 Prospect Place, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="31" class="spotRow">
|
||||
<tr id="30" class="spotRow">
|
||||
<td class="name">Catland</td>
|
||||
<td>987 Flushing Ave, Brooklyn</td>
|
||||
<td>985 Flushing Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="32" class="spotRow">
|
||||
<tr id="31" class="spotRow">
|
||||
<td class="name">Chartwell Booksellers</td>
|
||||
<td>55 E 52nd St, New York</td>
|
||||
</tr>
|
||||
<tr id="33" class="spotRow">
|
||||
<tr id="32" class="spotRow">
|
||||
<td class="name">Codex Books</td>
|
||||
<td>1 Bleecker St, New York</td>
|
||||
</tr>
|
||||
<tr id="34" class="spotRow">
|
||||
<tr id="33" class="spotRow">
|
||||
<td class="name">Community Bookstore</td>
|
||||
<td>143 7th Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="35" class="spotRow">
|
||||
<tr id="34" class="spotRow">
|
||||
<td class="name">Cups and Books</td>
|
||||
<td>2024 Bedford Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="36" class="spotRow">
|
||||
<tr id="35" class="spotRow">
|
||||
<td class="name">Dashwood Books</td>
|
||||
<td>33 Bond St, New York</td>
|
||||
</tr>
|
||||
<tr id="37" class="spotRow">
|
||||
<tr id="36" class="spotRow">
|
||||
<td class="name">Dear Friend Books</td>
|
||||
<td>343A Tompkins Avenue, Brooklyn</td>
|
||||
<td>343A Tompkins Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="38" class="spotRow">
|
||||
<tr id="37" class="spotRow">
|
||||
<td class="name">Desert Island Comics</td>
|
||||
<td>540 Metropolitan Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="39" class="spotRow">
|
||||
<tr id="38" class="spotRow">
|
||||
<td class="name">East Village Books</td>
|
||||
<td>99 St. Mark's Place, New York</td>
|
||||
</tr>
|
||||
<tr id="40" class="spotRow">
|
||||
<tr id="39" class="spotRow">
|
||||
<td class="name">ETG Book Cafe</td>
|
||||
<td>208 Bay St, Staten Island</td>
|
||||
</tr>
|
||||
<tr id="41" class="spotRow">
|
||||
<tr id="40" class="spotRow">
|
||||
<td class="name">Freebird Books</td>
|
||||
<td>123 Columbia St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="42" class="spotRow">
|
||||
<tr id="41" class="spotRow">
|
||||
<td class="name">Greenlight Bookstore</td>
|
||||
<td>686 Fulton St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="43" class="spotRow">
|
||||
<td class="name">
|
||||
Greenlight Bookstore (Prospect Lefferts Gardens)
|
||||
</td>
|
||||
<td>632 Flatbush Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="44" class="spotRow">
|
||||
<tr id="42" class="spotRow">
|
||||
<td class="name">Here's A Book Store</td>
|
||||
<td>1964 Coney Island Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="45" class="spotRow">
|
||||
<tr id="43" class="spotRow">
|
||||
<td class="name">Hey Kids! Comics</td>
|
||||
<td>157 Huron St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="46" class="spotRow">
|
||||
<tr id="44" class="spotRow">
|
||||
<td class="name">Housing Works Bookstore Café</td>
|
||||
<td>126 Crosby St, New York</td>
|
||||
</tr>
|
||||
<tr id="47" class="spotRow">
|
||||
<tr id="45" class="spotRow">
|
||||
<td class="name">Human Relations Books</td>
|
||||
<td>1067 Flushing Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="48" class="spotRow">
|
||||
<td class="name">Idlewild Books</td>
|
||||
<td>170 7th Avenue S, New York</td>
|
||||
</tr>
|
||||
<tr id="49" class="spotRow">
|
||||
<tr id="46" class="spotRow">
|
||||
<td class="name">James Cummins Bookseller</td>
|
||||
<td>699 Madison Ave, 7th Floor, New York</td>
|
||||
</tr>
|
||||
<tr id="50" class="spotRow">
|
||||
<tr id="47" class="spotRow">
|
||||
<td class="name">Joanne Hendricks Cookbooks</td>
|
||||
<td>488 Greenwich St, New York</td>
|
||||
</tr>
|
||||
<tr id="51" class="spotRow">
|
||||
<tr id="48" class="spotRow">
|
||||
<td class="name">Karma Bookstore</td>
|
||||
<td>136 East Third St, New York</td>
|
||||
</tr>
|
||||
<tr id="52" class="spotRow">
|
||||
<tr id="49" class="spotRow">
|
||||
<td class="name">Kew & Willow Books</td>
|
||||
<td>81-63 Lefferts Boulevard, New York</td>
|
||||
</tr>
|
||||
<tr id="53" class="spotRow">
|
||||
<tr id="50" class="spotRow">
|
||||
<td class="name">Kinokunya</td>
|
||||
<td>1073 Avenue of the Americas, New York</td>
|
||||
</tr>
|
||||
<tr id="54" class="spotRow">
|
||||
<tr id="51" class="spotRow">
|
||||
<td class="name">Kitchen Arts & Letters</td>
|
||||
<td>1435 Lexington Ave, New York</td>
|
||||
</tr>
|
||||
<tr id="55" class="spotRow">
|
||||
<tr id="52" class="spotRow">
|
||||
<td class="name">Leaves Bookstore</td>
|
||||
<td>140 Nassau Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="56" class="spotRow">
|
||||
<tr id="53" class="spotRow">
|
||||
<td class="name">Left Bank Books</td>
|
||||
<td>41 Perry Street, New York</td>
|
||||
<td>41 Perry St, New York</td>
|
||||
</tr>
|
||||
<tr id="57" class="spotRow">
|
||||
<tr id="54" class="spotRow">
|
||||
<td class="name">Lofty Pigeon Books</td>
|
||||
<td>743 Church Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="55" class="spotRow">
|
||||
<td class="name">Logos Bookstore</td>
|
||||
<td>1575 York Ave, New York</td>
|
||||
</tr>
|
||||
<tr id="58" class="spotRow">
|
||||
<tr id="56" class="spotRow">
|
||||
<td class="name">Mast Books</td>
|
||||
<td>72 Avenue A, New York</td>
|
||||
</tr>
|
||||
<tr id="59" class="spotRow">
|
||||
<tr id="57" class="spotRow">
|
||||
<td class="name">McNally Jackson Books</td>
|
||||
<td>52 Prince St, New York</td>
|
||||
<td>134 Prince St, New York</td>
|
||||
</tr>
|
||||
<tr id="60" class="spotRow">
|
||||
<tr id="58" class="spotRow">
|
||||
<td class="name">McNally Jackson Books City Point</td>
|
||||
<td>445 Albee Square W, Unit G112, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="61" class="spotRow">
|
||||
<tr id="59" class="spotRow">
|
||||
<td class="name">McNally Jackson Books Seaport</td>
|
||||
<td>4 Fulton St, New York</td>
|
||||
</tr>
|
||||
<tr id="62" class="spotRow">
|
||||
<tr id="60" class="spotRow">
|
||||
<td class="name">McNally Jackson Books Williamsburg</td>
|
||||
<td>76 North 4th St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="63" class="spotRow">
|
||||
<tr id="61" class="spotRow">
|
||||
<td class="name">McNally Jackson Rockefeller Center</td>
|
||||
<td>1 Rockefeller Plaza, New York</td>
|
||||
</tr>
|
||||
<tr id="64" class="spotRow">
|
||||
<tr id="62" class="spotRow">
|
||||
<td class="name">Melville House Publishers</td>
|
||||
<td>46 John St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="65" class="spotRow">
|
||||
<tr id="63" class="spotRow">
|
||||
<td class="name">Mercer Street Books & Records</td>
|
||||
<td>206 Mercer St, New York</td>
|
||||
</tr>
|
||||
<tr id="66" class="spotRow">
|
||||
<tr id="64" class="spotRow">
|
||||
<td class="name">Mil Mundos Books</td>
|
||||
<td>323 Linden St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="67" class="spotRow">
|
||||
<tr id="65" class="spotRow">
|
||||
<td class="name">Molasses Books</td>
|
||||
<td>770 Hart St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="68" class="spotRow">
|
||||
<tr id="66" class="spotRow">
|
||||
<td class="name">Namaste Bookshop</td>
|
||||
<td>2 W 14th St, New York</td>
|
||||
</tr>
|
||||
<tr id="69" class="spotRow">
|
||||
<tr id="67" class="spotRow">
|
||||
<td class="name">P&T Knitwear</td>
|
||||
<td>180 Orchard Street, New York</td>
|
||||
<td>180 Orchard St, New York</td>
|
||||
</tr>
|
||||
<tr id="70" class="spotRow">
|
||||
<tr id="68" class="spotRow">
|
||||
<td class="name">Passageway Books</td>
|
||||
<td>150 9th Ave, New York</td>
|
||||
</tr>
|
||||
<tr id="69" class="spotRow">
|
||||
<td class="name">Pillow-Cat Books</td>
|
||||
<td>328 East 9th St, New York</td>
|
||||
</tr>
|
||||
<tr id="71" class="spotRow">
|
||||
<tr id="70" class="spotRow">
|
||||
<td class="name">Posman Books Chelsea Market</td>
|
||||
<td>75 9th Avenue, New York</td>
|
||||
</tr>
|
||||
<tr id="72" class="spotRow">
|
||||
<tr id="71" class="spotRow">
|
||||
<td class="name">POWERHOUSE @ IC</td>
|
||||
<td>220 36th Street, Building #2, Brooklyn</td>
|
||||
<td>220 36th St, Building #2, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="73" class="spotRow">
|
||||
<tr id="72" class="spotRow">
|
||||
<td class="name">POWERHOUSE Arena</td>
|
||||
<td>28 Adams St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="74" class="spotRow">
|
||||
<tr id="73" class="spotRow">
|
||||
<td class="name">POWERHOUSE on 8th</td>
|
||||
<td>1111 8th Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="75" class="spotRow">
|
||||
<tr id="74" class="spotRow">
|
||||
<td class="name">Printed Matter</td>
|
||||
<td>231 11th Ave, New York</td>
|
||||
</tr>
|
||||
<tr id="76" class="spotRow">
|
||||
<tr id="75" class="spotRow">
|
||||
<td class="name">Printed Matter St. Marks</td>
|
||||
<td>38 St. Marks Pl, New York</td>
|
||||
</tr>
|
||||
<tr id="77" class="spotRow">
|
||||
<tr id="76" class="spotRow">
|
||||
<td class="name">Quest Bookshop</td>
|
||||
<td>240 E 53rd St, New York</td>
|
||||
</tr>
|
||||
<tr id="78" class="spotRow">
|
||||
<tr id="77" class="spotRow">
|
||||
<td class="name">Quimby's Bookstore</td>
|
||||
<td>536 Metropolitan Avenue, Brooklyn</td>
|
||||
<td>536 Metropolitan Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="79" class="spotRow">
|
||||
<tr id="78" class="spotRow">
|
||||
<td class="name">Recirculation</td>
|
||||
<td>876 Riverside Dr, New York</td>
|
||||
</tr>
|
||||
<tr id="80" class="spotRow">
|
||||
<tr id="79" class="spotRow">
|
||||
<td class="name">Respect For Life Books-N-Things</td>
|
||||
<td>537 Nostrand Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="81" class="spotRow">
|
||||
<tr id="80" class="spotRow">
|
||||
<td class="name">Revolution Books</td>
|
||||
<td>437 Malcolm X Blvd, New York</td>
|
||||
</tr>
|
||||
<tr id="82" class="spotRow">
|
||||
<tr id="81" class="spotRow">
|
||||
<td class="name">Rizzoli Bookstore</td>
|
||||
<td>1133 Broadway, New York</td>
|
||||
</tr>
|
||||
<tr id="83" class="spotRow">
|
||||
<tr id="82" class="spotRow">
|
||||
<td class="name">Shakespeare & Company</td>
|
||||
<td>939 Lexington Ave, New York</td>
|
||||
</tr>
|
||||
<tr id="84" class="spotRow">
|
||||
<tr id="83" class="spotRow">
|
||||
<td class="name">
|
||||
Shakespeare & Company (Upper West Side)
|
||||
</td>
|
||||
<td>2020 Broadway, New York</td>
|
||||
</tr>
|
||||
<tr id="85" class="spotRow">
|
||||
<tr id="84" class="spotRow">
|
||||
<td class="name">Sister's Uptown Bookstore</td>
|
||||
<td>1942 Amsterdam Ave, New York</td>
|
||||
</tr>
|
||||
<tr id="86" class="spotRow">
|
||||
<tr id="85" class="spotRow">
|
||||
<td class="name">Spoonbill & Sugartown, Booksellers</td>
|
||||
<td>218 Bedford Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="87" class="spotRow">
|
||||
<tr id="86" class="spotRow">
|
||||
<td class="name">Standards Manual</td>
|
||||
<td>212 Franklin Street, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="88" class="spotRow">
|
||||
<tr id="87" class="spotRow">
|
||||
<td class="name">Strand Bookstore</td>
|
||||
<td>828 Broadway, New York</td>
|
||||
</tr>
|
||||
<tr id="89" class="spotRow">
|
||||
<tr id="88" class="spotRow">
|
||||
<td class="name">Sweet Pickle Books</td>
|
||||
<td>47 Orchard St, New York</td>
|
||||
</tr>
|
||||
<tr id="89" class="spotRow">
|
||||
<td class="name">Taylor & Co. Books</td>
|
||||
<td>1021 Cortelyou Rd, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="90" class="spotRow">
|
||||
<td class="name">Terrace Books</td>
|
||||
<td>242 Prospect Park West, Brooklyn</td>
|
||||
@@ -554,56 +562,68 @@
|
||||
<td>58 Warren St, New York</td>
|
||||
</tr>
|
||||
<tr id="98" class="spotRow">
|
||||
<td class="name">The Strand At Columbus Ave</td>
|
||||
<td>450 Columbus Avenue, New York</td>
|
||||
<td class="name">The Ripped Bodice</td>
|
||||
<td>218 5th Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="99" class="spotRow">
|
||||
<td class="name">The Word Is Change</td>
|
||||
<td>368 Tompkins Avenue, Brooklyn</td>
|
||||
<td class="name">The Strand At Columbus Ave</td>
|
||||
<td>450 Columbus Ave, New York</td>
|
||||
</tr>
|
||||
<tr id="100" class="spotRow">
|
||||
<td class="name">Three Lives & Company</td>
|
||||
<td>238 West 10th St, New York</td>
|
||||
<td class="name">The Word Is Change</td>
|
||||
<td>368 Tompkins Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="101" class="spotRow">
|
||||
<td class="name">Three Lives & Company</td>
|
||||
<td>154 W 10th St, New York</td>
|
||||
</tr>
|
||||
<tr id="102" class="spotRow">
|
||||
<td class="name">Topos Bookstore Cafe</td>
|
||||
<td>788 Woodward Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="102" class="spotRow">
|
||||
<tr id="103" class="spotRow">
|
||||
<td class="name">Topos Too</td>
|
||||
<td>59-22 Myrtle Ave, Queens</td>
|
||||
</tr>
|
||||
<tr id="104" class="spotRow">
|
||||
<td class="name">Troubled Sleep Books</td>
|
||||
<td>129 6th Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="103" class="spotRow">
|
||||
<tr id="105" class="spotRow">
|
||||
<td class="name">Turn The Page... Again</td>
|
||||
<td>39-15a Bell Blvd, Flushing</td>
|
||||
</tr>
|
||||
<tr id="104" class="spotRow">
|
||||
<tr id="106" class="spotRow">
|
||||
<td class="name">Unnameable Books</td>
|
||||
<td>600 Vanderbilt Ave, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="105" class="spotRow">
|
||||
<tr id="107" class="spotRow">
|
||||
<td class="name">Ursus Books</td>
|
||||
<td>50 East 78th St, Suite 1C, New York</td>
|
||||
</tr>
|
||||
<tr id="106" class="spotRow">
|
||||
<tr id="108" class="spotRow">
|
||||
<td class="name">Village Works</td>
|
||||
<td>12 St. Marks Pl, New York</td>
|
||||
</tr>
|
||||
<tr id="109" class="spotRow">
|
||||
<td class="name">Westsider Rare & Used Books</td>
|
||||
<td>2246 Broadway, New York</td>
|
||||
</tr>
|
||||
<tr id="107" class="spotRow">
|
||||
<tr id="110" class="spotRow">
|
||||
<td class="name">Westsider Records</td>
|
||||
<td>233 West 72nd St, New York</td>
|
||||
</tr>
|
||||
<tr id="108" class="spotRow">
|
||||
<tr id="111" class="spotRow">
|
||||
<td class="name">Word Bookstore</td>
|
||||
<td>126 Franklin St, Brooklyn</td>
|
||||
</tr>
|
||||
<tr id="109" class="spotRow">
|
||||
<tr id="112" class="spotRow">
|
||||
<td class="name">Word Up Books</td>
|
||||
<td>2113 Amsterdam Ave, New York</td>
|
||||
</tr>
|
||||
<tr id="110" class="spotRow">
|
||||
<tr id="113" class="spotRow">
|
||||
<td class="name">Yu and Me Books</td>
|
||||
<td>44 Mulberry St, New York</td>
|
||||
<td>115 Delancey St Stall #11, New York</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -663,7 +683,6 @@
|
||||
${city}, NY ${postcode}
|
||||
</p>
|
||||
<p>
|
||||
View in:
|
||||
<a
|
||||
href="https://maps.google.com/maps?q=${encodeURIComponent(
|
||||
name
|
||||
@@ -684,17 +703,13 @@
|
||||
: ""
|
||||
}
|
||||
</p>
|
||||
<ul>
|
||||
${
|
||||
website
|
||||
? `<li><a href="${website}" target="_blank">${cleanWebsite(
|
||||
website
|
||||
)}</a></li>`
|
||||
: ""
|
||||
}
|
||||
<li class="storeDetails">Events: ${events}</li>
|
||||
<li class="storeDetails">Café: ${cafe}</li>
|
||||
</ul>
|
||||
${
|
||||
website
|
||||
? `<p><a href="${website}" target="_blank">${cleanWebsite(
|
||||
website
|
||||
)}</a></p>`
|
||||
: ""
|
||||
}
|
||||
${description ? `<p class="description">${description}</p>` : ""}`;
|
||||
}
|
||||
|
||||
@@ -798,6 +813,10 @@
|
||||
}
|
||||
}
|
||||
|
||||
function isStacked() {
|
||||
return screen.width < 1120;
|
||||
}
|
||||
|
||||
function boundingBox(point) {
|
||||
// add some buffer to a point to give the user some leeway
|
||||
return [
|
||||
@@ -807,7 +826,11 @@
|
||||
}
|
||||
|
||||
function updateSelectedStore(store, pushState = false) {
|
||||
map.flyTo({ center: [store.long, store.lat], zoom: 12 });
|
||||
map.flyTo({
|
||||
center: [store.long, store.lat],
|
||||
offset: [isStacked() ? 0 : -250, 0],
|
||||
zoom: 13,
|
||||
});
|
||||
|
||||
popup.setLngLat([store.long, store.lat]).setHTML(store.name).addTo(map);
|
||||
|
||||
@@ -829,8 +852,6 @@
|
||||
}
|
||||
|
||||
function loadMap(data) {
|
||||
var geolocate = new mapboxgl.GeolocateControl();
|
||||
|
||||
var points = [];
|
||||
data.forEach((value, key) => {
|
||||
points.push({
|
||||
@@ -861,7 +882,6 @@
|
||||
},
|
||||
});
|
||||
map.addControl(new mapboxgl.NavigationControl(), "top-left");
|
||||
map.addControl(geolocate, "top-right");
|
||||
updateViewBySlug(window.location.hash.split("#")[1]);
|
||||
});
|
||||
|
||||
@@ -894,20 +914,12 @@
|
||||
map.getCanvas().style.cursor = features.length ? "pointer" : "";
|
||||
});
|
||||
|
||||
geolocate.on("geolocate", function (e) {
|
||||
map.setZoom(14);
|
||||
popup
|
||||
.setLngLat([e.coords.longitude, e.coords.latitude])
|
||||
.setHTML("Current Location")
|
||||
.addTo(map);
|
||||
});
|
||||
|
||||
setContent("Stores", TableViewTemplate(data));
|
||||
document.querySelectorAll("#Stores tbody tr").forEach((element) => {
|
||||
element.addEventListener("click", () => {
|
||||
updateSelectedStore(data[element.id], true);
|
||||
document
|
||||
.getElementById("subhed")
|
||||
.getElementById(isStacked() ? "map" : "selected")
|
||||
.scrollIntoView({ behavior: "smooth" });
|
||||
});
|
||||
});
|
||||
|
||||
34
index.js
34
index.js
@@ -1,7 +1,39 @@
|
||||
import { load } from "cheerio";
|
||||
import { readFile, writeFile } from "fs";
|
||||
import process from "child_process";
|
||||
import stores from "./stores.json" assert { type: "json" };
|
||||
|
||||
function GetRecentChanges() {
|
||||
const res = process
|
||||
.execSync('git log -15 --pretty=format:"%ct %s"')
|
||||
.toString();
|
||||
return res.split("\n");
|
||||
}
|
||||
|
||||
function ChangeLog(logs) {
|
||||
let res = "\n";
|
||||
let i = 0;
|
||||
logs.forEach((l) => {
|
||||
if (
|
||||
i > 3 ||
|
||||
l.includes("[skip]") ||
|
||||
l.includes("caddy") ||
|
||||
l.includes("renovate")
|
||||
) {
|
||||
return;
|
||||
}
|
||||
i++;
|
||||
const s = l.split(" ");
|
||||
const date = new Date(s[0] * 1000).toLocaleDateString("en-US", {
|
||||
year: "numeric",
|
||||
month: "long",
|
||||
day: "numeric",
|
||||
});
|
||||
res = res + `<li>${date} - ${s.slice(1).join(" ")}</li>\n`;
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
function TableViewTemplate(rows) {
|
||||
let table = "<table>";
|
||||
rows.forEach((row, key) => {
|
||||
@@ -20,6 +52,7 @@ function TableRowTemplate({ rowNumber, name, address, city }) {
|
||||
}
|
||||
|
||||
readFile("./index.html", function (err, data) {
|
||||
const changeList = GetRecentChanges();
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
@@ -40,6 +73,7 @@ readFile("./index.html", function (err, data) {
|
||||
day: "numeric",
|
||||
})
|
||||
);
|
||||
$("#changesList").html(ChangeLog(changeList));
|
||||
const cssurl = $("link[type='text/css']").attr("href").split("?")[0];
|
||||
$("link[type='text/css']").attr("href", cssurl + "?" + new Date().getTime());
|
||||
writeFile("./index.html", $.html(), (err) => {
|
||||
|
||||
122
stores.json
122
stores.json
@@ -149,7 +149,7 @@
|
||||
"lat": "40.733032",
|
||||
"long": "-73.98996",
|
||||
"country": "USA",
|
||||
"website": "https://www.instagram.com/alabasterbooks/",
|
||||
"website": "https://www.instagram.com/alabasterbookshop/",
|
||||
"events": "No",
|
||||
"cafe": "No"
|
||||
},
|
||||
@@ -295,13 +295,13 @@
|
||||
},
|
||||
{
|
||||
"name": "Three Lives & Company",
|
||||
"address": "238 West 10th St",
|
||||
"address": "154 W 10th St",
|
||||
"city": "New York",
|
||||
"state": "NY",
|
||||
"postcode": "10014",
|
||||
"description": "Unselfconsciously old-fashioned, Three Lives (the name comes from the trio of women founders as well as the Gertrude Stein novel) occupies a former deli. A gorgeous space with dark wood everywhere, they sell mainly literary fiction, with a selection of literary magazines and travel guides as well. The staff are enthusiastic and deeply knowledgable. Temporarily moved from 154 West 10th St.",
|
||||
"lat": "40.733749",
|
||||
"long": "-74.005438",
|
||||
"description": "Unselfconsciously old-fashioned, Three Lives (the name comes from the trio of women founders as well as the Gertrude Stein novel) occupies a former deli. A gorgeous space with dark wood everywhere, they sell mainly literary fiction, with a selection of literary magazines and travel guides as well. The staff are enthusiastic and deeply knowledgable.",
|
||||
"lat": "40.734402117180856",
|
||||
"long": "-74.00149889306957",
|
||||
"country": "USA",
|
||||
"website": "http://www.threelives.com/",
|
||||
"events": "Yes",
|
||||
@@ -419,20 +419,6 @@
|
||||
"events": "Yes",
|
||||
"cafe": "No"
|
||||
},
|
||||
{
|
||||
"name": "Idlewild Books",
|
||||
"address": "170 7th Avenue S",
|
||||
"city": "New York",
|
||||
"state": "NY",
|
||||
"postcode": "10014",
|
||||
"description": "Idlewild Books started off as a store for travel guides and books for armchair travelers; over time, the selection has started to cater more to those interested in learning another language, but the Manhattan location has maintained a large selection of books from and about far-flung corners of the globe. Langauge classes are also available here and at the other two locations in the city.",
|
||||
"lat": "40.7355778",
|
||||
"long": "-74.0017457",
|
||||
"country": "USA",
|
||||
"website": "https://www.idlewildbooks.com/",
|
||||
"events": "Yes",
|
||||
"cafe": "No"
|
||||
},
|
||||
{
|
||||
"name": "Posman Books Chelsea Market",
|
||||
"address": "75 9th Avenue",
|
||||
@@ -671,20 +657,6 @@
|
||||
"events": "Yes",
|
||||
"cafe": "No"
|
||||
},
|
||||
{
|
||||
"name": "Boulevard Books",
|
||||
"address": "7518 13th Ave",
|
||||
"city": "Brooklyn",
|
||||
"state": "NY",
|
||||
"postcode": "11228",
|
||||
"description": "",
|
||||
"lat": "40.61998",
|
||||
"long": "-74.0080949",
|
||||
"country": "USA",
|
||||
"website": "https://facebook.com/boulevardbookstore/",
|
||||
"events": "Yes",
|
||||
"cafe": "Yes"
|
||||
},
|
||||
{
|
||||
"name": "Better Read Than Dead",
|
||||
"address": "867 Broadway",
|
||||
@@ -855,17 +827,17 @@
|
||||
},
|
||||
{
|
||||
"name": "Archestratus",
|
||||
"address": "160 Huron St",
|
||||
"address": "164 Huron St",
|
||||
"city": "Brooklyn",
|
||||
"state": "NY",
|
||||
"postcode": "11222",
|
||||
"description": "Archestratus is a combination cookbook bookstore, café, and restaurant on Thursday evenings serving Sicilian-inspired food. A gorgeous, bright space with a wide selection of cookbooks, both new and used, as well as fiction and non-fiction on and relating to gustatory pleasure. Includes stationary, a small selection of pantry items, and a children's section.",
|
||||
"lat": "40.732808",
|
||||
"long": "-73.955144",
|
||||
"description": "Archestratus is a combination cookbook-bookstore and grocery. A gorgeous, bright space with a wide selection of cookbooks, both new and used, as well as fiction and non-fiction on and relating to gustatory pleasure. Includes stationary, a small selection of pantry items, and a children's section.",
|
||||
"lat": "40.73291914466089",
|
||||
"long": "-73.955081286067",
|
||||
"country": "USA",
|
||||
"website": "https://www.archestrat.us/",
|
||||
"events": "Yes",
|
||||
"cafe": "Yes"
|
||||
"cafe": "Sandwiches and Groceries"
|
||||
},
|
||||
{
|
||||
"name": "Quest Bookshop",
|
||||
@@ -1275,17 +1247,17 @@
|
||||
},
|
||||
{
|
||||
"name": "Yu and Me Books",
|
||||
"address": "44 Mulberry St",
|
||||
"address": "115 Delancey St Stall #11",
|
||||
"city": "New York",
|
||||
"state": "NY",
|
||||
"postcode": "10013",
|
||||
"description": "",
|
||||
"lat": "40.7150026491681",
|
||||
"long": "-73.99949344452915",
|
||||
"postcode": "10002",
|
||||
"description": "Temporarily located in Essex Market after a fire ruined their original Chinatown location.",
|
||||
"lat": "40.71799108242515",
|
||||
"long": "-73.98821173877292",
|
||||
"country": "USA",
|
||||
"website": "https://www.yuandmebooks.com/",
|
||||
"events": "Yes",
|
||||
"cafe": "Yes?"
|
||||
"cafe": "No"
|
||||
},
|
||||
{
|
||||
"name": "Bookoff Brooklyn",
|
||||
@@ -1331,17 +1303,17 @@
|
||||
},
|
||||
{
|
||||
"name": "Burnt Books",
|
||||
"address": "1014 Manhattan Ave",
|
||||
"address": "157 Huron St",
|
||||
"city": "Brooklyn",
|
||||
"state": "NY",
|
||||
"postcode": "11222",
|
||||
"description": "Inside the bodega at this address.",
|
||||
"lat": "40.733568440405016",
|
||||
"long": "-73.95461455767136",
|
||||
"description": "Inside Hey Kids! Comics.",
|
||||
"lat": "40.73311524313807",
|
||||
"long": "-73.95524501396707",
|
||||
"country": "USA",
|
||||
"website": "https://www.instagram.com/burnt_books_/",
|
||||
"events": "No",
|
||||
"cafe": "Yes?"
|
||||
"cafe": "No"
|
||||
},
|
||||
{
|
||||
"name": "Hey Kids! Comics",
|
||||
@@ -1443,13 +1415,13 @@
|
||||
},
|
||||
{
|
||||
"name": "Adanne",
|
||||
"address": "234 Water St",
|
||||
"address": "115 Ralph Ave",
|
||||
"city": "Brooklyn",
|
||||
"state": "NY",
|
||||
"postcode": "11201",
|
||||
"postcode": "11221",
|
||||
"description": "",
|
||||
"lat": "40.70288951770088",
|
||||
"long": "-73.98444221660601",
|
||||
"lat": "40.686078937932145",
|
||||
"long": "-73.92321820991805",
|
||||
"country": "USA",
|
||||
"website": "https://adanne.co/",
|
||||
"events": "Yes",
|
||||
@@ -1577,8 +1549,50 @@
|
||||
"lat": "40.67614895922998",
|
||||
"long": "-73.98099066262628",
|
||||
"country": "USA",
|
||||
"website": "https://www.therippedbodicela.com/ripped-bodice-brooklyn-faq",
|
||||
"website": "https://www.therippedbodicela.com/ripped-bodice-brooklyn",
|
||||
"events": "Yes",
|
||||
"cafe": "No"
|
||||
},
|
||||
{
|
||||
"name": "Lofty Pigeon Books",
|
||||
"address": "743 Church Ave",
|
||||
"city": "Brooklyn",
|
||||
"state": "NY",
|
||||
"postcode": "11218",
|
||||
"description": "",
|
||||
"lat": "40.646037403744415",
|
||||
"long": "-73.97189664018556",
|
||||
"country": "USA",
|
||||
"website": "https://www.loftypigeonbooks.com/",
|
||||
"events": "Yes",
|
||||
"cafe": "No"
|
||||
},
|
||||
{
|
||||
"name": "Village Works",
|
||||
"address": "12 St. Marks Pl",
|
||||
"city": "New York",
|
||||
"state": "NY",
|
||||
"postcode": "10003",
|
||||
"description": "",
|
||||
"lat": "40.72914082270099",
|
||||
"long": "-73.98920772389302",
|
||||
"country": "USA",
|
||||
"website": "https://www.villageworksnyc.com/",
|
||||
"events": "Yes",
|
||||
"cafe": "Soon?"
|
||||
},
|
||||
{
|
||||
"name": "Topos Too",
|
||||
"address": "59-22 Myrtle Ave",
|
||||
"city": "Queens",
|
||||
"state": "NY",
|
||||
"postcode": "11385",
|
||||
"description": "",
|
||||
"lat": "40.70042656211568",
|
||||
"long": "-73.89895900901953",
|
||||
"country": "USA",
|
||||
"website": "https://www.toposbookstore.com/",
|
||||
"events": "?",
|
||||
"cafe": "No"
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user