Skip to content

lokyiec/subminder

Repository files navigation

Subminder

A cross-platform mobile application for tracking recurring subscriptions with push notifications.

🌐 Live Demo

View Live Demo →

🔑 Demo Account

  • Email: demo@subminder.app
  • Password: demo1234

Features

  • 📊 Dashboard - View monthly total and upcoming payments
  • 📝 Subscription Management - Add, edit, delete, and cancel subscriptions
  • 📈 Analytics - Track spending trends and payment history
  • 🔔 Push Notifications - Get reminders before payment dates
  • 🌙 Dark Mode - Toggle between light and dark themes
  • 📱 Cross-Platform - Works on iOS, Android, and Web (PWA)
  • 💾 Offline Support - Local-first architecture with automatic cloud sync

Tech Stack

  • Frontend: Nuxt 4 (SPA Mode) + Nuxt UI (Tailwind CSS)
  • Mobile: Capacitor 7
  • Backend: Supabase (Auth + Database + Edge Functions)
  • Push Notifications: Firebase Cloud Messaging
  • State: Pinia with persistence
  • Language: TypeScript

Quick Start

1. Install Dependencies

pnpm install

2. Setup Supabase

  1. Create a project at supabase.com
  2. Run migrations from database/migrations/ in your SQL Editor
  3. Get your project URL and anon key from Settings > API

3. Setup Firebase (Optional - for Push Notifications)

  1. Create a project at console.firebase.google.com
  2. Enable Cloud Messaging
  3. Get your Firebase config and VAPID key
  4. For native apps: Add GoogleService-Info.plist (iOS) and google-services.json (Android)

4. Configure Environment

Create .env file:

# Supabase
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_anon_key

# Firebase (optional - for web push notifications)
FIREBASE_API_KEY=your_api_key
FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
FIREBASE_PROJECT_ID=your_project_id
FIREBASE_STORAGE_BUCKET=your_project.appspot.com
FIREBASE_MESSAGING_SENDER_ID=your_sender_id
FIREBASE_APP_ID=your_app_id
FIREBASE_VAPID_KEY=your_vapid_key

Note: Edit public/firebase-messaging-sw.js with your Firebase config for web push.

5. Run Development Server

pnpm dev

Visit http://localhost:3000

Mobile Development

Build for Mobile

# Generate static files
pnpm generate

# Sync with mobile projects
pnpm cap sync

iOS

# Open in Xcode
npx cap open ios

Android

# Open in Android Studio
npx cap open android

Deployment

Docker

# Build and run
docker build -t subminder .
docker run -p 8080:80 \
  -e NUXT_PUBLIC_SUPABASE_URL=your_url \
  -e NUXT_PUBLIC_SUPABASE_KEY=your_key \
  subminder

Edge Functions (Optional)

For scheduled push notifications:

supabase functions deploy send-push-notifications
supabase secrets set FIREBASE_SERVICE_ACCOUNT='{"project_id":"...","private_key":"...","client_email":"..."}'

Project Structure

subminder/
├── app/                    # Nuxt source code
│   ├── pages/             # Application pages
│   ├── stores/            # Pinia stores
│   ├── composables/       # Vue composables
│   └── components/        # Vue components
├── android/               # Android project
├── ios/                   # iOS project
├── database/              # SQL migrations
├── supabase/functions/    # Edge functions
└── public/                # Static assets

Available Scripts

pnpm dev                 # Start dev server
pnpm generate           # Build static files
pnpm cap:sync           # Sync with mobile
pnpm lint               # Run linter

License

MIT License - see LICENSE file for details

About

Cross-platform Subscription Manager built with Nuxt, Capacitor & Supabase.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors