Skip to content

muhammetekurt/Reminder

Repository files navigation

Streak & Reminder App

A minimal iOS app built with Expo that helps you build habits (streaks) and set periodic reminders.

Features

Streak Tracker

  • Create custom streaks with flexible intervals (hourly, daily, weekly, monthly, yearly)
  • Set start and end dates
  • Mark periods as complete with a single tap
  • Visual progress tracking
  • Celebration effects (confetti + haptics) when completing a streak

Reminder

  • Set periodic notifications at custom intervals
  • Support for title, subtitle, and body with emojis
  • Toggle reminders on/off
  • Local notifications (no server required)

Tech Stack

  • Framework: Expo (React Native)
  • Routing: Expo Router
  • Database: Supabase (PostgreSQL)
  • Auth: Apple Sign-In
  • Notifications: expo-notifications (local)
  • Animations: react-native-confetti-cannon, expo-haptics

Getting Started

Prerequisites

  • Node.js 18+
  • Expo CLI (npm install -g expo-cli)
  • iOS Simulator or physical iOS device
  • Supabase account

Setup

  1. Clone and install dependencies

    npm install
  2. Set up Supabase

    • Create a new Supabase project at supabase.com
    • Run the SQL schema from supabase/schema.sql in the SQL Editor
    • Enable Apple provider in Authentication > Providers
    • Copy your project URL and anon key
  3. Configure environment

    cp .env.example .env

    Edit .env with your Supabase credentials:

    EXPO_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
    EXPO_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
    
  4. Configure Apple Sign-In

    • In app.json, update ios.bundleIdentifier with your bundle ID
    • Configure Apple Sign-In in your Apple Developer account
    • Add the callback URL to Supabase: https://your-project.supabase.co/auth/v1/callback
  5. Run the app

    npx expo start --ios

Color Palette

Color Hex Usage
Black #000000 Background
Navy #14213D Cards, surfaces
Amber #FCA311 Primary accent
Light Gray #E5E5E5 Secondary text
White #FFFFFF Primary text

Project Structure

├── app/
│   ├── (auth)/           # Auth screens
│   │   └── sign-in.tsx
│   ├── (tabs)/           # Main tab navigator
│   │   └── index.tsx     # Home screen with two cards
│   ├── streak/           # Streak module
│   │   ├── index.tsx     # Streak list
│   │   ├── new.tsx       # Create streak
│   │   └── [id].tsx      # Streak detail
│   └── reminder/         # Reminder module
│       ├── index.tsx     # Reminder list
│       ├── new.tsx       # Create reminder
│       └── [id].tsx      # Reminder detail
├── src/
│   ├── components/       # Reusable UI components
│   ├── context/          # React contexts (Auth)
│   ├── features/         # Feature-specific logic
│   │   ├── streak/
│   │   └── reminder/
│   └── lib/              # Supabase client
├── constants/
│   └── Colors.ts         # Theme and color tokens
└── supabase/
    └── schema.sql        # Database schema

iOS Notifications Note

iOS has some limitations for local notifications:

  • Minimum interval is effectively 1 minute
  • Maximum of 64 pending scheduled notifications
  • User must grant permission

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors