Skip to content

sohekim/suncheck

Repository files navigation

Suncheck

Suncheck allows you to record and archive your sunlight intake. Build healthy habits by learning how much solar energy you are getting.

Table of Contents

Why Suncheck

Due to the elongated pandemic, the time we spend indoors has increased dramatically. With less time spent under natural sunlight the overall anxiety and depression levels have risen in individuals.

If we can keep track and visualize the time we spend in the sun, we could easily check and adjust our lifestyles to feel better.

Main Features

1. Record Your Time In The Sun

suncheck

Users can record the time they spend under the sun by simply tapping the center circle. Once it starts recording, the circle radiates like a sun.

A notification is sent after 15 mins

2. Visualizing Data

suncheck

The main button changes color after every 15 minutes has passed, so that it gives users a good idea about how much sun they have received.

3. Real Time Walking Sensor

suncheck

Once the user allows location access, Flutter's GeoLocation updates their current location. With this data, the app detects the user's movement and sends notifications accordingly.

Implementation

Serverless Cross-Platform Mobile App

Framework Client Database External API
Flutter ios SQLite Open Weather API
android SharedPreference

Flutter / Dart Version

  
  Flutter 2.0.5 • channel stable • https://github.com/flutter/flutter.git
  Framework • revision adc687823a (3 months ago) • 2021-04-16 09:40:20 -0700
  Engine • revision b09f014e96
  Tools • Dart 2.12.3
  

List of Flutter Dependency Used

  
  provider: ^4.3.2+3
  weather: ^2.0.1
  geolocator: ^7.2.0+1
  sqflite: ^2.0.0+3
  path: ^1.8.0
  path_provider: ^2.0.2
  intl: ^0.17.0
  shared_preferences: ^2.0.6
  geocoder: ^0.2.1
  avatar_glow: ^2.0.1
  dotted_line: ^3.0.0
  jiffy: ^4.1.0
  flutter_local_notifications: ^5.0.0+1
  timezone: ^0.7.0
  

Sunlight Record Model


class Record {

Record({int id, DateTime date, int energy, String location}) {
  this.id = id;
  this.date = DateTime.parse(DateFormat('yyyy-MM-dd 00:00:00.000').format(date));
  this.energy = energy;
  this.location = location;
}

Map<String, dynamic> toMap() {
  return {'id': id, 'date': date.toString(), 'energy': energy, 'location': location};
}

suncheck