Way Home — Find the safest route to your desired destination!

TechLabs Ruhr
6 min readOct 8, 2023

This project was carried out as part of the TechLabs “Digital Shaper Program” in Dortmund (summer term 2023).

In a nutshell:

The concept of Way Home emerged from a pressing concern for the safety and well-being of individuals, particularly women, during their commutes. Alarming statistics and anecdotal evidence point to a gap in available solutions for ensuring personal safety while traveling.

To address this gap, we implemented a web application that enables users to connect with fellow travelers during their commutes via a chat feature powered by a high-speed Redis in-memory database, ensuring immediate communication.

Accessing our application is made possible through OAuth 2 authentication via GitHub and Google, provided by the NextAuth library. This streamlines login, boosts security and improves the overall user experience by eliminating the need for users to provide credentials.

Methodology:

To improve our project organization, we introduced a simplified version of Scrum, an agile project management framework commonly used in software development. This approach involved dividing our work into small, time-bound iterations known as sprints, each lasting two weeks.

For task management and visibility, we chose ClickUp as our project management tool. Within ClickUp, we used a Kanban board to monitor the real-time status of each task:

In the first column “In Preparation” we kept tasks that did not meet the “Definition of Ready”. According to Scrum such tasks should be kept outside the sprint backlog. However, as our team lacked a product owner, designer, or requirements engineer, we adjusted the framework and prepared the tasks during the ongoing sprint.

Once a task was already prepared, it was moved to the “To Do” column. From there, it could be already taken up by a developer.

In the “In Progress” column, we managed tasks actively being worked on. Once the code for a particular task like the implementation of the footer was done and was already in the dedicated branch, the developer assigned to this task opened a pull request, moved it to the “Dev Test” column and assigned it to a different developer for a code review.

If the reviewing developer found no issues during the code review, the task was moved to the “In Test” column. Successful testing without any bugs allowed the task to be marked as “Done”. If any issues were discovered, the task was moved back to the “To Do” column, along with a comment describing the bug.

This approach allowed us to learn from the code written by other team members and receive feedback on the code we wrote ourselves.

Initial Scope of the Project

Given the project’s extensive scope, described in the project idea description, we had to define a set of core features achievable within the given timeline.

The USP (unique selling proposition) of our application was a route recommendation system based on data such as streetlight coverage after dusk, which indicated the brightness of streets. Brighter streets offered increased safety and reduced the likelihood of theft. To enhance the reliability of our recommendations, we planned to base them on datasets providing insights into street congestion and mobile coverage strength in these areas.

Additionally, we planned to implement a chat feature that would enable users to connect with fellow travelers during their journeys.

Development Process & Team Structure Issues

In the beginning, we were supposed to be a team of 6 people, but things didn’t quite go as expected. Our UX designer dropped out right from the start. Leaving our team with just 2 web developers and 3 data scientists to devise UX design solutions on our own. To streamline our efforts, with respect to the design and focus on our main features, we used a react template for our landing page.

In the early days of our project, our data science team began searching for useful data needed for the recommendation algorithm, while the web developers focused on customizing the landing page, log-in, and registration UI. The search for useful datasets proved far more challenging than anticipated putting the implementation of the recommendation at risk. Eventually, we lost contact with our data science team, learning later that they had dropped out of the program because of personal reasons.

This left us 2 web developers alone with the task of tackling the large, demanding scope of the project. Given this situation, we decided to adapt and make a so-called “pivot”. In the Lean Startup methodology, a “pivot” refers to a strategic change in a product`s roadmap and scope based on new circumstances to improve its chances of success. As our pivot, we limited the set of our core features to a chat and safe quick authentication. Even though we were a team consisting just of 2 developers we didn’t get discouraged by the fact that we had lost 2/3 of our development capacity. Instead, we doubled down on our efforts to create an enticing, fully functional web application.

To start the implementation of the chat feature we first had to come up with a safe authentication process to enable our users to access the application. For this purpose, we decided to use the NextAuth library. Initially, we tried going with Google OAuth 2, but we ran into some tech troubles that left us with an authentication flow that just wouldn’t work. So, we tried GitHub OAuth 2 as an alternative and it worked. While tackling the GitHub OAuth 2 setup, we finally figured out what we’d been doing wrong with the Google OAuth 2 implementation. The actual mistake was that we set the redirect URI the wrong way. This insight allowed us to fix the Google authentication, giving our users the option to sign in using both Google and GitHub. Later on, we extended the authentication by the credential provider, a standard authentication method given by the NextAuth library. It enables our users to sign up and sign in by using their credentials.

Results:

With the completion of the chat feature, our users can now send, receive, and view friend requests, as well as chat messages. While our chat currently lacks real-time functionality, requiring a page refresh to see sent or received messages, we have plans to implement real-time updates in the near future.

Despite only achieving a fraction of our initial project scope, we are highly satisfied with the current version of our project. The implementation of our core features the chat and authentication, using more advanced technologies, has significantly contributed to our web development skill-set.

GitHub repository (or similar):

https://github.com/TechLabs-Dortmund/Way-Home

Team members:

● Mariusz Seget:

● Lukas Jazwinski:

Team mentors:

  • Alexander Korn — project management
  • Anita Luo — UX mentor
  • Tom Stein — web development
Landing Page
User Dashboard
Chat

Video:

Project walkthrough: https://www.youtube.com/watch?v=SEaSnX1qJDs

--

--