An open API service indexing awesome lists of open source software.

https://github.com/jaynightmare/sleepsync

An app which allows you to check what time you should go to bed and what time roughly you would wake up. A great to ensure you get to sleep on time
https://github.com/jaynightmare/sleepsync

Last synced: 11 months ago
JSON representation

An app which allows you to check what time you should go to bed and what time roughly you would wake up. A great to ensure you get to sleep on time

Awesome Lists containing this project

README

          

# πŸ’€ SleepSync

A mobile application that helps users determine the optimal time to go to sleep based on a desired wake-up time, personalized sleep duration, and a wind-down buffer.

## Features

- **Wake-up Time Selection**: Choose your desired wake-up time with an intuitive time picker
- **Sleep Duration Customization**: Select how much sleep you need (6-10 hours) via an interactive slider
- **Wind-down Period**: Set a buffer time before sleep (15/30/45/60 minutes) to help you prepare for rest
- **Dynamic Sleep Suggestions**: Get personalized bedtime recommendations based on your preferences
- **Preference Saving**: Your settings are remembered between app sessions using AsyncStorage
- **Multiple Screens**: Navigate between Home, Sleep Calculator, History, and Settings screens
- **Theme Support**: Interface adapts to light/dark mode preferences

## Technical Stack

- **Framework**: React Native with TypeScript
- **Target Platforms**: iOS and Android
- **Navigation**: React Navigation with bottom tabs and stack navigator
- **UI Components**:
- `@react-native-community/datetimepicker` – Wake time selection
- `@react-native-community/slider` – Sleep duration adjustment
- `react-native-vector-icons` – Interface icons
- **Storage**: `@react-native-async-storage/async-storage` for persisting user preferences and sleep history

## Project Structure

- **src/components/**: Reusable UI components (TimePicker, WindDownSelector, ResultCard)
- **src/screens/**: Main application screens (Home, SleepCalculator, History, Settings)
- **src/utils/**: Utility functions for sleep calculations and data storage
- **src/styles/**: Theme definitions and styling constants
- **src/types/**: TypeScript type definitions
- **src/navigation/**: Navigation configuration

# Getting Started

> **Note**: Make sure you have completed the [Set Up Your Environment](https://reactnative.dev/docs/set-up-your-environment) guide before proceeding.

## Step 1: Start Metro

First, you will need to run **Metro**, the JavaScript build tool for React Native.

To start the Metro dev server, run the following command from the root of your React Native project:

```sh
# Using npm
npm start

# OR using Yarn
yarn start
```

## Step 2: Build and run your app

With Metro running, open a new terminal window/pane from the root of your React Native project, and use one of the following commands to build and run your Android or iOS app:

### Android

```sh
# Using npm
npm run android

# OR using Yarn
yarn android
```

### iOS

For iOS, remember to install CocoaPods dependencies (this only needs to be run on first clone or after updating native deps).

The first time you create a new project, run the Ruby bundler to install CocoaPods itself:

```sh
bundle install
```

Then, and every time you update your native dependencies, run:

```sh
bundle exec pod install
```

For more information, please visit [CocoaPods Getting Started guide](https://guides.cocoapods.org/using/getting-started.html).

```sh
# Using npm
npm run ios

# OR using Yarn
yarn ios
```

If everything is set up correctly, you should see your new app running in the Android Emulator, iOS Simulator, or your connected device.

This is one way to run your app β€” you can also build it directly from Android Studio or Xcode.

## Step 3: Modify your app

Now that you have successfully run the app, let's make changes!

Open `App.tsx` in your text editor of choice and make some changes. When you save, your app will automatically update and reflect these changes β€”Β this is powered by [Fast Refresh](https://reactnative.dev/docs/fast-refresh).

When you want to forcefully reload, for example to reset the state of your app, you can perform a full reload:

- **Android**: Press the R key twice or select **"Reload"** from the **Dev Menu**, accessed via Ctrl + M (Windows/Linux) or Cmd ⌘ + M (macOS).
- **iOS**: Press R in iOS Simulator.

## Congratulations! :tada:

You've successfully run and modified your React Native App. :partying_face:

### Now what?

- If you want to add this new React Native code to an existing application, check out the [Integration guide](https://reactnative.dev/docs/integration-with-existing-apps).
- If you're curious to learn more about React Native, check out the [docs](https://reactnative.dev/docs/getting-started).

# Troubleshooting

If you're having issues getting the above steps to work, see the [Troubleshooting](https://reactnative.dev/docs/troubleshooting) page.

# Learn More

To learn more about React Native, take a look at the following resources:

- [React Native Website](https://reactnative.dev) - learn more about React Native.
- [Getting Started](https://reactnative.dev/docs/environment-setup) - an **overview** of React Native and how setup your environment.
- [Learn the Basics](https://reactnative.dev/docs/getting-started) - a **guided tour** of the React Native **basics**.
- [Blog](https://reactnative.dev/blog) - read the latest official React Native **Blog** posts.
- [`@facebook/react-native`](https://github.com/facebook/react-native) - the Open Source; GitHub **repository** for React Native.