Captured from the Expo app’s web preview with sample saved places and trip data.
BUILT WITH
React Native / Expo · TypeScript · Firebase · OpenAI API · Place APIs · Earlier Flutter implementation
01 / THE PROBLEM
Inspiration is easy. Keeping it useful is harder.
Travel inspiration often starts in a social feed, while the useful details end up scattered across saved posts, maps, and notes. I built Questra to bring destination discovery, saved places, and itinerary planning into one mobile experience.
The engineering challenge is turning loosely structured content into data an application can use: named places, geographic context, saved references, and editable daily plans.
A compelling AI feature needs more than a generated answer. It needs a path into the product’s data and interface.
02 / INSIDE THE PRODUCT
Built to explore. Organized to act on.
Actual app screens, using sample content. Select any screen to view it at full size.
An editable sample itinerary with days and structured activities.
03 / INTERACTIVE ARCHITECTURE
Follow the data. Explore the decisions.
A source-based walkthrough of the backend. Sample data. No live imports or AI calls.
INSIDE THE FLOW
THE ENGINEERING DECISION
Inspect the example data +
Interactive walkthrough with illustrative data. The two flows are separate; the trip path uses explicit preferences. No social account is accessed, and no live AI request is made.
04 / ENGINEERING DECISIONS
The choices behind the experience.
01
Separate suggestions from place records.
AI proposes candidates. Place lookup adds identifiers and geographic context, while imported suggestions remain marked unverified. This preserves the distinction between a model’s answer and a reusable application record.
02
Reuse what the system already knows.
The backend checks previously processed URLs and existing place IDs. A repeat import can reuse stored results and add missing user references without repeating the entire analysis pipeline.
03
Keep the itinerary useful when a lookup fails.
Trip generation returns structured days and activities. Place details are attached where available; an unsuccessful lookup retains a fallback activity rather than discarding that part of the plan.
05 / PROJECT EVOLUTION
A new interface. Continuity underneath.
Questra spans an earlier Flutter application and a newer React Native / Expo interface. The newer services normalize existing trip fields and saved-place references into the shapes its screens expect.
That makes compatibility part of the engineering story: evolving the mobile experience while continuing to work with an established Firebase data model.
What this case study demonstrates
Mobile interface development, multimodal AI processing, external API integration, structured generation, and data-model continuity. The emphasis is on connecting AI output to structured data, real interfaces, and editable product workflows.