donatoaguirre24 / sleep-app

Sleep app made with React Native

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

πŸ› Sleep App

⏯ Demo

iOS

ios-demo.mov

Android

android-demo.mov

Tests & Linters

tests-and-linters demo

πŸ‘¨πŸ»β€πŸ’» Technical Documentation

Setup

Run the App

  • Prerequisite: setup your environment
  • Install dependencies: yarn && pod install --project-directory=ios
  • Start metro server: yarn start (keep it running)
  • Launch iOS simulator: yarn ios
  • Launch Android simulator: yarn android

Core Dependencies

Project Structure

β”œβ”€β”€ src              # The main container of all the application's code
β”‚   β”œβ”€β”€ data         # Any kind of constant that you have
β”‚   β”œβ”€β”€ localization # Locale files
β”‚   β”œβ”€β”€ navigation   # Navigation logic and types
β”‚   β”œβ”€β”€ features     # Application screens/features
β”‚   β”œβ”€β”€ services     # Business logic and utilities
β”‚   β”œβ”€β”€ ui           # Shared components and UI elements (such as a button or the app's theme)
β”‚   └── app.ts       # Main app component
β”œβ”€β”€ tests            # The main container of all the application's tests
└── index.js         # Entry point of the application as per React-Native standards

πŸ”Ž Research & Product

Inspiration Sources

Biases

  • Being a big consumer of Apple products, I have a predilection for the aesthetics of iOS.
  • I decided to focus on polishing the look and feel of the iOS app because the Eight Sleep app seems to be quite iOS-oriented. Also, based on the subscriptions and products they offer, I bet most of their users are on iOS.

Improvement Ideas

  • Add proper icons for the heart and respiratory rate
  • Include min and max values for health metrics (heart and respiratory rate)
  • Improve charts animations in Android
  • Fetch data from the network instead of using static data
  • Add app icon and splash screen
  • Add skeletons to handle loading states (if network requests were made)
  • Add haptic feedback to the overview card tap
  • Improve x-axis accuracy and the ticks labels on charts

Time Management Decisions

I tried to create a rich yet simple visual experience. Since the goal of health/fitness app users is mostly to track and improve their performance, I focused on the charts and visual elements to make it easier.

Given the time constrains and the fact that I was provided just with a detail/show endpoint but not with an overview/index one, I decided to use static data. To take advantage of it, I created an "overview" file combining information from the three users' data and feeds the landing screen of the app.

About

Sleep app made with React Native


Languages

Language:TypeScript 48.4%Language:Java 23.1%Language:C++ 10.3%Language:Objective-C++ 6.7%Language:Objective-C 3.5%Language:JavaScript 2.6%Language:Makefile 2.2%Language:Ruby 1.5%Language:Starlark 0.9%Language:Shell 0.7%