Visite o site — https://mapaespecial.com
🦅 Don't speak Portuguese? Read the English version of the README 🦅
Mapa Especial é uma diretoria open-source de estabelecimentos que trabalham com cafés especiais em Grande São Paulo e Baixada Santista. O projeto tem como objetivo ajudar os moradores de São Paulo a descobrir pequenos negócios no setor de cafés especiais.
O mapa exibe cafeterias e lojas que atendem aos seguintes critérios:
O código-fonte do site está disponível no GitHub sob a licença MIT. Agradecemos contribuições externas para melhorar o site e seu conteúdo.
leaflet
para exibir dados do mapa.headlessui
e react-select
.react-hook-form
gerencia o formulário de filtro.mdx
para gerar páginas sem conteúdo interativo. O MDX permite que você misture código Markdown com código JSX.Clonar o repositório.
Instale as dependências do pacote com o gerenciador de pacotes Node.js de sua escolha:
pnpm i
Inicie o servidor de desenvolvimento:
pnpm run dev
Abra http://localhost:3000 para visualizar o site.
Contribuidores externos podem criar pull requests para adicionar novos dados ou remover dados incorretos. Crie um fork de esse repositório na sua conta do GitHub, edite os arquivos e abra um pull request.
src/data/cafes.json
armazena dados das cafeterias.src/data/shops.json
armazena dados das lojas.src/data/roasters.json
armazena dados dos torradores.O arquivo roasters.json
armazena a lista de torradores. Objetos Roaster
referenciam os IDs de cafés e lojas que usam o café daquele torrador:
{
"name": "roasterName", /* O nome do torrador */
"roasterID": 1, /* ID único */
"ownShops": [1], /* IDs de lojas que são de propriedade do torrador. Encontre IDs de lojas no arquivo "shops.json" */
"ownCafes": [1], /* IDs de cafeterias que são de propriedade do torrador. Encontre IDs de cafeterias no arquivo "cafes.json" */
"clientShops": [2], /* IDs de lojas não afiliadas que vendam os cafés do torrador */
"clientCafes": [2] /* IDs de cafeterias não afiliadas que usam os cafés do torrador */
}
Dados de cafeterias e lojas seguem o mesmo formato de dados GeoJSON normalizado:
{
"type": "Feature", /* Manter inalterado. */
"id": "58", /* Certifique-se de que a entrada tenha um ID exclusivo. */
"properties": {
"name": "Coffee Shop Name", /* Nome do negócio. */
"instagramHandle": "coffee-shop-sp", /* Nome de usuário do Instagram (sem o restante da URL). Manter vazio se o estabelecimento não tiver uma conta no Instagram. */
"websiteURL": "https://website.url", /* A URL completa do site do negócio. Manter vazio se o estabelecimento não tiver um site. */
"googleMapsEmbedURL": "https://www.google.com/maps/embed?pb=!longstringoFnumbersAndDigits", /* A URL de incorporação para o iFrame do Google Maps. Manter vazio se o negócio não estiver no Google Maps. */
"roasters": [1,2], /* Array de IDs de torradores cujos produtos o local tem. Veja o arquivo "roasters.json" para ver a lista de torradores e seus IDs. Manter vazio se não souber qual torrador o negócio usam. */
"espressoPrice": "0", /* O preço de um único shot de espresso. Insira 0 se a loja não servir espresso. */
"veganMilk": false, /* 'true' se o negócio oferece leites vegetais. */
"petFriendly": false, /* 'true' se o negócio permite a entrada de animais. */
"hostsEvents": false, /* 'true' se o negócio organizo eventos relacionados ao café, como degustações. */
"foreignCoffee": false, /* 'true' se o negócio serve ou vende cafés especiais cultivados ou torrados fora do Brasil. */
"brewingMethods": {
"espresso": false, /* 'true' se o negócio serve café espresso e bebidas à base de café espresso. */
"batchBrew": false, /* 'true' se o negócio usa cafeteiras automáticas para preparar café filtrado em grandes quantidades. */
"hario": false, /* 'true' se o negócio prepara café coado com Hario V60 e coadores similares (Kalita, Origami, etc.). */
"chemex": false, /* 'true' se o negócio prepara café coado com Chemex. */
"aeropress": false, /* 'true' se o negócio prepara café com Aeropress. */
"frenchPress": false, /* 'true' se o negócio prepara café com prensa francesa. */
"oriental": false, /* 'true' se o negócio prepara café oriental com cezve / ibrik. */
"moka": false /* 'true' se o negócio prepara café com moka / cafeteira italiana. */
},
"food": {
"desserts": false, /* 'true' se o negócio vende sobremesas (bolos, doces, etc.). */
"breakfast": false, /* 'true' se o negócio serve café da manhã. */
"snacks": false, /* 'true' se o negócio serve lanches (cachorros-quentes, hambúrgueres, etc.). */
"mainDishes": false, /* 'true' se o negócio serve pratos principais no almoço ou jantar. */
"vegFood": false /* 'true' se o negócio oferece opções de comida vegetariana/vegana. */
},
"shop": {
"coffeeBeans": false, /* 'true' se o negócio vende café em grãos. */
"equipment": false, /* 'true' se o negócio vende equipamento do café (coadores, moedores, filtros de café). */
"merch": false /* 'true' se o negócio vende produtos relacionados ao café (camisetas, moletons, adesivos). */
}
},
"geometry": {
"coordinates": [-23.564125694125188,-46.683245319806595], /* Insira as coordenadas geográficas do negócio. */
"type": "Point" /* Manter inalterado. */
}
}
Você é bem-vindo para enviar PRs com melhorias para o site. Os mantenedores têm autoridade para recusar PRs de usuários, então aprove sua ideia com o proprietário do repositório antes de colocar qualquer trabalho. Certifique-se de que seu PR não quebre a funcionalidade existente ou tenha impacto negativo na aparência do site.
Crie um novo ticket do GitHub se notar um bug ou tiver uma ideia de melhoria.