| Publication Type | honors thesis |
| School or College | School of Computing |
| Department | Computer Science |
| Faculty Mentor | David Bean |
| Creator | Tokita, Alex |
| Title | Travvy: a circularly integrated travel APP |
| Date | 2025 |
| Description | This thesis documents the purpose, development, and an analysis of Travvy. Travvy is a travel app designed to streamline the entire trip planning process by merging itinerary creation, real-time travel data, and travel content creation (social media) into a single, seamless experience. Travvy solves a significant point of frustration within the travel industry: the messy and disjointed process of gathering trip information, organizing plans, and staying up to date with logistical changes. Because Travvy allows users to be inspired by others' trips, plan their own trips, and then inspire others in turn, Travvy is "circularly integrated," allowing the cycle of trip inspiration and trip planning to continue all within Travvy's travel ecosystem. In application development, I took the role of a backend developer primarily concerned with API endpoint creation, database design, and key algorithms like the social media feed content selection algorithm. I learned many lessons about software development, especially lessons about the importance of coordination, team morale, and DevOps. Then going beyond the application itself and its development, this thesis also analyzes the project with respect to ethical software development and software stewardship. Ethical considerations for the social media feed are explored, particularly with regards to digital addiction. Then, pathways for Travvy to promote ethically conscious travel are also explored, providing perspectives on how software and guide society towards a brighter future. |
| Type | Text |
| Publisher | University of Utah |
| Subject | travel application development; integrated trip planning platforms; ethical software design |
| Language | eng |
| Rights Management | (c) Alex Tokita |
| Format Medium | application/pdf |
| ARK | ark:/87278/s6yfggdj |
| Setname | ir_htoa |
| ID | 2918024 |
| OCR Text | Show TABLE OF CONTENTS Abstract 1 Introduction and Background 2 Introduction to Travvy ……………………………………………………… 2 Team Formation ……...……………….………………………...…………… 4 Inspirations ….………..…………………………….……….……..………… 5 Individual Contributions 8 API and Database Development ….…………………………………………. 8 Developing a Content Recommendation System …………………………… 9 Presentation Lead …………………………………………………………… 10 Software Methodologies and Techniques 12 Agile …………………………….………………………….………………. 12 Tools …………………………….………………………….………………. 12 Issue Tracking ……………….….………………………….………………. 12 Code Reviews ……………….….………………………….………………. 13 Reflection and Analysis 14 Role of Developing Responsible Social Media ……………………………… 14 Lessons Learned Through The Process ……………………………………… 17 Future Directions for Travvy ………………………………………………… 19 Conclusion …………………………………………………………………… 20 References 22 Appendices 23 Appendix A: Feature List …………………………………….……………… 23 Appendix B: Final Documentation (Design Document) …………………….. 26 TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 1 ABSTRACT This thesis documents the purpose, development, and an analysis of Travvy. Travvy is a travel app designed to streamline the entire trip planning process by merging itinerary creation, real-time travel data, and travel content creation (social media) into a single, seamless experience. Travvy solves a significant point of frustration within the travel industry: the messy and disjointed process of gathering trip information, organizing plans, and staying up to date with logistical changes. Because Travvy allows users to be inspired by others’ trips, plan their own trips, and then inspire others in turn, Travvy is “circularly integrated,” allowing the cycle of trip inspiration and trip planning to continue all within Travvy’s travel ecosystem. In application development, I took the role of a backend developer primarily concerned with API endpoint creation, database design, and key algorithms like the social media feed content selection algorithm. I learned many lessons about software development, especially lessons about the importance of coordination, team morale, and DevOps. Then going beyond the application itself and its development, this thesis also analyzes the project with respect to ethical software development and software stewardship. Ethical considerations for the social media feed are explored, particularly with regards to digital addiction. Then, pathways for Travvy to promote ethically conscious travel are also explored, providing perspectives on how software and guide society towards a brighter future. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 2 INTRODUCTION Introduction to Travvy In the digital age, there exists ever-expanding options for obtaining information, sharing information, and interacting with information, and this phenomenon comes to a crux when it comes to the travelling process. Simply put, travel planning and travel itself, in the world of software, is a chaotic journey characterized by too many tools required to accomplish one’s goals. First, social media applications like Instagram, TikTok, and Facebook serve as sparks of inspirations for aspiring tourists’ next destinations. After the seeds of inspiration have been planted, TripAdvisor, blogs, and other travel sites offer their insights into specific places of interest, activities, restaurants, and lodging options. Spreadsheets, document editors, calendar apps, and itinerary planning software offer ways to capture the information and (sometimes) share the plans with fellow travelers. When on the trip itself, flights and spending are tracked with dedicated apps or on-the-fly solutions. And finally, when the trip has concluded and travellers want to share the experience, they revert right back to where they started with the same aforementioned social media applications. On the trip planning side, the process involves jumping from webpage to webpage, switching between a sea of internet browser tabs, and checking one’s favorite social media sources, all while trying to assemble the information elsewhere. On the trip execution side, communication gets messy, even more tools are needed, and remembering where trip information has been compiled becomes a headache. And thus, my team’s capstone project seeks to fill in the existing gap that exists in which there is no obvious, singular software application that fills the entire typical travel experience, spanning from trip conception to execution. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 3 Over the course of nine months — split between CS 4000: Capstone I and CS 4500: Capstone II — I, along with teammates Alex Tran, Marcus Dao, and Rylan Metcalfe, have come together to conceive, design, and implement an iOS travel-app we named Travvy. Travvy seeks to solve the aforementioned qualms of travel planning by offering a circularly-integrated travel information pipeline, meaning the entire travel process — from trip inspiration, to trip planning, to trip collaboration, to trip execution — all takes place within our one application, and content about the trip can then be shared on the same app. For inspiration and content-sharing, Travvy offers an in-app social media experience where users can both view others’ travel content and post their own. For compiling the trip itineraries themselves, users can build customizable, collaborative itineraries for trips that can be viewed and modified by multiple users. Furthermore, users can directly pull from others’ trips by importing activities (or entire trips) directly into their own itineraries. Then, real-time flight data and finance tools offer support for two common trip-going complexities. Thus, the full life cycle of a trip can be facilitated by this single app, Travvy. And through this app, our team hopes to help users “travel smarter, not harder” and “travel savvy” — hence the app’s name: Travvy! This paper’s goal is to document the process, decisions, and personal experience of creating this application, showing how Travvy evolved throughout the year (see Figure 1, showing how the icon for Travvy itself evolved). → Figure 1. Evolution of the Travvy app icon/logo TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 4 In development, we encountered obstacles that eventually taught us valuable lessons about developing software, particularly on a team. We learned that consistent team coordination, attention to team morale, and greater awareness of DevOps practices/techniques are all necessary — even more than we initially anticipated — to the successful development of software as a team. Then, in analyzing Travvy beyond development itself, there’s broader implications that can be considered. Ultimately, because of Travvy’s use of social media and the inherent real-world impacts of tourism, Travvy must consider how to mitigate its negative impacts upon the world. Team Formation The Senior Capstone endeavor began in CS 4000: Capstone I with several initial weeks of team formation in which peers enrolled in the course exchanged project ideas, gauged each others’ competencies, and formed teams around project visions. While many needed to seek out team members that would serve well on their teams, our team had formed prior to the commencement of the course. Alex Tran, Marcus Dao, and I worked desk-to-desk together at our Summer 2024 software engineering internship at Fidelity Investments. Throughout this internship, Tran and Dao worked extensively on front-end development, creating application user interfaces and administrator data dashboards respectively. I worked on backend logic for internal Fidelity applications by setting up database tables, configuring REST API endpoints, and implementing code for the model and controller side of application development. Together, Tran, Dao, and I understood that these skill sets complemented each other (covering both backend and frontend development). So, this fact — along with the already-close friendship between the three of us (all three of us were also CS 2420 TAs), gave way to the confidence that we’d make a formidable capstone team, regardless of the project we’d eventually choose. Meanwhile, our last TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 5 team member, Rylan Metcalfe, was a close friend of Alex Tran, and Tran vouched heavily for Metcalfe’s inclusion on the team, citing Metcalfe’s impressive coding ability and DevOps experience. Metcalfe’s DevOps experience, in particular, convinced Tran, Dao, and me to readily extend an invite to join our capstone team. And with the major software development skill sets well-covered, our team became solidified, and we then collectively began the project brainstorming process. See Figure 2 below, showing the team shortly after forming early in Fall 2024. Figure 2. Team members from left to right: Alex Tokita (me), Marcus Dao, Alex Tran, and Rylan Metcalfe Inspirations for Travvy Inspiration for creating Travvy began with our team members’ love for travel and the desire to incorporate this passion into our capstone project. First and foremost, the entire team could relate to the all-too-common travel planning experience of having dozens and dozens of internet browsing tabs open at a time to plan a trip. What’s more, travel is becoming increasingly valued by young generations, and we felt like existing mediums of sharing travel were too outdated and not well-integrated with the main ways that people consume content nowadays. Most people’s first point of interaction with travel content is social media, not TripAdvisor or other travel agency websites, so why not provide a tool to build trip itineraries directly off of a social media post? And as a last point of inspiration for Travvy as a whole, travel—by itself—is TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 6 deeply beautiful and something we believed could serve as the basis for a visually beautiful iOS app. The specific tools and functionality that Travvy offers was inspired by a variety of sources. First, for me personally, I’ve had experiences where I wanted to track the finances of a trip by having a log that calculates the amount people owe. However, I’ve never had a dedicated software tool for this task, so I’ve always used spreadsheets to do this type of calculating (see Figure 3 below as an example of one such spreadsheet). Thus, this pain-point in the trip planning process inspired me to create this exact tool for others to share and use (and that looks better, of course). And thus, our payment-tracker was born and became a key focal point of Travvy. Figure 3. Inspiration: A real spreadsheet I used to track payments between members of a trip, 2023 For the user interface and user experience (UI/UX) of the Travvy application, our team sought to emulate the elegance and feeling of well-polished native Apple applications and iOS applications in general. In particular, we discovered a new, on-the-rise UI design style called glassmorphism [Interaction Design Foundation, 2021]. Glassmorphism is characterized by its transparent UI panes that exist over the top of colorful, contrasting backgrounds. This style of app design blends well with Apple’s polished stylization, and apps like Luma and AllTrails—which also utilize glassmorphism—inspired the UI design of Travvy as well. As seen TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 7 in Figure 4 below, we sought to emulate glassmorphism by using transparent UI panes over colorful travel-related photos. Figure 4. Travvy, showing inspirations from “glassmorphism” For the social media feed and the “circular integration” link between social media and itinerary curation (the ability to import trips/activities from other people’s posts), our team drew inspiration from the now-discontinued Amazon “Inspire” page [Connolly, 2025]. On Amazon’s mobile app, there used to exist a scrolling video social media feed where content creators could post videos showcasing the products that they had bought. At the bottom of the video would be small thumbnail photos of the items that were showcased in the video, the idea being that viewers could draw inspiration from the creators and look into purchasing those same products. Our team admired the ease through which viewers could access the items shown in the videos, so we tried to do the same with our own social media feed. Thus, in Travvy, at the bottom of all of the social media feed posts, a horizontally scrolling panel of thumbnails shows all of the activities that are associated with the uploader’s trip. So, viewers can easily add the activities from videos into their own trips. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 8 INDIVIDUAL CONTRIBUTIONS API and Database Development Division of labor for team Travvy was divided primarily into two teams: a backend-focused team, consisting of Rylan Metcalfe and myself, and a frontend-focused team, consisting of Alex Tran and Marcus Dao. Then, within the backend team itself, Rylan led DevOps, authorization, development for media processing (for images, videos, and streaming), and added features such as real-time app updates and full-text search. I, on the other hand, was responsible for developing and refining the majority of Travvy’s server-side logic, particularly the database models and API controllers which access/modify the data. For our server, we used Entity Framework Core (EF Core) which simplified database development and management by abstracting away the need to write raw SQL commands to access our Postgres database. Using EF Core, I created models to represent various “entities” within the Travvy backend service, such as entities for trips, itinerary items, payment entries, flights, etc.. Essentially, I implemented models for all of the objects that needed to be referenced by the frontend, totalling 20 models once the project was completed. The communication process for developing these models became critical because the models directly corresponded to the data that the frontend was capable of retrieving and showing to the user. Thus, I repeatedly communicated back and forth with our frontend team to determine what information, exactly, was needed to be sent by the server. Furthermore, because we modified and added to our database as the project progressed, we needed to utilize database migrations to facilitate the transitions between prior database versions and newer ones. So, I became accountable for ensuring that proper migrations were created to enable the safe alteration of database models. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 9 Then, to enable the frontend to access the data stored in the database, I created controllers which created API endpoints for the frontend to utilize. First, I inserted authorization checks (which Rylan setup) to determine the identity of the client and ensure that they ought to be given access to the controls and data associated with the API endpoint. Second, I implemented key server logic for the endpoints such as (1) calculating user balances for the payment tracker, (2) calling external API endpoints such as AviationStack for flight data, and (3) creating conditional logic for various control flows. Third, I wrote code to manipulate the “database context,” using EF Core, to provide CRUD capabilities to the server data. Fourth, I ensured appropriate responses would be returned — in many cases, creating data transfer objects (DTOs) to precisely specify and document the information that’d be sent to the frontend. And lastly, I provided error handling and logging to ensure more understandable errors to the frontend and allow for better monitoring of the server. Through the entire process of API and database development, I tested the code extensively through Postman, and I made frequent modifications at the request of the frontend team. Developing a Content Recommendation System One key feature that I was responsible for was the content recommendation system for the social media feed. The goal was to curate the social feed based on the user’s interactions with prior posts. And so, to accomplish this, I implemented three key components to the backend system. First, I created code that, when a user uploaded a post to the social feed, the server would transform the post’s description into an 1536-dimension vector using OpenAPI’s TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 10 text-embedding-3-small model. This vector is then stored into the database along with the post data itself. Second, I developed code to track interactions of users to create a user-preference vector which represents the type of posts that the user engages positively with. Three types of user interactions are tracked — “liked,” “seen” (meaning the user has viewed the content at least briefly), and “watched” (meaning the user has viewed the content for an extended period of time) — however, only “liked” and “watched” interactions are utilized for calculating a user-preference vector. I weighted “liked” posts to be worth two points and “watched” posts to be worth one point. Then by compiling all of the posts that a user has interacted with, accessing those posts’ vector encodings, and weighting the posts based on the interaction type, I calculate an averaged user-preference vector. The third major step then, is that I use this user-preference vector to perform a vector search, using L2 distance, across all posts to find the most similar posts to what the user has enjoyed in the past. Posts existing closer to the user-preference vector mean that their encodings are more similar to it, so those posts will be shown next to the user. And lastly, “seen” posts are avoided, and random non-seen posts are interwoven into these other posts to allow the system to probe other types of content that the user may be interested in. And altogether, this system allows for users to continuously receive content that mirrors the content they’ve interacted positively with in the past. Presentation Lead Beyond technical contributions, I also contributed through my personal soft skill proficiency by leading presentations, both in preparation and delivery. In preparation for TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 11 presentations, I designed and compiled the majority of slides, ensuring that the flow of information made logical sense and followed a loose narrative structure — oftentimes following (1) opening/introductions, (2) recap of the goals of our project, (3) backend status, (4) frontend status, (5) closing remarks. This helped establish an overhead vision of each presentation, allowing my other teammates to focus on their respective portions of the presentation. Then, when it came time for the delivery of our presentation, I always served as the opening speaker and often served as the closing speaker as well. Thus, I was accountable for setting the tone for our presentations and being the first impression that others have for our team and project. So, to accomplish this successfully, I ensured that every presentation began with fluid, engaging speaking and concise, relatable anecdotes to draw in people’s attention. And to close presentations, I’d end with a slogan and a smile. Thus, by taking a lead role in both the preparation and delivery of presentations, I believe this became a notable personal contribution for myself. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 12 SOFTWARE METHODOLOGIES AND TECHNIQUES Agile For this project, our team used a Kanban-style agile methodology. Kanban is a project management approach that helps teams visualize tasks, limit work in progress, and improve workflows. The main difference between Kanban and Scrum is that Kanban focuses on continuous improvement and flexibility in task management. This means there are no set sprints, a feature that team Travvy valued. Tools The main software applications that our development team used were Rider, Xcode, Docker, and Postman. Rider was be used for implementing the backend in C# and was advantageous because it has built-in debugging and version control tools. Xcode was used for developing the iOS app in Swift. Postman was used to build, execute, and manage backend testing. And Docker was used to create and manage containerized environments, ensuring consistency across development and production. As for libraries utilized, the main libraries used were Serilog (robust logging solution), SignalR (real-time communication), and Entity Framework (code-first database modeling). And lastly, we used Swagger to design and document RESTful APIs, providing a clear interface for backend and frontend communication. Issue Tracking The team used GitLab’s issue board as the centralized location for tracking all tasks. Each issue included a title, description, assignees, time estimates, and relevant tags such as the stage of TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 13 development and area of concern. The board was organized into columns “Open,” “To Do,” “In Progress,” “Code Review,” and “Closed” to visually separate the issues into their task status. Regular updates to issue status were expected to ensure a smooth workflow and collaboration among Team Travvy members. Code Reviews To facilitate code reviews for this project, Team Travvy set up merge requests in GitLab. Pull requests allowed team members to request code reviews from others and check the build status based on the most recent commit. These pull requests were automated for the production branch and were triggered when code was pushed from the dev branch to prod. For each of these requests, at least one member of the team (usually the other team member for the backend or frontend team) reviewed the MR. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 14 REFLECTION AND ANALYSIS Role of Developing Responsible Social Media Social media is dominant in today’s tech landscape. The market is lucrative, and many developers flock to the chance to be a part of large social media giants like Meta, TikTok, and YouTube. However, the ethics surrounding this frontier of software, in my personal opinion, needs to be more carefully considered by those who develop code for these products. The very nature of social media and advertising-based software is simple—to influence people. Thus, software developers should be very intentional about how this influence is wielded. As a travel-planning application with social media features, Travvy has the responsibility to take proper steps toward good, transparent social media stewardship. As it stands, Travvy has taken a few steps in this direction. For instance, Travvy’s social media feed is highly curateable to what the user chooses to give “likes” to, and this gives users more control of the content they see. Many other social media algorithms heavily weight watch-time as the ultimate decider for what content a user sees next. In these systems, the more a user watches a particular type of content, the more of that particular type content they will be served by the recommender algorithm. The result of encouraging more watch-time, primarily, is that this kind of algorithm promotes unhealthy relationships with social media. Instead of being served content that the user has already deemed useful or good—by manually “liking” posts—they are served content that will keep them glued to the screen for longer and longer periods of time. And as a developer seeking to promote healthy, beneficial uses of software, I believe this type of behavior to be exploitative if not corrected for. So, in Travvy, the amount of time a user spends watching a TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 15 social feed post is not measured—only whether the user has seen, watched (for a small fixed duration), or liked the post. That said, Travvy could do much more when it comes to combating the potential addictiveness of its social media features. Guided by the economic incentives for increasing usage time, apps on smartphones inherently invite instantaneous gratification that alters the way we expect discourse, pleasure, and captivation from the world. Marshall McLuhan, in Understanding Media: The Extensions of Man, vehemently argues that the “medium is the message” when it comes to media. That is, the form of media that content resides upon ultimately impacts society and human behavior more than the content itself [McLuhan and Lapham, 1994]. His book was written in 1996, but his argument here still applies to smartphones today. The smartphone allows for infinite exploration and discovery, allowing users to scroll indefinitely and access new, entertainment, and communication instantly. Combined with long-term engagement recommender systems, the smartphone becomes a medium of endlessness. The medium of the smartphone is also heavily influenced by the economy surrounding it in which much of smartphone content is free, except for advertisements. The advertising market thrives on users spending as much time in front of their ads as possible. A person watching hours upon hours on Youtube is a person being exposed to hundreds of ads. A person “doom-scrolling” on their Instagram feed, is a person who’s every interest can be learned and advertised to, with “Sponsored Posts.” As Santiago Giraldo-Luque put it, “From the economic field, the concept of attention is a rising value within cognitive capitalism… thanks to media financed by advertising” [Giraldo-Luque, Afanador, and Fernández-Rovira, 2020]. And in turn, the medium is inherently incentivized to captivate users for as long as possible. More eyes, more time spent, more money. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 16 The result? The social media apps become products of purposeful addiction, just like that of alcohol, tobacco, and other addictive substances/behaviors. To push back harder against these norms, Travvy could employ several techniques for enabling users to be more intentional with their social media usage. First, users could be given direct control over what informs their recommendation algorithm. For example, if they only wanted their “likes” to influence the content that they are served, a user could toggle off the use of “watched” posts within the recommendation algorithm. Second, when users navigate to the social feed page, they could be allowed to set themselves a time limit for how long they’re allowed to scroll for. Existing screen-time-reducing applications like ClearSpace and Opal offer these features for setting time limits on other apps, but in-app, native support for time-limiting features could have much broader utilization [Clearspace, 2023]. And third, encouraging mindfulness and well-being through occasional prompts that interrupt the “doom-scroll” can help refocus users on being intentional with their time. This is supported by research like that of Deniz Cemiloglu who, in “Combatting digital addiction: Current approaches and future directions,” states that when looking at mindfulness exercises, “The findings demonstrated a negative correlation between mindful attention awareness and [digital addiction]” [Cemiloglu, 2022]. Thus, practicing targeted mindfulness is a possible treatment that could be employed, or employed alongside other solutions. Another instance of social media stewardship that Travvy lightly supports is content moderation. Currently, the only content moderation that Travvy supports is the ability to report content, which could be for a variety of reasons including misinformation, harassment, or dangerous acts. Travvy administrators could hypothetically use these reports to delete potentially TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 17 harmful posts from the social feed. However, more could be done in this realm to detect harmful posts automatically to prevent misuse or malicious use of the social feed. And lastly, Travvy ought to have the responsibility for protecting the places that it might direct users to. For example, as travellers get inspired to visit destinations that they otherwise wouldn’t have, or be encouraged to do things they wouldn’t have otherwise done. Thus, Travvy would have direct global impact and should consequently hold itself accountable to the ramifications it may have, especially the negative ones. To mitigate these negative impacts as a travel-based social media platform, Travvy could provide in-app messages supporting responsible tourism practices, it could encourage users to respect local cultures, and it could subtly promote more eco-friendly destinations. All of these techniques, and many others, could help offset harms that Travvy may cause, helping transform Travvy’s social feed into something that is impact-neutral or impact-positive. Lessons Learned Through The Process A hard-learned lesson we gained from this capstone project is the importance of coordination. Despite regular meetings discussing plans and code, divergent visions of features (how features should look, feel, behave, and be implemented) appeared throughout our development process. And what we learned is that divergent visions of the final product can lead to misunderstandings which compound into costly misalignments on code. For our team in particular — with a distinct backend team and a distinct frontend team — these misalignments included: (1) differences in expectations in what displays and controls the frontend would be able to have, (2) differences in understanding how the backend endpoints would be utilized, and (3) underestimations in the effort required for the other team to make feature additions or TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 18 modifications. In each of these circumstances, the misalignments resulted in frustration, lost time, and painful reversions of code. Thus, we learned the importance of precise communication, phenomenal documentation, and check-ins on how feasible certain features and requests are. Additionally, we learned that overall team productivity is highly influenced by team morale. At the beginning of the academic year, as the team was planning out our development goals, we naively anticipated being able to work long hours all throughout the semester, driven by sheer willpower. We thought we’d be able to stick to a consistently rigorous development schedule through self-motivation. But what we learned is that when morale is high, code is produced with better communication and produced faster. Furthermore, team members have a greater quality of life when the team is cooperating well together and excited to work. And on the contrary, when team morale is low, no one wants to code, and development screeches to a halt. And when this happens, morale needs to be nudged in the right direction to get things back on track. For us, sometimes all it took was getting on a call together to work out a tricky bug or to having fun talking about something unrelated to computer science for a few minutes. After that, we’d be right back to working hard together and enjoying the process again. This made us realize the business ramifications for the quality of company culture and why some businesses often put considerable effort into keeping employees happy with perks, gifts, amenities, and other incentives. Beyond soft skills, however, another lesson that my teammates and I grew to appreciate is that DevOps is a hugely important aspect of software engineering that many of us overlooked. Throughout our computer science classes, DevOps has never been at the forefront of the learning objectives; it’s mainly been theory, performance, and the lines of code themselves. However, as soon as it became time to start developing Travvy, it became immediately apparent that DevOps TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 19 knowledge is fundamental to building a usable application from the ground up. Containerization, cloud integration, database configuration, and server setup all came into focus within the first weeks of development, and this is an area many of us were less comfortable in. Fortunately, our teammate, Rylan, has had extensive experience with DevOps through jobs projects. He quickly set up necessary components and guided our team in setting up our development environments. And when development came to a halt due to environment issues, configuration issues, or CI/CD issues, he was able to keep our team’s development momentum trudging forward by quickly resolving them. As the progress of other teams stalled due to these issues, Rylan cleared these obstacles for us. As a result of our virtual dependence on his crucial experience, the rest of our team members learned the depth of our knowledge gaps — gaps which we’re now seeking to fill. Future Directions for Travvy There are many ways for the Travvy app and platform to expand, feature-wise. Features like user-ratings for trip activities, in-app person-to-person payment integration, in-app bookings, multilingual settings, AI-personalized itinerary suggestions, and more options for customization were all features that we considered but did not add due to time constraints. However, in looking at future directions for Travvy, I’d like to examine how Travvy could more broadly move into greater alignment with my personal values and ideals — which I’ve touched upon in the prior section about social media responsibility. To begin, Travvy could help shift the travel industry away from comparison culture in order to benefit people’s mental health. Because travel expenses and experience vary widely, and because people enjoy showing-off their vacations, viewing travel-related content can easily lead to feelings of missing out or inferiority. It can feel like you have to match others’ vacations and TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 20 top them with your own. This issue is not resolved through the existing versions of Travvy. In fact, several features actually may promote comparison culture more in many ways. Being able to import an exact copy of someone else’s itinerary inherently primes the user to want to chase down the exact experience that the original poster had. It doesn’t encourage new, nuanced experiences in travel, and I dislike this aspect of Travvy as it exists. Thus, I have three ideas to move Travvy in a better direction in this regard: (1) promoting stories over stats by encouraging users to reflect on their own personal travel experiences through mindful note-taking; (2) highlighting diverse travel styles including budget travellers, family trips, local vacations, and even “staycations”; and (3) letting users create and join interest-based circles such as “First-time travelers,” “Food lovers,” or “Traveling while introverted” where people can connect over shared experiences instead of compete. Additionally, Travvy can better align with sustainable travel. For example, this could include spotlighting local-owned businesses or even showing the environmental impact of a trip — perhaps with optional carbon emissions estimates or carbon offset suggestions. Travvy could also warn users about over-touristed or environmentally vulnerable destinations, encouraging travel during off-peak seasons or to lesser-known areas. By integrating sustainability into the user experience, Travvy can help shift the culture of travel from consumption toward care—making it easier for users to see travel not just as a personal experience, but as a shared responsibility. Conclusion In conclusion, Travvy has wonderful features that make the entire travel process easier. It’s been built by a dedicated team, and I’ve been fortunate to contribute meaningfully while TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 21 learning countless lessons along the way. That said, Travvy is not perfect. Dealing with social media and tourism, it could be improved by refocusing on ethical social media stewardship and responsible travel. As I've grown in my technical skills through school and this project, I've come to understand that thoughtful software development isn't just about building functional tools—it's also about aligning those tools with ethical principles that prioritize people and the planet. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 22 REFERENCES Cemiloglu, Deniz, Mohamed Basel Almourad, John McAlaney, and Raian Ali. "Combatting Digital Addiction: Current Approaches and Future Directions." Technology in Society 68 (February 2022): 101832. https://doi.org/10.1016/j.techsoc.2021.101832. "Clearspace vs Opal: A Comparative Analysis for Screen Time Management." Clearspace. Last modified November 20, 2023. Accessed April 15, 2025. https://www.getclearspace.com/blog/post/clearspace-opal. Connolly, Brian. "What Is Amazon Inspire?" JungleScout. Last modified January 2023. Accessed April 15, 2025. https://www.junglescout.com/blog/what-is-amazon-inspire/. Giraldo-Luque, Santiago, Pedro Nicolás Aldana Afanador, and Cristina Fernández-Rovira. "The Struggle for Human Attention: Between the Abuse of Social Media and Digital Wellbeing." Healthcare 8, no. 4 (2020): 497. https://doi.org/10.3390/healthcare8040497. Interaction Design Foundation. "What Is Glassmorphism?" Interaction Design Foundation. Last modified December 9, 2021. Accessed April 15, 2025. https://www.interaction-design.org/literature/topics/glassmorphism. McLuhan, Marshall, and Lewis H. Lapham. Understanding Media : the Extensions of Man. Cambridge, Massachussets: Massachusetts Institute of Technology, 1994. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 23 Appendix A: Feature List Rank Feature Status Contributor LoC Estimates Type 1 Basic Swift-based App UI Completed Marcus Dao and Alex Tran 20000 Scratch 1 Database: image and video storage and retrieval Completed Rylan Metcalfe 450 Generator 1 Database: text storage and retrieval Completed Alex Tokita 300 Generator, gluing 1 User profiles Completed Rylan Metcalfe 300 Gluing 1 Retrieval of external data via API calls Completed Alex Tokita 150 Gluing 1 Trip itinerary storage and UI Completed Whole team 2000 Generator, scratch, and polish 2 Public itinerary items Completed Alex Tokita and Alex Tran 200 Scratch, generator 2 Customizable itineraries Completed Whole team 2000 Scratch, testing/CI/API, and gluing 2 Collaborative itineraries Completed Alex Tokita, Rylan Metcalfe, and Alex Tran 700 Generator 2 Scrolling video-based social media feed Completed Rylan Metcalfe 1100 Scratch 2 Itinerary info linked to social feed posts Completed Alex Tran - with help from Alex Tokita 400 Scratch, gluing, generator 2 Real-time flight data Completed Alex Tokita 250 Gluing 2 Budget tool Completed Marcus Dao with help from 400 Scratch TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP Alex Tokita 2 Cost splitting tracking Completed Marcus Dao with help from Alex Tokita 200 Scratch 2 Searching algorithm Completed Rylan Metcalfe 300 Gluing 3 Likes on social feed posts Completed Alex Tokita and Alex Tran 3 Comments on social feed posts Completed Alex Tokita and Marcus Dao 40 Scratch, generator 3 Reporting user-generated content Partial (just needs button added) Alex Tokita and Rylan Metcalfe 150 Scratch, generator 3 Flagging inaccurate information Partial (just needs button added) Alex Tokita and Rylan Metcalfe 150 Scratch, generator 3 Sharing Travvy itineraries, posts, and activities via external channels Dropped 3 Archiving Travvy itineraries, posts, and activities Dropped 3 Public activity tags Completed Alex Tran 100 Scratch, generator 3 Personal activity notes Completed Alex Tran 150 Scratch, generator 3 Publishing of specific trip activities Completed Alex Tran 250 Scratch, generator 3 Map view of itineraries and activities Completed Alex Tran 400 Scratch, generator, gluing 3 Animations and haptic feedback Completed Alex Tran 150 Polish Scratch, generator 24 TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 3 Entire UI rehaul/upgrade Completed 3 Display probability of flight delay predictions Dropped 3 Intertwined itineraries Dropped 3 Social media feed content algorithm 3 25 Alex Tran 7500 Scratch, Polish Added Alex Tokita 450 Scratch, testing/CI/API, and gluing AI destination explanation Added Alex Tokita 150 Gluing 3 Social media uploading Added Marcus Dao 400 Scratch, polish 3 Profile images Added Marcus Dao 100 Gluing, testing/CI/API 3 Backend Thumbnail Generation Added Rylan Metcalfe 200 Scratch 3 Realtime Presence Added Rylan Metcalfe 540 Scratch 3 Social Feed rework and prefetching/cachi ng Added Rylan Metcalfe 700 Scratch/Polish 3 Full Text Search View Added Rylan Metcalfe 170 Scratch/Polish 3 Frontend animations to loading views Added Rylan Metcalfe 480 Polish 3 Backend Content Stocking Added Rylan Metcalfe 1,100 Scratch TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 26 Appendix B: Final Documentation (Design Document) 1.1 Executive Summary ——————————————— Travvy is a travel app designed to streamline the entire trip planning process by merging itinerary creation, real-time travel data, and travel content creation into a single, seamless experience. It will allow individual travelers and group travelers, especially those that are tech savvy, to plan and manage their adventures with confidence, efficiency, and organization. Travvy solves a significant point of frustration within the travel industry: the messy and disjointed process of gathering trip information, organizing plans, and staying up to date with logistical changes. By providing a single app for all of these different needs, Travyy simplifies the travel experience and lets users focus on the enjoyable aspects of travel, not the ones that cause headaches. Key Features: ● Collaborative and customizable trip planning ○ Invite friends, family, and all your fellow travelers to collect ideas, co-create trip itineraries, and view the final shared itineraries. Using Travvy, everyone gets a say! ● Travel social media feed ○ Use Travvy to search for travel ideas, locations, and activities, all without having to leave the app. Content creators post to the app, and people can use the content to plan their itineraries. Then, if the trip goes well, people post their tailored itineraries, and the cycle continues! ● Real-time travel data ○ Access live updates on flights, weather, local events, and more. Travvy lets the user adapt plans, even on the go. ● Budgeting tool ○ Easily plan trip costs and split the resulting costs among fellow travelers. ● Personalized recommendations ○ Using data from past itineraries, browsed social media content, and customizable filters, Travvy will present the travel information and suggestions that are most-relevant to the use TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 27 2. Background & Technical Requirements ——————— 2.1 Overview of Idea Space Planning a trip is difficult. There are many moving parts all in which need careful attention to detail. From researching destinations, booking accommodations to buying flights, and coordinating plans with friends or family, the process is stressful and time consuming. Travvy addresses this issue by offering an all encompassing platform that streamlines travel planning, accommodations, transportation, and itinerary management into a single, user-friendly interface. Travvy has many key features that aim to make travel planning easier. The first is centralized travel management. This means all the necessary information in a single place. This includes info such as flights, hotels, itineraries, etc. Additionally, Travvy will simplify group coordination by enabling users to share itineraries and update plans in real times with others. This will cut down on miscommunication and ensure smooth collaboration between users. Travvy will also try to tackle another common pain point for travelers which is budgeting. The app will include a budgeting tool that will help users track expenses and will allow for cost splitting among groups. This will make it so that there is no more confusion in splitting costs when traveling in a group. Furthermore, Travvy will contain a social media aspect in which users can share their itineraries with others. This will make it easier for travelers to find ideas for their trips instead of planning everything themselves. There are many key user groups that Travvy aims to target. The first are group gravelers which will appreciate being able to easily coordinate plans and itineraries with others in their group. The second are budget conscious travelers who will benefit from the cost splitting and cost tracking feature. The last are young travelers who are more accustomed to using digital solutions for organization. Overall however, Travvy aims to be used by all travelers. Travvy has several competitors that are based on similar ideas. The first is Wanderlog which has collaborative planning and maps, but lacks real time updates. There is also TripAdvisor which is well known for being able to research activities and restaurants, but does not offer any comprehensive itinerary planning. Another is TripIt which consolidates trip details and provides real time notifications, but lacks a solid interface and has limited social features. The last are spreadsheet and calendar applications which offer full flexibility, but lack any features designed for travel planning. What sets Travvy apart is its all in one platform, which will integrate itinerary management, budgeting, and group coordination features. The group trip management and real time updates makes organizing trips more seamless while the budgeting tool ensures financial planning is incorporated into the process. All these features bundled into an easy to use app with an intuitive and attractive user interface is what distinguishes Travvy. Overall, Travvy offers a comprehensive solution for travelers seeking a streamlined, collaborative and personalized travel planning experience. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 28 2.2 Required Technology In order to properly provide a robust experience to users allowing them to view real-time flight data, booked accommodation, activities, excursions, and more, the app targets users with iPhone 12 and above running iOS 17 and provides comprehensive tools for planning and managing trips. Travvy will utilize cutting-edge APIs for airline data, real-time updates, and seamless user experiences, focusing initially on iPhone devices before expanding to other Swift capable platforms. The backend infrastructure leverages ASP.NET, PostgreSQL, and Azure cloud platform to ensure scalability and reliability. Existing Products There are several applications that provide a similar experience, such as Flighty, which focuses solely on flight tracking and uses its own flight data API. Travvy will differentiate itself by offering not only real time flight tracking but also a suite of tools for booking and customizing entire trips, including tracking accommodations, activities, excursions, and more all within a single platform. While some apps like Flighty rely on some proprietary APIs, the plan is to leverage platforms like AirLabs and AviationStack during the prototyping phase to see which provides the most accurate and up-to-date data for the app’s needs. Technologies and Skills The following technologies will be used: ● Swift and Swift UI provides a robust and native application experience for users. As Apple users, the team wanted to scope the application to a platform that is familiar in order to provide the best experience for users as well as the team. ● ASP.NET will be the backend API service handling everything from user authentication, travel log updates, and even real time event streaming to user’s devices. ASP.NET is also extremely well optimized, can run anywhere, and has stellar documentation making it a very versatile platform to build on. ● Azure App Service is Microsoft’s cloud platform. As ASP.NET is a Microsoft created framework it has first class support on Azure via their App Service system. When paired with the GitLab CI/CD, it will make deploying applications easy. ● Azure Blob Storage will provide block object storage allowing for the ability to store images, videos, files, and more in a seamless way for users. ● GitLab will provide both code storage (via git) as well as CI/CD pipelines allowing for the ability to keep track of code changes as well as automate testing and deployments. ● PostgreSQL is an open and robust SQL database providing extremely solid features like full text search, transactions, and more. This will store all of user records, travel itineraries, and social media feed information. ● AirLabs and AviationStack APIs will provide the team with real time flight status updates even down to the coordinates of the plane. The team plans to test both during the Prototyping phase to see what works better. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 29 2.3 Software/hardware To fully benefit from the comprehensive travel planning platforms, end users need to ensure they meet a few basic software and hardware criteria. By meeting these specifications, they can take full advantage of the app’s diverse and robust features such as booking flights and accommodations, managing itineraries, and receiving real time updates. These requirements are relatively straightforward and easily accessible to a broad audience, ensuring widespread compatibility. Software Requirements ● iOS (iPhone operating system) - mobile operating system developed by Apple ○ iOS Version: At minimum, users must have iOS 17 or later installed on their iPhone in order to ensure compatibility with Travvy. The team plans to leverage new cutting edge features of iOS devices such as LiDAR, Live Activities, and Apple Intelligence. Hardware Requirements ● iPhone ○ Minimum model: Users will be able to access core features with an iPhone XR and later models. This is the oldest iPhone that supports iOS 17. ■ For LiDAR related features, an iPhone 12 Pro is necessary for enhanced location services. ■ For Apple Intelligence related features, an iPhone 15 Pro is necessary to take advantage of Apple’s advanced artificial intelligence which will provide users with more personalized trip recommendations. Installation ● App Store ○ The App Store is the official platform for downloading apps on Apple devices. Downloading the app is as simple as searching for ‘Travvy’ and tapping the ‘Get’ button to download the app. Once the installation is complete, users will have full access to the app and can begin their travel planning journey. To ensure broad accessibility, the travel planning app is designed with a low barrier to entry, allowing all customers to enjoy essential functionality, regardless of hardware or software age. At the same time, support for the latest, cutting-edge features on newer devices enables the app to continuously evolve, delivering a richer experience for users with the most up-to-date technology and positioning it at the forefront of future advancements. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 30 3. Requirements Analysis —————————————— 3.1 System Architecture In order to build a robust multi-user travel planning platform, the project will need to have a solid system architecture. For the project’s backend application, it will be written in ASP.NET as it is the preferred language among the Travvy Team, and it provides strong documentation for a variety of use cases. This backend service is called Travvy ATC (Air Traffic Control). For hosting, the project will move forward with a variety of AWS services: Elastic Beanstalk (via Docker Images) for easy application deployment, EC2 for application compute, AWS RDS with PostgreSQL as the database for exceptional performance and features like full-text search, AWS S3 for image and video storage, and AWS API Gateway to help connect the client application. For the frontend, a native iOS application will be built with Swift and Swift UI. Communication with the backend will be via a custom REST API and SignalR for real-time updates. Lastly, to gain up-to-date flight information, the plan is to leverage AviationStacks data via their developer API, handled by Travvy ATC. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 31 3.2 Personnel Marcus Dao - Marcus has experience in working in backend development and is also interested in learning Swift mobile app design. He will be responsible for: ● Developing views and handle data integration with the backend APIs ● Working on user flows for viewing, editing, and saving itineraries and profiles ● Mobile app testing to ensure compatibility with backend endpoints for seamless data flow Rylan Metcalfe - Rylan has a strong background in DevOps as well as multiple frameworks and technologies. Specifically, he is especially strong in using ASP.NET Core, Swift, and React. He will be working on: ● Leading the API development, building core services for data access and business logic ● Integrating Azure blob storage ● Deployment and monitoring ● Environment setup ○ Configure ASP.NET Core, Redis, and Postgres within Docker ○ Set up Azure Blob storage for asset management and create API keys or secrets ○ Set up initial Swift/Swift UI project files. ○ Set up initial ASP.NET backend Alex Tokita - Alex is well rounded and has experience in working with both backend and frontend languages. He also has experience in authorization and security. He will be responsible for: ● Supporting backend development, focusing on API endpoints, data validation, and authentication/authorization mechanisms ● Defining database schema in Postgres ● Implementing Redis for stateless architecture ● Serving as the coordinator between backend and frontend data handoffs Alex Tran - Alex has experience and is interested in working with user interfaces, user design, and frontend frameworks. He also has experience in mobile app development but in Kotlin/Android and will be responsible for: ● Leading design for user-friendly Swift UI screens ● Establishing UI guidelines and a component library in Swift UI ● UI testing on components such as forms, lists, etc TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 32 3.3 System Features Rank 1: Infrastructure and Core Functionality: ● Basic Swift-based App UI ● Database: image and video storage and retrieval ● Database: text storage and retrieval ● User profiles ● Retrieval of external data via API calls ● Trip itinerary storage and UI Rank 2: Planned Features: ● Public itinerary items ○ These itinerary items will be the searchable versions which are publicly displayed. ● Customizable itineraries ○ The ability to create customizable modules that can capture various elements of the trip such as train tickets, places to visit, restaurant reservations, etc. An itinerary can contain multiple of these modules. ● Collaborative itineraries ○ The ability for multiple users to share an itinerary and both add/remove activities from the itinerary. ● Scrolling video-based social media feed ○ A page with a scrolling short-form content social media feed for travel-related content. ● Itinerary info linked to social feed posts ○ Each post on the social media feed, viewers of that content will be able to see a list of all of the trip activities that are associated with the post. Furthermore, the poster’s entire itinerary (if made available) will be viewable as well. ● Real-time flight data ○ Flight information from the user can be entered into the app. Then, the flight-info page will populate with real-time data (using API calls) for the corresponding flights. ● Budget tool ○ The ability of users to log expenses visualize their spendings as a whole and in respective categories. ● Cost splitting tracking ○ System to keep track of all paid expenses for and what costs need to be split. Additionally, users will be able to notify others that each traveler needs to pay. ● Searching algorithm ○ Itinerary items will be searchable by providing the destination of interest and other filters. An algorithm to compile search results will be needed. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 33 Rank 3: Advanced Individual Features (Bells and Whistles): ● Likes on social feed posts ○ User ability to like social feed posts. Like counts will be publicly displayed. ● Comments on social feed posts ○ User ability to comment on social feed posts. Comments will be publicly displayed in a comment section. ● Reporting user-generated content ○ User ability to report any inappropriate or harmful posts, comments, or other user-generated content. ● Flagging inaccurate information ○ User ability to flag any activity blurbs, tags, or other non-social media info for inaccuracies. ● Sharing Travvy itineraries, posts, and activities via external channels ○ Support for embedding Travvy into other web/mobile applications. ● Archiving Travvy itineraries, posts, and activities ○ User ability to archive their creations to achieve privacy without full deletion, as well as profile curation. ● Public activity tags ○ User ability to provide tags/labels to activities to indicate to the public of any special quirks. This can include warnings for heavy presence of pickpockets, crowdedness, etc. ● Personal activity notes ○ User ability to add their own notes attached to activities for future reference ● Publishing of specific trip activities ○ User ability to publish only specific trip activities rather than the entire itinerary at a time. ● Map view of itineraries and activities ○ A page allowing for users to view all their current itineraries and activities onto a geographic map to view the breadth of their adventures. ● Display probability of flight delay predictions ○ Leverage existing machine learning models to predict the likelihood a flight will be delayed. ● Intertwined itineraries ○ Support for itineraries that may diverge and converge at various points, allowing for users to split up at times. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 34 4. Software Engineering Tools and Techniques —————— Agile For this project, Team Travvy will use a Kanban-style agile methodology. Kanban is a project management approach that helps teams visualize tasks, limit work in progress, and improve workflows. The main difference between Kanban and Scrum is that Kanban focuses on continuous improvement and flexibility in task management. This means there are no set sprints, a feature that team Travvy values. Tools IDEs : The main software that team Travvy will use includes Rider, Xcode, Docker, and Postman. Rider will be used for implementing the backend in C# and is advantageous because it has built-in debugging and version control tools. Xcode will be used for developing the iOS app in Swift. Postman will be used to build, execute, and manage backend testing. Docker will be used to create and manage containerized environments, ensuring consistency across development and production. Main libraries: The Travvy backend service utilizes several external libraries to help with development as well as to provide a feature rich experience for Travvy users. Some of the main libraries in use are Serilog (robust logging solution), SignalR (real-time communication), and Entity Framework (code-first database modeling). As for the frontend, Swift provides many built in tools within the framework to help with the various requirements of the application. Swagger/Postman: Swagger will be used to design and document RESTful APIs. This will provide a clear interface for backend and frontend communication. Postman will complement Swagger by allowing API testing and automation. These tools ensure all API endpoints are thoroughly documented and tested for reliability. Testing Plans and Tools: Consistent and automated testing is important to help maintain a stable codebase. The GitLab pipeline will automatically test new commits as they come in and notify of test failures in the designated communication channels. Team Travvy will also confirm every commit passes necessary tests before committing code changes. For testing frameworks, the frontend will use Swift Testing, and the backend will use NUnit for ASP.NET. Bug Tracking: Team Travvy will use GitLab’s issue board to track bugs. Each bug report will be tagged accordingly in separate issues with a clear title, steps to reproduce, and expected vs. actual behavior. There will be tags such as “Critical,” “High,” “Medium,” and “Low.” indicating the severity of each bug. At each team meeting, new bug reports will be evaluated by the team to determine when fixes need to be created. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 35 Versioning: Team Travvy will use Semantic Versioning for the versioning solution. Using Git tags, a commit can be labeled in the semver format “vX.Y.Z” where X is the major version number, Y is the minor version number, and Z is the patch version number. The GitLab CI/CD pipeline uses this to properly label docker images and deploy to the cloud environment. Issue Tracking: Team Travvy will use GitLab’s issue board as the centralized location for tracking all tasks. Each issue will include a title, description, assignees, time estimates, and relevant tags such as the stage of development and area of concern. The board is organized into columns “Open”, “To Do”, “In Progress”, “Code Review”, and “Closed” to visually separate the issues into their task status. Regular updates to issue status are expected to ensure a smooth workflow and collaboration among Team Travvy members. Code Reviews To facilitate code reviews for this project, Team Travvy has set up pull requests in GitLab. Pull requests allow team members to request code reviews from others and check the build status based on the most recent commit. These pull requests are currently automated for the production branch and will be triggered when code is pushed from the dev branch to prod. For each of these requests, the entire team will review the MR. Documentation Solid documentation will be at the heart of Team Travvy. GitLab Wiki pages, which will serve as the team’s global documentation, will be used on a discretionary basis. However, its use is encouraged for complex systems, system coordination, and inner-team reminders. Any new Wiki pages that are created should be announced to the team virtually or in-person. Furthermore, if a teammate requests that another teammate creates documentation for a specific piece of code (written by the latter teammate), the latter teammate shall do their best to meet that request. The team will give considerable effort to creating easily-readable code, which means a commitment to code commenting. In-line comments will be inserted for any code that is not self-explanatory. Header comments will be inserted for all methods. At a minimum, header comments should include a brief description of the method’s purpose. Furthermore, the team will be a ‘comment-first’ team, meaning team members will make an effort to make comments for their code before fully implementing said code. This will make it easier for people to pick up where others left off if someone is unable to complete a certain task. Team Communication Team Travvy’s primary virtual communication method will be a Discord server. There will be three primary text channels: General, Backend, and Frontend. These will be the main form of virtual communication for clarifying questions, simple coordination, and quick updates. If a team member is explicitly ‘mentioned’ in a Discord method, it is expected that they will reply to the message within 12 hours (but earlier is preferred). TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 36 For more intensive conversations, the team’s preferred method of communication is voice call or in-person conversation. For urgent or casual matters, team members can be reached via text message or phone call. The team has all shared phone numbers with each other. Work tasks will be explicitly written and organized into the team’s GitLab issue board. Issues should be given time estimates, assignees, tags, a milestone, a due date, and a brief description. Team members are expected to complete tasks by their assigned due date. Otherwise, the team should be notified so that support can be provided as needed. Team Meetings Team Travvy plans to meet, at a minimum, twice a week. The first and primary meeting will be on Monday evenings at 5:00pm. This Monday meeting will serve as a standup/scrum meeting where the team provides updates on their most recent work, what they need support on, and what their upcoming week looks like. When possible, this meeting will take place in-person at the Marriott Library. However, on days when an in-person meeting would not be beneficial, this meeting will take place online via Zoom or Discord. The second meeting will be a check-in meeting on Thursdays at 7:00pm. In this meeting, the team will collaborate on any tricky issues that are blocking progress, and will reassign new work if necessary. This meeting will typically be held virtually via Zoom or Discord. If, for any valid reason, a teammate has to miss a planned meeting, that teammate will contact the team at the earliest possible notice. If possible, the absent teammate should also communicate any work updates virtually. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 37 5. Timeline ———————————————————— Alex Tokita Alex Tran Marcus Dao Rylan Metcalfe Alpha WK1 Setup testing suite for backend controllers. Refactor code to be more modular, rather than hard coding styles. Redesign login page to fit with glass morphism style. Add Aviation Stack client support to backend Alpha WK2 Add support for cloud-based blob storage within Azure. Fix screen tearing when navigating outside of activity detail. Add functionality to send images to the database when creating trips. Create endpoints to fetch and update on live flight information Alpha WK3 Create UPDATE endpoints for existing DB tables. Update navigation bar to take to the root page no matter how far into navigation. Display the activity’s address on the preview. Start work on APNS (Apple Push Notification Service) notifications. Alpha WK4 Implement collaborative trips for backend with API endpoints. Add support for taking in location details for the trip. Expand on activity detail view to include more information. Help frontend with implementations of backend API calls in the app. Beta WK1 Implement budgeting tools for backend with API endpoints. Add functionality for creating activities. Add support for integration with flights and other travel information. Add support for streaming videos for social feed via HLS. Beta WK2 Add support for itinerary item tags. Create social feed DB tables. Refine UI sketches and meet with backend to discuss social media aspects. Implement user profile settings page. Implement HLS streaming service on frontend app. Beta WK3 Implement social feed for backend with API endpoints. Begin work on social media feed views. Take in trip information and provide fun stats similar to Spotify Wrapped. Implement the first SignalR Hub for real time notifications. Beta WK4 Implement social feed for backend with API endpoints. Further refine social media feed to mimic TikTok/Instagram. Adapt trip code to support collaborative trips. Begin frontend real time update implementation for SignalR. Final WK1 Begin implementation of a search algorithm Create a view for users to curate their social media posts. Develop a frontend for the budgeting tool between the Implement real time SignalR support in frontend TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP for itinerary items. users in a trip. trips view. 38 Final WK2 Complete implementation of a search algorithm for itinerary items. Customize map to show lines connecting between activities. Conduct user feedback surveys to assess any unintuitive aspects of UI. Implement real time signalR support in frontend home view. Final WK3 Implement backend support for integration with Google Calendar to sync trip plans. Suggest activities based on current trip information. Make necessary changes to the UI (based on survey) for better user experience. First pass of bug fixes and quality control for backend and frontend. Final WK4 Bug fixes and quality control for the backend. Add animations between view transitions. Frontend work for integration with Google Calendar to sync trip plans. Final pass of bug fixes and quality control for backend and frontend. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 6. Appendix A: UI Sketches ————————————— Budgeting Feature Sketch 1A Sketch 1B Sketch 1C 39 TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP Social Media Feature Sketch 2A Sketch 2B Sketch 2C Itinerary Creation Feature Sketch 3A Sketch 3B Sketch 3C 40 TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP Profile/Home View Feature Sketch 4A Sketch 4B 41 TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 42 7. Use Cases ———————————————————— Number Title Use Case 1 Customizable Modules Preparer Alex Tran Actor/User Detail-Oriented Planner User Story As a traveler, I want to create customizable modules where I can save and organize different elements of my trip, such as train tickets, restaurants, places to visit, or personal notes. This will allow me to easily collect and categorize all the information I need for my journey in one place, which I can reference or modify at any time. Course of Events 1. The user selects the option to create a new module within the app. 2. The user names the module. 3. The user adds content to the module by either uploading files, entering text, linking websites, or attaching other resources such as photos, tickets, and addresses. 4. The user can assign tags or categories to the module to help with organization and easy searching later. 5. The user can organize the content within the module by dragging items to reorder them, creating sections, or adding notes and comments for each entry. 6. The module is saved in the user’s itinerary and is easily accessible for reference or modification. 7. The user can edit or delete modules at any time, adjusting content, tags, or the structure of the module as needed. Exceptions/ Alternates 1. If the user doesn’t name the module, the app assigns a default name "Untitled Module", with an option to rename it later. 2. If the user doesn’t categorize or tag the module, the module is saved under a default “Miscellaneous” category. 3. If the user attempts to upload unsupported file types, the app will notify them and suggest supported formats or provide an option to convert the file. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 43 4. If the user adds incomplete or invalid information, such as an invalid URL or missing fields, the app prompts them to complete or review the details, but still allows them to save the module with placeholders if they prefer to update later. 5. If the user tries to create duplicate modules (such as the same name), the app will notify them and offer to merge the information or rename one of the modules. Related UI See Sketch 3B and 3C Number Use Case 2 Title Link Flights Preparer Alex Tran Actor/User Organized Traveler User Story As a traveler, I may have multiple connecting flights across different airlines, so I want to be able to link these flights together in my app. This way, I can easily track and manage my entire journey, receive updates about each flight, and ensure that I have enough time between connections. Course of Events 1. The user selects the option to add flights to their trip itinerary. 2. The user inputs flight details, such as flight numbers, departure and arrival times, and airlines. 3. The app prompts the user to link connecting flights by identifying layovers or offering the option to manually add additional flight legs. 4. The user links the flights together to create a seamless journey across different flights or airlines. 5. The user can edit flight details or unlink flights at any time in case of changes, such as flight cancellations or rebookings. 6. The app displays the full flight itinerary as a single, connected journey, with clear time gaps between flights. 7. The user receives notifications or updates on any changes (e.g., delays or gate changes) across the linked flights. TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 44 8. The user can view a summary of the entire journey, including layover times and travel durations for easy reference. Exceptions/ Alternates Related UI ● If the user enters overlapping flights (i.e., two flights scheduled at the same time), the app will notify the user and allow them to resolve the conflict by adjusting or removing one of the flights. ● For flights across different time zones, the app will automatically adjust and display flight times in the correct local times for both departure and arrival, ensuring the user has accurate information for layovers and connections. ● Handling changes in flight details: If the airline changes the flight number, departure time, or gate, the app will automatically update the linked flight itinerary with the new information. ● If the user enters a flight that doesn’t exist (such as an invalid flight number or a flight that isn’t scheduled), the app will notify the user that the flight cannot be found. The user will be prompted to verify the flight details or manually enter custom flight information if they wish to keep it in the itinerary. See Sketch 3A TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP Number Title 45 Use Case 3 Travel Dashboard Preparer Rylan Metcalfe Actor/User Constant Traveler User Story As a constant traveler I am always planning my trips well in advance. Similarly I want to be able to see at glance all of my upcoming trips, their dates, and their statuses. This way I can stay organized and keep up to date on the latest information for my trips. Course of Events 1. User creates trips (via the creation flow) or joins an existing trip 2. User populates trip with Flight, Accommodation, and activity information 3. User opens home page and can see all their trips at a glance Related UI See Sketch 4A Number Use Case 4 Title User Settings Preparer Rylan Metcalfe Actor/User Customized Traveler TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP User Story Course of Events Related UI 46 As an avid Travvy user, I want to be able to edit my profile, customize notifications, and even set the appearance to my liking as I have my own preferences on when to be notified and the aesthetics of the apps I use. 1. User has logged in or created an account 2. User opens settings See Sketch 4B TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 47 Number Use Case 5 Title Track Budget Preparer Marcus Dao Actor/User Budget Limited Traveler User Story As a traveler, I have a set amount of money that I want to spend, so I want to be able to log my expenses, and be able to see what I have spent on things such as activities, housing, flights, food, etc during my trip. Course of Events 1. The user prepares a list of events (activities, flights, restaurants, etc.) for their trip. 2. The user officially creates an itinerary within the app by adding the planned events. 3. The user assigns monetary values to each event either during event creation or later, by editing the event details. 4. The user tags events with categories (e.g., housing, food, transportation) during or after event creation. These categories help break down the budget. 5. The user can access the money tracker tool to view the total amount spent so far on the trip. 6. Expenses are displayed by category (based on the tags applied to events), allowing the user to see how much they’ve spent on each type of activity (e.g., food, flights, housing, etc.). Exceptions/ Alternates Related UI ● If the user doesn’t categorize an event, it could be assigned to a default “miscellaneous” category to prevent untagged expenses. ● If an event has no monetary value, it can still be added to the itinerary without affecting the budget. ● Handling currency differences: If the trip involves multiple countries, the app could automatically convert currencies or allow the user to input conversion rates. See sketch 1B TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP Number Use Case 6 Title Budget Split Preparer Marcus Dao Actor/User Greedy Group Traveler User Story Course of Events Exceptions/ Alternates Related UI 48 As a group traveler, often for each event/activity/booking, my group does not want to pay separately for everything. One person will pay, and then get paid back later by the others in the group. So often, I have been paying for different things such as the flights and different restaurants, but these are expensive. I want a system to keep track of everything I paid for and what costs need to be split. I also want to be able to notify others that they need to pay me back, so that I can get my promised money back. 1. A user adds an event to an itinerary. 2. When creating the event, they add the monetary value and include dependents/other users in the group for that event. 3. The user specifies who paid for the event and checks an option for pay back. 4. The user can view a money tracker tool to see what events they have paid for and who still owes them money. 5. The user can click a "notify" button to send a payment request to dependents in the group. ● Allow the system to be able to split among multiple users. If more than one user shares the bill, the cost should be split accordingly among the group. See Sketch 1A and 1C TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP Number Title 49 Use Case 7 Scrolling Video Social Media Feed Preparer Alex Tokita Actor/User Traveler Who Gathers Trip Plans from Social Media User Story As a traveler who would typically turn to Instagram or TikTok for trip inspiration and browsing, I want to be able to scroll through travel-related videos, like videos I enjoy, and comment on the videos, so that I can take inspiration for my own travel plans, see neat videos, and be incorporated into the online travel community. Course of Events 1. Tapping a tab within the UI brings the user to the social feed screen 2. A video, as chosen by a recommender algorithm, begins playing immediately (with sound off by default). 3. The user can pause the video by tapping the middle of the screen at any time. 4. The user can go to the next video by swiping upwards on their screen. 5. On any video, a user can tap the like button or the comment button to like or comment on the video. Exceptions/ Alternates ● Adding report button … see TBD ● Adding itinerary imports .. see use case 4 ● Adding recommender algorithm … see TBD Related UI See Sketch 2A Number Use Case 8 Title Easy Imports of Creators’ Individual Activities or Whole Itineraries TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP Preparer Alex Tokita Actor/User Traveler Who Gathers Trip Plans from Social Media 50 User Story As a traveler who is used to having to switch between applications constantly to first find and then document flight plans, I want to be able to easily import flight plans from content found within the social media feed, so that the trip planning process can exist entirely within one app. Course of Events 1. At the bottom of social feed posts, there will be a horizontally scrolling set of icons that each represent an itinerary item for the presented trip. 2. By clicking on any individual icon, you can see more information on the activity and also have a button to import it into your own itinerary. 3. By long-clicking on any individual icon, you can have a button to quick-import the item. 4. A button along the right-side of the social feed posts will allow you to see the entire post’s itinerary and allow for importing of the entire itinerary. Exceptions/ ● Saving itineraries and activities (rather than immediately importing them) … see TBD Alternates Related UI See Sketch 2B and 2C TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 51 8. Design Doc Revisions ——————————————— Overall ● Created title page including team name, team members' names, and a logo for the project ● Font styling changes for consistency 1. Executive Summary ● Removed use of first-person pronouns (e.g. “we” and “our”) ● Edited formatting so that it is consistent with the rest of the document ● Ensured placement of contents into relevant sections ● Refined sectioning to appropriately assist the reader 2. Background ● Removed use of first-person pronouns (e.g. “we” and “our”) ● Edited formatting so that it is consistent with the rest of the document ● Justified content on page ● Ensured placement of contents into relevant sections ● Refined sectioning to appropriately assist the reader ● Made grammar fixes 3. Requirements Analysis ● Justified content on page ● Updated individual responsibilities to be closer in line with team members’ now-established roles ● Removed “Activity Card” feature since the team has decided to pivot towards solely allowing for itinerary items ● Added “Searching Algorithm” feature since the team wants to incorporate a way to browse potential itinerary items ● Added “Intertwined Itineraries” feature based on feedback from Demo Day 4. Software Engineering Tools and Techniques ● Edited formatting so that it is consistent with the rest of the document ● Changed “PR” to “MR” 5. Timeline ● No revisions made for this section 6. Appendix A: UI Sketches ● Added a small description/caption for each UI Sketch TRAVVY: A CIRCULARLY INTEGRATED TRAVEL APP 7. Appendix B: Use Case ● No revisions made for this section ● Sorted use cases based on priority order 8. Appendix C: Revisions ● No revisions made for this section 52 |
| Reference URL | https://collections.lib.utah.edu/ark:/87278/s6yfggdj |



