This repository contains the code and associated project documentation for the SunChaser mobile application. SunChaser is a handy app that tells you where is the best park close to you to get some sunshine. It utilizes sun positioning algorithms, combined with local weather data and an approximation of building heights in the city to give users the best approximation of where the sunniest parks are.
This mobile application was created as part of the course CASA0015 Mobile Systems and Interactions.
The initial concept was sketched out on paper as a simple storyboard:

This was then developed into a more fleshed out Figma wireframe:
User personas were also developed to assist in understanding user's needs and aspirations:
The app is primaily targetted at students and working professionals looking for parks to enjoy the sun in.
The key features are as follows:
- A map provided by OpenStreetMap to show users their current location (location services must be enabled)
- A sun finder function to help users find the top 5 sunniest parks closest to them (or a specified location)
- A routing function to show the way to these top 5 parks
- A sun intake counter to count the number of minutes the user spends in outdoor sunlight
The demo video can be found below:
Android.Emulator.-.Pixel_6_API_34_5554.2024-04-22.23-49-07.mp4
Dependencies are listed in the pubspec.yaml
file in the root folder. Dependencies for the python backend function can be found in firebase/functions/requirements.txt
, and can be installed as part of the process of setting up firebase Cloud Functions (https://firebase.google.com/docs/functions/get-started?gen=2nd).
Release versions:
- For release versions, simply download and install the .apk file to your Android device.
Development version:
- If you would like to run the app in flutter, clone this repository to your machine and install flutter (https://flutter-ko.dev/get-started/install) if you don't already have the SDK.
- Change directory to the repo folder and run
flutter create .
to repair the folder and add any missing files. You will need to add a.env
file to theassets
folder and provide your own API key for Open Weather.- Within
.env
the variable should be named as such:API_KEY = YOUR_API_KEY
- Presently, the curent version of the app uses the free-tier API key.
- Within
- The backend code is available in the
firebase
folder. To get this running, you will need to set up an account with firebase (https://firebase.google.com/) and deploy the folder using Cloud Functions (https://firebase.google.com/docs/functions). The app cannot function without the backend. - Once you have the firebase CLI, you can regenerate the
firebase_options.dart
config file inlib
and following the instructions, you should be able to set up your own API keys to connect to firebase. - The app can then be run with
flutter run
- Implement the settings menu toggle as shown in the wireframe
- Swap out the OSM services with a more reliable paid service, e.g. Google for the production version
- Provide a heliodon / solar bracelet visualization
- Implement user accounts and sun log saving for each user
If you'd like to contribute to the app, please contact me via LinkedIn (https://www.linkedin.com/in/ethan-low-215383134/).
- Sun and running man icons in the wireframe were sourced from the Noun Project (https://thenounproject.com/)
- Adobe Firefly, an AI Diffuser image model was used to create the app icons used in the final prototype and demo video
- Other apps which inspired this project include Pflotsh Sun and City Mapper