Skip to content

adbarc92/parcle

Repository files navigation

📦 Parcle

A cross-platform mobile app (iOS + Android) for tracking gift ideas for friends and family — with links, price tracking, and status management.

Built with React Native + Expo for maximum portability.


Features

  • People Management — Add friends/family with custom emojis and occasions (birthdays, holidays, etc.)
  • Gift Tracking — Save gift ideas with names, links, notes, and prices
  • Price Monitoring — Track current vs. original price with percentage change indicators (↓ drops, ↑ increases)
  • Status Workflow — Move gifts through: 💡 Idea → ✅ Purchased → 🎀 Wrapped → 🎉 Given
  • Search & Filter — Find gifts by name/notes, filter by status
  • Budget Dashboard — See total budget, savings from price drops, and completion progress
  • Persistent Storage — Data saved locally via AsyncStorage, persists between app restarts
  • Native Feel — Platform-adaptive UI with bottom sheet modals, haptic feedback, and smooth animations

Quick Start

Prerequisites

  • Node.js 18+ installed
  • Expo CLI (npx expo works without global install)
  • For iOS: macOS with Xcode (or Expo Go app on your iPhone)
  • For Android: Android Studio with emulator (or Expo Go app on your Android phone)

Setup

# 1. Navigate to the project
cd parcle

# 2. Install dependencies
npm install

# 3. Start the development server
npx expo start

Running on Your Device

Easiest method — Expo Go app:

  1. Install "Expo Go" from the App Store (iOS) or Play Store (Android)
  2. Run npx expo start in terminal
  3. Scan the QR code with your phone's camera (iOS) or Expo Go app (Android)

iOS Simulator:

npx expo start --ios

Android Emulator:

npx expo start --android

Building for Production

Using EAS Build (Recommended)

# Install EAS CLI
npm install -g eas-cli

# Configure your project
eas build:configure

# Build for iOS
eas build --platform ios

# Build for Android
eas build --platform android

# Build for both
eas build --platform all

Standalone APK/IPA

# Android APK (for testing)
eas build --platform android --profile preview

# iOS (requires Apple Developer account)
eas build --platform ios --profile production

Project Structure

parcle/
├── App.tsx                          # Root component & navigation
├── app.json                         # Expo configuration
├── package.json                     # Dependencies
├── tsconfig.json                    # TypeScript config
├── babel.config.js                  # Babel config (Reanimated plugin)
├── assets/                          # App icons, splash screens
└── src/
    ├── constants/
    │   └── theme.ts                 # Colors, status config, emojis, default data
    ├── hooks/
    │   └── useStore.ts              # Data management + AsyncStorage persistence
    ├── screens/
    │   ├── PeopleListScreen.tsx      # Home screen — people list + stats
    │   └── PersonDetailScreen.tsx    # Gift list for a person + add/edit
    └── utils/
        ├── types.ts                 # TypeScript interfaces
        └── helpers.ts               # formatPrice, priceDiff, generateId

Usage Guide

Action How
Add a person Tap the orange + button on the home screen
View gifts Tap on a person's card
Add a gift Tap + on the person detail screen
Edit a gift Tap on a gift card
Change status Tap the status badge or "↻ Status" to cycle through statuses
Delete a gift Long-press on a gift card
Delete a person Long-press on a person card
Search gifts Use the search bar on the person detail screen
Filter by status Tap status filter chips (All, 💡 Idea, ✅ Purchased, etc.)
Open a link Tap "🔗 Open Link" to open in your browser

Customization

Changing the Color Theme

Edit src/constants/theme.tsCOLORS object to adjust the app's palette.

Adding More Emojis

Edit the EMOJIS array in src/constants/theme.ts.

Adding New Statuses

  1. Add to the GiftStatus type in src/utils/types.ts
  2. Add config in STATUS_CONFIG in src/constants/theme.ts
  3. Add to STATUSES array

Tech Stack

  • React Native — Cross-platform mobile framework
  • Expo SDK 52 — Build tooling, OTA updates, device APIs
  • TypeScript — Type safety
  • AsyncStorage — Local data persistence
  • React Native Reanimated — Smooth animations (ready to use)

License

MIT

parcle

About

Offline-first gift tracker built with React Native and Expo - per-person gift lists, a four-stage status workflow, and budget and savings totals. Local-only storage, no account, no network calls.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages