Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/lukesthl/digital-break-app

๐Ÿ“ฑ iOS Screen Time Focus App built with Expo, React Native and Tamagui
https://github.com/lukesthl/digital-break-app

appintents bun expo ios react-native tamagui

Last synced: about 1 month ago
JSON representation

๐Ÿ“ฑ iOS Screen Time Focus App built with Expo, React Native and Tamagui

Awesome Lists containing this project

README

        

# Digital Break - Screen Time Focus

Take control of your screen time with Digital Break - a app designed to introduce a break before you dive into your social media apps.


About The Project ยท
Key Features ยท
Getting Started ยท
Tech Stack ยท
License



## About The Project



๏ฃฟ App Store: [Digital Break on the App Store](https://apps.apple.com/de/app/digitalbreak-screentime-focus/id6474795966)
๐Ÿ“ฑ Play Store: **not supported**

## Key Features

- **App Blocking**: Personalize your experience by choosing which apps and websites trigger a pause.
- **Progress Tracking**: Monitor your digital well-being with analytics on usage patterns.
- **Privacy-First**: Operates without collecting personal data, ensuring your privacy.

## Getting Started

Start by cloning the repository and installing the dependencies.

1. Install the dependencies

```sh
bun i
```

2. Install app and run dev-client

```sh
bun run ios
```

## Tech Stack

###

- [Expo](https://expo.dev/) with [Expo Config Plugins](https://docs.expo.dev/guides/config-plugins/)
- [React Native](https://reactnative.dev/)
- [Tamagui](tamagui.dev)
- [Bun](https://bun.sh/)

Monorepo structure:

```
โ”œโ”€โ”€ apps
โ”‚ โ”œโ”€โ”€ expo (App)
โ”‚ โ”‚ โ”œโ”€โ”€ ...
โ”œโ”€โ”€ packages
โ”‚ โ”œโ”€โ”€ shortcuts-generator
โ”‚ โ”œโ”€โ”€ expo-exit-app
โ”‚ โ”œโ”€โ”€ target-plugin
```

### About the packages

- **shortcuts-generator**: Generates shortcuts for the defined [apps.json](/public/apps.json) via the [shortuctu.template.plist](/public/shortcut.template.plist) and signs them with `shortcuts sign` command.
- **expo-exit-app**: A simple package to exit the app. It's used to close the app when the user presses the "I don't want to open xxx app" button.
- **target-plugin**: The Plugin for setting up the iOS AppIntent target [DigitalBreak.swift](/apps/expo/targets/intents/DigitalBreak.swift)

## Architecture

The app uses the [AppIntent](https://developer.apple.com/documentation/appintents) framework to intercept the app opening event.
When the user opens an app that is defined in the [apps.json](/public/apps.json) the app will intercept the event and displays a break screen. When break is over the user can decide to open the app via the defined url scheme or close the app.

## CI/CD

The project is build locally with Github Actions. Uploaded as an artifact and then automatically uploaded via Expo auto submit to the App Store.
Thankfully, Github Actions now allows M1 Macs to be used for the build process.

## Ideas

- [ ] Android Support
- [ ] Multi Language Support
- [ ] Customizable Breaks

## License

This project is licensed under the MIT License - see the LICENSE file for details.