Inspiration

Shima Rin.

What it does

This is an app designed for hikers to mark a breadcrumb trail. The user can mark the location of his/her campsite, and the app will automatically keep track of a path from the start point until when the user loses signal. The app will warn the user that he/she lost signal so the user doesn't get lost.

How we built it

We setup dependencies with flutter pub, which is the package manager for flutter. We also setup a virtual device with android studio and xcode (ios). With these, we can deploy a dev app on either a physical device or a virtual device.

We split the application into 4 main components:

  1. GPS backend logic
  2. Frontend
  3. Signal handling logic
  4. Custom Compass

The front end displays google maps, which has the start and end breadcrumb path. When the user starts the path, the gps backend would start, and the device would constantly grab gps data. The device pings the GPS and stores points far enough to avoid as much overlap as possible. The breadcrumb path also displays acyclic path using depth-first search and acyclic graphs from graph theory.

The front end was designed with figma and uses flutter's stateful widgets to display google maps. A custom overlay is displayed on top of the front end. Also, the front end displays markers and the polyline, which is the trail that the user walks.

The signal handler starts when the GPS starts. The signal handler constantly check for signal until there is no more signal. When there isn't a signal, a notification will be sent to the user, warning him/her that there's no more signal and that the user should be careful he/she doesn't get lost.

The compass uses fludder's fludder-compass package to read the device's sensor data to display a compass accuracy and rotate the compass accordingly. The purpose of the compass is so the user can see which direction to go when he/she no longer has signal. The compass is completely customized with our own design and logic.

Challenges we ran into

Flutter is a relatively new framework, so there's a lot of bugs, especially with building. We had a lot of problems with building an IOS application and since we only had iPhones, we wanted to test our application on a live device, so this was pretty hard. We also had a lot of issues with the internet, since we needed to download SDKs, ISOs, and dependencies to setup our environment, which took a long time. It took about an hour just to setup the android environment and IOS had open git issues which took us about 2 hours to figure out.

Accomplishments that we're proud of

None of us are app developers and none of us have used flutter before. We are all very proud to create this application and we think we did a great job. We also did a great job splitting tasks, and overall we didn't feel rushed. Our pacing was very good.

What we learned

We learned app development. We did not know flutter, we did not know how to use google maps api, so this application is a completely new learning experience for us.

What's next for Shima

Some things we want to do in the future is to keep track of a history of paths and cache them inside of the device. We also would like to containerize the repository with docker and vscode devcontainers to make the build process easier. We would also like to increase gps ping speed depending on the signal strength (the worse the signal, more pings)

Built With

Share this project:

Updates