A beautiful and powerful standalone macOS desktop application for managing your goals with adaptive tracking, intelligent carryover, and comprehensive analytics.
- Smart Goal Tracking - Track daily, weekly, and monthly goals
- Intelligent Carryover - Automatically carries over incomplete goals with multipliers
- Beautiful Analytics - Detailed charts and progress visualization
- Local-First - All data stored locally in SQLite
- Native macOS App - Runs independently, no browser needed
- Modern UI - Beautiful interface with Tailwind CSS and Framer Motion
- Real-time Updates - Live sync across all views with React Context
- Background Service - Automatic carryover processing at midnight
-
Clone the repository:
git clone https://github.com/DHYEY166/goal-manager.git cd goal-manager -
Build the app:
./build-app.sh
-
Open the app:
- Find it at
dist-electron/mac-arm64/Goal Manager.app - Or copy to Applications:
cp -r "dist-electron/mac-arm64/Goal Manager.app" /Applications/
- Find it at
-
Install dependencies:
npm install cd backend && npm install && cd .. cd frontend && npm install && cd ..
-
Development mode (web version):
npm run dev
- Backend: http://localhost:5000
- Frontend: http://localhost:5173
-
Build desktop app:
npm run electron:build:mac
- React 18 - UI framework
- Vite - Build tool and dev server
- Tailwind CSS - Styling
- Framer Motion - Animations
- Headless UI - Accessible components
- Lucide React - Icons
- React Hot Toast - Notifications
- Recharts - Data visualization
- Node.js - Runtime
- Express - Web framework
- SQLite3 - Database
- node-cron - Task scheduling
- Electron 39 - Desktop app framework
- electron-builder - App packaging
goal-manager/
├── backend/ # Express backend
│ ├── database.js # SQLite database setup
│ ├── server.js # Express server
│ ├── routes/ # API endpoints
│ │ ├── goals.js
│ │ ├── categories.js
│ │ ├── analytics.js
│ │ └── users.js
│ └── services/ # Background services
│ ├── carryover.js
│ └── notifications.js
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── contexts/ # React Context (global state)
│ │ ├── pages/ # Page components
│ │ ├── hooks/ # Custom hooks
│ │ └── services/ # API services
│ └── dist/ # Built frontend (gitignored)
├── build/ # Electron build scripts
├── assets/ # App icons and assets
├── index.js # Electron main process
├── preload.js # Electron preload script
├── electron-builder.json # Build configuration
└── build-app.sh # Build script
The app automatically processes incomplete goals at midnight:
- Applies a multiplier (default 1.1x) to incomplete goals
- Respects maximum caps to prevent unrealistic targets
- Creates new goal instances for the next period
- Prevents goal accumulation through intelligent tracking
Uses React Context API for seamless data sync:
- Single source of truth for all goals
- Real-time updates across Dashboard and Goals pages
- Automatic refresh after create/edit/delete operations
- No prop drilling - clean component architecture
All data stored in SQLite at:
~/Library/Application Support/goal-manager-app/goal_manager.db
- Persists between app restarts
- Survives system reboots
- Easy to backup
# Development (web mode)
npm run dev # Start backend + frontend
npm run dev:backend # Backend only
npm run dev:frontend # Frontend only
# Building
npm run build # Build frontend for production
npm run electron:build:mac # Build macOS app
./build-app.sh # Complete build script
# Production
npm start # Start production backendThe desktop app bundles everything:
- Frontend (built and bundled)
- Backend server (included with dependencies)
- SQLite database (created on first run)
- Electron wrapper (native macOS app)
# Complete build process
./build-app.sh
# Manual build steps
cd frontend && npm run build && cd ..
npx electron-builder --mac --arm64GET /api/goals- Get all goals with today's progressGET /api/goals/:id- Get single goal detailsPOST /api/goals- Create new goalPUT /api/goals/:id- Update goalDELETE /api/goals/:id- Delete goal
POST /api/goals/:id/progress- Update daily progressGET /api/goals/today- Get today's goal instances
GET /api/categories- Get all categoriesPOST /api/categories- Create category
GET /api/analytics/summary- Overall statisticsGET /api/analytics/trends- Progress trends over time
-- Main goals table
goals (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
category_id INTEGER,
type TEXT CHECK(type IN ('daily', 'weekly', 'monthly')),
target_value INTEGER DEFAULT 1,
priority TEXT CHECK(priority IN ('low', 'medium', 'high')),
is_active BOOLEAN DEFAULT 1,
carryover_multiplier REAL DEFAULT 1.1,
max_carryover_cap INTEGER DEFAULT 5,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
)
-- Daily tracking
goal_instances (
id INTEGER PRIMARY KEY,
goal_id INTEGER,
date DATE NOT NULL,
target_value INTEGER,
current_value INTEGER DEFAULT 0,
is_completed BOOLEAN DEFAULT 0,
is_carried_over BOOLEAN DEFAULT 0,
previous_target INTEGER
)
-- Categories
categories (
id INTEGER PRIMARY KEY,
name TEXT UNIQUE NOT NULL,
color TEXT,
icon TEXT
)After building, you get:
dist-electron/mac-arm64/Goal Manager.app- The app bundle (arm64/Apple Silicon)- Ready to copy to
/Applicationsfolder - Can be distributed as-is (no installer needed for testing)
For production distribution:
- Consider code signing with Apple Developer certificate
- Create DMG installer by changing target in
electron-builder.json - Notarize the app for Gatekeeper
- Fork the repository
- Create your feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
MIT License - feel free to use this project for personal or commercial purposes.
- Built with React, Node.js, and Electron
- Icons by Lucide
- UI components from Headless UI
- Charts powered by Recharts
- Date utilities from date-fns
Made for productivity enthusiasts