1
0
Fork
You've already forked sunray
0
i made app for girlfriend
  • TypeScript 92.8%
  • Swift 3%
  • Kotlin 2.3%
  • JavaScript 1.6%
  • Ruby 0.3%
2026年07月02日 21:37:12 -04:00
app re-init git for public 2026年07月02日 21:37:12 -04:00
assets re-init git for public 2026年07月02日 21:37:12 -04:00
components re-init git for public 2026年07月02日 21:37:12 -04:00
constants re-init git for public 2026年07月02日 21:37:12 -04:00
contexts re-init git for public 2026年07月02日 21:37:12 -04:00
db re-init git for public 2026年07月02日 21:37:12 -04:00
features re-init git for public 2026年07月02日 21:37:12 -04:00
hooks re-init git for public 2026年07月02日 21:37:12 -04:00
models re-init git for public 2026年07月02日 21:37:12 -04:00
modules/focus-guard re-init git for public 2026年07月02日 21:37:12 -04:00
providers re-init git for public 2026年07月02日 21:37:12 -04:00
.gitignore re-init git for public 2026年07月02日 21:37:12 -04:00
app.json re-init git for public 2026年07月02日 21:37:12 -04:00
babel.config.js re-init git for public 2026年07月02日 21:37:12 -04:00
eas.json re-init git for public 2026年07月02日 21:37:12 -04:00
global.css re-init git for public 2026年07月02日 21:37:12 -04:00
justfile re-init git for public 2026年07月02日 21:37:12 -04:00
LICENSE re-init git for public 2026年07月02日 21:37:12 -04:00
metro.config.js re-init git for public 2026年07月02日 21:37:12 -04:00
nativewind-env.d.ts re-init git for public 2026年07月02日 21:37:12 -04:00
package.json re-init git for public 2026年07月02日 21:37:12 -04:00
README.md re-init git for public 2026年07月02日 21:37:12 -04:00
tailwind.config.js re-init git for public 2026年07月02日 21:37:12 -04:00
tsconfig.json re-init git for public 2026年07月02日 21:37:12 -04:00
yarn.lock re-init git for public 2026年07月02日 21:37:12 -04:00

A pixel-art red panda, baking

Sunray

A cozy focus timer and task manager which keeps you off your phone.

License: GPL-3.0 Built with Expo Platforms

Tech

  • Expo SDK 54 / React Native 0.81, with expo-router for file-based routing
  • NativeWind + gluestack-ui for styling
  • expo-sqlite for storage, Zustand for client state
  • Custom native module (Swift + Kotlin) for lock detection / app shielding

The layout pretty much copies the bulletproof react structure: app/ holds the routes, features/ the feature-specific components/stores/constants, models/ the SQLite queries, and components/ui/ the gluestack components.

Development

The native module means you need a development build — Expo Go won't have FocusGuard.

yarn # install deps
yarn build:dev:ios # EAS dev-client build (simulator)
yarn ios # start metro + run on iOS
yarn android # same for android
yarn test # jest

Note: strict mode needs real hardware on iOS, you can test android entirely on a simulator though. iOS sims dont have the Family Controls settings that you need.

Forking

app.json points at my Expo project (owner, extra.eas.projectId, updates.url). EAS will refuse to build or publish updates against it from your account — run eas init to swap in your own project, and change the bundle identifier / package name before shipping anywhere.

Also: the panda isn't GPL (see License). If you ship a fork, replace the art or ask first.

AI usage

I used a self-hosted, locally-run LLM as a code reviewer and assistant on parts of this codebase, mostly the native focus-guard module. Nothing was sent to cloud AI services, and running a local model on hardware I already own keeps the ecological footprint about as close to zero as computing gets. Every line was read, understood, and tested on real devices by me. Every bug is mine, not the robot's.

If you contribute: AI assistance is fine, but it MUST be self-hosted, to reduce ecological impact. On top of this, every single line you submit must have been read by human eyes. If slop is submitted, you will be banned.

Todo list

  • allow user to change app icon (more things to spend baked goods on)
    • should just be each different pose is an option, with different backgrounds
  • add dyslexic fonts / customizable fonts / other languages support
  • different options for text in lots of scenarios

Support

Sunray is free and has no ads or purchases. If it helped you get things done, there's a video about the process of building it on YouTube, and even more on Patreon.

License

The source code is licensed under GPL-3.0.

The art, animation, and image assets under assets/ (the red panda, its outfits, sprite animations, and app icons) are not GPL — they are © Aiden Jastrzembski, all rights reserved. You may use them to build and run this app from this repo, but not reuse or redistribute them in other projects. See assets/LICENSE.