Iteroo is an AI travel planner that turns structured trip preferences into a day-by-day itinerary with mapped stops, estimated costs, accommodation suggestions, edit flows, and external booking links.
The project was originally built and shipped as a solo-founder SaaS experiment. This public version is a portfolio-friendly monorepo with a fresh Git history and all live secrets, service accounts, deployment metadata, and local environment files removed.
- Collects trip preferences through a 6-step wizard: destination, dates, travelers, budget, accommodation, vibes, and pace.
- Generates itineraries asynchronously through a Spring Boot backend and an AI orchestration pipeline.
- Persists trips, days, steps, accommodations, map coordinates, estimated costs, ratings, and share tokens.
- Lets users review, edit, reorder, add, and delete itinerary steps.
- Shows a map/timeline experience in a Flutter Web PWA.
- Enriches selected travel experiences and search flows with external provider or affiliate links.
- Includes a localized marketing website with landing pages and travel blog content.
apps/
frontend/ Flutter Web/PWA product app
backend/ Spring Boot API and AI orchestration service
website/ Next.js marketing website and blog
docs/
ARCHITECTURE.md
API.md
DATA_MODEL.md
SECURITY.md
| Area | Technology |
|---|---|
| Product frontend | Flutter Web, Riverpod, Supabase Auth, Google Maps |
| Backend | Java 21, Spring Boot 3, Spring Security, JPA, Spring AI |
| Data | Supabase PostgreSQL, Redis |
| AI and data providers | Google Gemini, Brave Search, Geoapify, Viator, Unsplash |
| Notifications | Firebase Cloud Messaging for web push |
| Marketing site | Next.js, React, TypeScript, next-intl |
| Ops | Docker, Firebase Hosting-ready frontend config, Render-style backend config |
graph LR
U["User"] --> F["Flutter Web PWA"]
U --> W["Next.js Website"]
F --> SA["Supabase Auth"]
F --> API["Spring Boot API"]
F --> GM["Google Maps / Places"]
F --> FCM["Firebase Messaging"]
API --> DB["Supabase PostgreSQL"]
API --> R["Redis Cache"]
API --> AI["Google Gemini"]
API --> GEO["Geoapify"]
API --> BS["Brave Search"]
API --> V["Viator"]
API --> UN["Unsplash"]
API --> TP["Travelpayouts"]
API --> BEE["Beehiiv"]
API --> FCM
More detail: docs/ARCHITECTURE.md.
Backend:
cd apps/backend
cp .env.example .env
set -a && source .env && set +a
docker compose up -d redis
./mvnw spring-boot:runFrontend:
cd apps/frontend
cp .env.example .env
flutter pub get
flutter run -d chromeWebsite:
cd apps/website
npm install
npm run devThe app needs your own Supabase project, PostgreSQL database, Google API keys, and provider credentials for the full production flow. Optional integrations can be disabled by leaving their env vars empty.
This repository intentionally does not include:
.envfiles- Supabase service-role keys
- database passwords
- Firebase service account JSON files
- live Firebase project config
- Google Maps keys
- local IDE/agent settings
- private Git history from the original repositories
See docs/SECURITY.md for the full sanitization notes.
Iteroo is not a toy CRUD app. It demonstrates full-stack product engineering across:
- async AI workflow design
- provider integration and caching
- JWT auth boundaries
- geospatial UX
- SaaS deployment configuration
- rate limiting and production observability
- real product documentation
- monetization-oriented affiliate architecture
MIT. See LICENSE.
