Aplicação web para gerenciar destinos de viagem, desenvolvida com React, TypeScript e Vite.
- React 18
- TypeScript
- Vite
- Material-UI (MUI)
- Framer Motion
- Axios
- JSON Server
- React Hooks
- Cypress
- Node.js (versão 14 ou superior)
- npm ou yarn
- Clone o repositório:
git clone https://github.com/seu-usuario/PlaceToVisit.git
cd PlaceToVisit- Instale as dependências:
npm install
# ou
yarn install- Instale o JSON Server globalmente (se ainda não tiver):
npm install -g json-server
# ou
yarn global add json-server- Inicie o JSON Server (em um terminal separado):
json-server --watch db.json --port 3001- Em outro terminal, inicie o servidor de desenvolvimento:
npm run dev
# ou
yarn dev- Acesse a aplicação em
http://localhost:5173
O projeto utiliza Cypress para testes automatizados. Para rodar os testes:
- Instale o Cypress (caso ainda não tenha):
npm install -D cypress- Para abrir o Cypress em modo interativo:
npx cypress open- Para rodar os testes em modo headless:
npx cypress runOs testes estão organizados em:
cypress/e2e/: Testes de fluxos completoscypress/fixtures/: Dados estáticos para os testescypress/support/: Configurações e comandos personalizados
- Adição de nova meta
- Edição de meta existente
- Exclusão de meta
- Validação de formulários
- Adicionar metas de viagem
- Editar metas existentes
- Excluir metas
- Visualizar lista de metas
- Validação de formulários
- Interface responsiva
- Notificações de feedback
- Animações suaves com Framer Motion
- Testes automatizados
src/
├── assets/ # Imagens e recursos estáticos
├── components/ # Componentes React
│ ├── CardCountry/ # Componente de card de país
│ ├── CardsArea/ # Área de cards
│ ├── FormPlace/ # Formulário de lugares
│ ├── FormsComponent/ # Componente do formulário para evitar repetição de código
│ ├── Header/ # Cabeçalho
│ └── SnackBarAlert/ # Componente de alerta
├── pages/ # Páginas da aplicação
├── services/ # Serviços de API
│ └── api.ts # Centralização de chamadas à API
├── types/ # Definições de tipos TypeScript
│ └── index.ts # Interfaces centralizadas
└── App.tsx # Componente principal
O projeto utiliza o JSON Server para simular uma API REST. O arquivo db.json contém os dados iniciais:
{
"countries": [
{
"id": "8758",
"nome": "Canadá",
"flag": "https://flagcdn.com/w320/ca.png",
"local": "Vancouver",
"meta": "04/2026"
}
// ... mais países
]
}Endpoints disponíveis:
- GET /countries - Lista todos os países
- POST /countries - Adiciona um novo país
- PATCH /countries/:id - Atualiza um país
- DELETE /countries/:id - Remove um país