Skip to content

Latest commit

 

History

History
63 lines (41 loc) · 2.38 KB

README.md

File metadata and controls

63 lines (41 loc) · 2.38 KB

About

LawnTracker is an open source React Native (Android) app designed to keep track of lawn maintenance tasks and notify you when they are due. The app can deal with duration based, calendar based, and growing degree day based tasks.

Weather data by Open-Meteo.com

Features

  • Keep track of tasks that are weather dependent (based on growing degree days) and non-weather dependent.
  • Estimate when growing degree day targets will be met based on weather forecast (or linear projection when forecast isn't available)
  • Notifications when tasks are due
  • No login required - the app all runs locally from your phone
  • Light/dark mode

Screenshots

Installation / Setup

The app is intended to be made available on F-Droid and the Google Play Store.

No setup is required. To add a new tracker, press the plus button on the home screen and enter the tracker details.

Development

Design notes

  • Whilst React Native is cross-platform, I haven't tested the app on iOS as I don't own an Apple device or XCode.
  • The app has been designed to be serverless. Instead of running on the server, the app periodically spins up background tasks using the react-native-background-task library to see if tasks are overdue, then generates notifications using the notifee library.
  • Due to iOS restrictions - if the app was ported to iOS, notifications won't be possible once the app is terminated under the current serverless architecture.

How to build and run

Set up your React Native environment

Complete the React Native - Environment Setup instructions till "Creating a new application" step.

Start the Metro Server

To start Metro, run the following command from the root of the project:

# using npm
npm start

# OR using Yarn
yarn start

Start the Application

Let Metro Bundler run in its own terminal. Open a new terminal from the root of the project. Run the following command:

# using npm
npm run android

# OR using Yarn
yarn android

If everything is set up correctly, you should see your new app running in your Emulator