Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
TripMate — Your AI travel companion
Translation pending
LifestyleTypeScript · CSSGitHub @DhamaruOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Agentic AI travel planning powered by Atlas, a travel intelligence agent running entirely on Google Gemini, with real-time collaboration via Socket.io.
• Node.js 20+
• MongoDB (local) or MongoDB Atlas free tier
• Gemini API key — an AI-Studio-issued key (format AQ.xxx), not a plain Cloud-Console key; only AI-Studio keys actually work against the Gemini Developer API
• Google API key (Places, Maps, Cloud Translation)
See server/config.ts for the complete, authoritative list (SMTP, admin/feedback-routine secrets, rate-limit tuning, etc.Read the full README ↗Agentic AI travel planning powered by Atlas, a travel intelligence agent running entirely on Google Gemini, with real-time collaboration via Socket.io.
AQ.xxx), not a plain Cloud-Console key; only AI-Studio keys actually work against the Gemini Developer API# 1. Clone
git clone <repo> && cd tripmate
# 2. Install dependencies
npm install
# 3. Configure environment
cp .env.example .env
# Edit .env and fill in your API keys
# 4. Seed database with test data
npm run db:seed
# 5. Start development servers
npm run dev
# Frontend: http://localhost:3000
# Backend: http://localhost:5000
| Variable | Required | Description |
|---|---|---|
MONGODB_URI | ✅ | MongoDB connection string (not DATABASE_URL) |
SESSION_SECRET | ✅ | Random string for session signing |
JWT_SECRET | ✅ | Random string for JWT signing |
GEMINI_API_KEY | ✅ | AI-Studio-issued key — powers Atlas chat, the trip-planning multi-agent pipeline, and every AI utility (weather/travel-hacks/journal/translation). Every other LLM provider this app tried (OpenAI, NVIDIA, Groq, OpenRouter) has been removed. |
GOOGLE_API_KEY | Recommended | Places search, Maps, Cloud Translation — a plain Cloud Console key works for this (unlike GEMINI_API_KEY) |
NODE_ENV | ✅ | development, production, or test |
VITE_API_URL | Dev only | Frontend API base: http://localhost:5000 |
See server/config.ts for the complete, authoritative list (SMTP, admin/feedback-routine secrets, rate-limit tuning, etc.) — this table covers what you need for local dev, not every optional var.
| Script | Description |
|---|---|
npm run dev | Start both frontend and backend (backend serves the built client; use dev:standalone for separate hot-reloading dev servers) |
npm run dev:standalone | Frontend (port 3000) and backend (port 5000) as separate hot-reloading processes |
npm run build | Production build (Vite client + esbuild server bundle) |
npm run typecheck | TypeScript check, no emit |
npm run lint | ESLint check |
npm test | Run the full Vitest suite |
npm run test:unit | Backend/frontend/agent/SSE unit tests only |
npm run test:integration | Integration tests only |
npm run test:coverage | Tests with coverage report |
npm run db:seed | Seed database with test data |
npm run db:clear | Destructive — wipes the entire database. Never run against a shared/production MONGODB_URI. |
npm run atlas:golden-eval | Runs real end-to-end checks against Atlas against a live BASE_URL (defaults to localhost) — hits real LLM/network providers, not mocked |
Browser (React + Vite :3000)
│
│ HTTP / SSE / Socket.io
▼
Express API (Node.js :5000)
│── requireAuth (JWT, cookie-based, revocable via Session model)
│── Validate Middleware (Zod)
│── Rate Limit Middleware (per-route: auth/AI/generation/places-photo limiters)
│── Helmet, CSRF, mongo-sanitize, hpp
│
│── Agent Router ──────► Atlas Agent Loop
│ │── Two Gemini model slots (circuit breaker +
│ │ per-slot token-budget admission)
│ │── Tool Executor (~19 tools, CONFIRM_REQUIRED gate on
│ │ destructive ones — manage_expense removal, manage_collaborator)
│ │── weatherHandler, currencyHandler, translateHandler
│ │── placesHandler, emergencyHandler
│ │── packingHandler, budgetHandler, journalToolHandler
│ │── modifyItineraryHandler, expenseToolHandler
│ └── collaboratorToolHandler, tripPlannerHandler
│
│── MasterOrchestrator (server/agent/multiAgent/) — separate pipeline from Atlas chat,
│ runs SuggestionAgent/HeroImageAgent/ItineraryAgent/BudgetAgent/MapAgent/
│ PackingAgent/JournalAgent, tracked via AgentJob records
│
│── Trip / Itinerary / Expense / Packing / Journal / Collaborator Routers
│── Socket.io (SocketService) — trip rooms (auth-checked on join), presence, live mutations
│
▼
MongoDB (Mongoose) — shared/schema.ts is the single source of truth for models
docs/API.md — Full REST API referencedocs/AGENT_PROMPTS.md — Atlas prompt system referencedocs/ARCHITECTURE.md — Full system architectureDESIGN.md — Design system (Night Atlas / Passport & Visa Stamp)