A Plataforma Ameciclo é uma aplicação web full-stack que centraliza e visualiza dados abertos sobre mobilidade ativa na Região Metropolitana do Recife. Desenvolvida com tecnologias modernas, oferece ferramentas interativas para estudantes, jornalistas, pesquisadores, cicloativistas e cidadãos interessados em uma cidade mais humana, democrática e sustentável.
- 📊 Observatórios Especializados: Ideciclo, Sinistros Fatais, Vias Inseguras, SAMU, CicloDados
- 🗺️ Visualizações Interativas: Mapas (Mapbox), gráficos (Highcharts), tabelas dinâmicas
- 📈 Contagens de Ciclistas: Dados históricos com análises comparativas
- 📚 Biciclopédia: FAQ sobre mobilidade ativa
- 📁 Documentos Públicos: Acesso a relatórios e estudos
- 🎨 Acessibilidade: Controles WCAG (tamanho de fonte, alto contraste, dark mode)
- TanStack Start 1.167 - Framework full-stack com SSR
- TanStack Router 1.168 - Roteamento tipado file-based
- React 18.2 - Biblioteca UI
- TypeScript 5.1 - Tipagem estática
- Vite 7.3 - Build tool
- Cloudflare Workers - Runtime edge via
@cloudflare/vite-plugin - Wrangler 4.84 - CLI de deploy
- Tailwind CSS 3.4 - Framework CSS utility-first
- Framer Motion - Animações
- Lucide React - Ícones
- Highcharts - Gráficos interativos
- Mapbox GL - Mapas interativos
- FullCalendar - Calendário de eventos
- TanStack Query - Cache e sincronização (SSR via
@tanstack/react-router-with-query) - React Context API - Estado global
- Node.js 24.x (LTS) — a versão exata está pinada em
mise.toml - pnpm 10.x — gerenciador de pacotes (também pinado em
mise.toml) - Git (Download)
Dica: recomendamos mise para gerenciar Node e pnpm. Com
miseinstalado, basta rodarmise installna raiz do projeto e as versões corretas serão instaladas automaticamente.
# 1. Clone o repositório
git clone https://github.com/Ameciclo/ameciclo.git
cd ameciclo
# 2. Ative Node e pnpm (se usar mise)
mise install
# 3. Instale as dependências
pnpm install
# 4. Inicie o servidor de desenvolvimento
pnpm devO projeto estará disponível em: http://localhost:5173
pnpm dev # Inicia servidor de desenvolvimento (Vite)
pnpm build # Gera build de produção
pnpm preview # Servidor local para inspecionar o build
pnpm deploy # Build + deploy no Cloudflare Workers (wrangler)
pnpm lint # Verifica qualidade do código
pnpm typecheck # Verifica tipos TypeScriptameciclo/
├── app/
│ ├── components/ # 220+ componentes React
│ │ ├── Commom/ # Componentes globais
│ │ ├── CicloDados/ # Plataforma colaborativa
│ │ ├── ViasInseguras/ # Análise de vias
│ │ └── ...
│ ├── routes/ # 29 rotas (file-based routing via TanStack Router)
│ ├── loader/ # Loaders para SSR
│ ├── services/ # Lógica de negócio e APIs
│ ├── contexts/ # React Context
│ ├── hooks/ # Custom hooks
│ └── utils/ # Utilitários
├── public/ # Assets estáticos
├── docs/ # Documentação de APIs
└── package.json
Em produção (Cloudflare Workers), a configuração vive no wrangler.jsonc:
-
Valores públicos (URLs, IDs de calendário, etc.) ficam no bloco
varsdowrangler.jsonce são acessíveis em runtime viaprocess.env.*graças à flagnodejs_compat. -
Segredos (tokens, chaves de API) não vão no
wrangler.jsonc. Use:wrangler secret put MAPBOX_ACCESS_TOKEN wrangler secret put GOOGLE_CALENDAR_API_KEY
Crie um arquivo .dev.vars na raiz do projeto (já está no .gitignore) para carregar segredos durante pnpm dev:
MAPBOX_ACCESS_TOKEN=pk.seu_token_aqui
GOOGLE_CALENDAR_API_KEY=sua_chave_aquiVariáveis públicas do wrangler.jsonc (SITE_URL, GOOGLE_CALENDAR_EXTERNAL_ID, GOOGLE_CALENDAR_INTERNAL_ID) são carregadas automaticamente.
O deploy é feito diretamente para Cloudflare Workers via Wrangler:
# Login (primeira vez)
pnpm dlx wrangler login
# Deploy
pnpm deployA configuração do Worker (nome, domínios customizados, vars) está no wrangler.jsonc. O site é servido nos domínios ameciclo.org e www.ameciclo.org.
Acesse a documentação completa em: ameciclo.org/documentacao
A documentação inclui:
- Visão geral da arquitetura
- Estrutura detalhada do projeto
- Guia de componentes
- Rotas e APIs
- Boas práticas de desenvolvimento
- Configurações e deploy
- Solução de problemas
Contribuições são bem-vindas! Siga os passos:
-
Clone o repositório
git clone https://github.com/Ameciclo/ameciclo.git cd ameciclo -
Crie uma branch
git checkout -b feature/minha-funcionalidade
-
Desenvolva e teste
pnpm install pnpm dev pnpm lint pnpm typecheck
-
Commit e push
git add . git commit -m "feat: adiciona nova funcionalidade" git push origin feature/minha-funcionalidade
-
Abra um Pull Request no GitHub
- Use Conventional Commits:
feat:,fix:,docs:,style:,refactor: - Sempre tipifique com TypeScript
- Siga os padrões de estilo do oxlint (rode
pnpm lint) - Componentes em PascalCase, arquivos de serviço em camelCase
rm -rf node_modules pnpm-lock.yaml
pnpm installlsof -ti:5173 | xargs kill -9Configure MAPBOX_ACCESS_TOKEN no arquivo .dev.vars (dev) ou via wrangler secret put MAPBOX_ACCESS_TOKEN (produção).
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Ameciclo - Associação Metropolitana de Ciclistas do Recife
- 🌐 Website: ameciclo.org
- 📧 Email: contato@ameciclo.org
- 📱 Instagram: @ameciclo
