![Wooster Logo](/joshuaisaact/Wooster/raw/main/public/wooster-face-front-no-bg-alt.png)
Leverage AI-generated trip recommendations, explore the world with an interactive 3D globe, and build detailed, personalized itineraries.
The backend for this project powers AI recommendations, manages user data, and integrates with external APIs.
![Wooster Logo](/joshuaisaact/Wooster/raw/main/public/wooster-server.png)
Wooster's frontend provides users with an interactive interface to explore destinations and plan trips. It includes an "Explore" page featuring a 3D globe where users can visualize destinations and trip details. The application fetches data from the Gemini backend via an Express.js API to generate trips and display detailed destination data.
-
Explore Destinations:
- A 3D interactive globe using
three.js
andglobe.gl
. - Leaflet integration for detailed maps and destination exploration.
- A 3D interactive globe using
-
Trip Planning:
- AI-powered trip generation using Gemini.
- Interactive forms and suggestions powered by React Hook Form and Zod for input validation.
-
Responsive Design:
- Tailwind CSS for dynamic styling and responsive layout.
-
State Management:
- Centralized state management using React's reducer pattern.
-
Destination Summaries:
- Fetch and display detailed summaries for each destination based on AI-generated data.
-
User Trips:
- View planned trips and explore detailed trip itineraries with a focus on user-friendly navigation.
-
AI art:
- Dog art generated using Stable Diffusion.
The project employs a comprehensive testing strategy using modern testing tools and practices:
- Vitest: Main testing framework, chosen for its excellent Vite integration and improved performance over Jest
- Testing Library: For testing React components with a focus on user behavior
- Mock Service Worker (MSW): For intercepting and mocking API requests at the network level
- Jest DOM: For extended DOM element matchers
- API Mocking:
- MSW intercepts HTTP requests during tests
- Realistic API simulation with proper response structures
- Error scenarios handled within route handlers
- Network-level mocking instead of function mocks
- Component Testing:
- Integration tests using Testing Library
- Focus on user interactions and behavior
- Accessibility testing built into component tests
- Unit Testing:
- Utility functions tested in isolation
- Type validation using TypeScript
- Edge cases covered with extensive test suites
To get started with the Wooster frontend, clone the repository and install the required dependencies:
git clone https://github.com/yourusername/wooster-frontend.git
cd wooster-frontend
npm install
Ensure that you also have the backend service (Gemini) set up for API interaction.
To start the development server, run:
npm run dev
This will start a Vite-powered development environment with hot module reloading for seamless development.
npm run dev
: Start the development server.npm run build
: Build the project for production (TypeScript compilation followed by Vite build).npm run lint
: Lint the code using ESLint.npm run lint:fix
: Automatically fix linting issues.npm run format
: Format the code using Prettier.npm run type-check
: Run TypeScript type checking without emitting any files.npm run vitest
: Run Vitest testing suitenpm run vitest:full
: Run the Vitest testing suite in verbose mode, showing all test names (including passing tests).npm run vitest:ui
: Open the Vitest interactive testing UI.npm run test:coverage
: Run the Vitest testing suite with coverage reporting.
Contributions are welcome! If you'd like to improve the app, feel free to submit a pull request or file an issue. Please follow the established coding conventions and make sure all changes are thoroughly tested.
This project is licensed under the MIT License. See the LICENSE file for details.