Skip to content

Alexdaz/GoalsPlanner

Repository files navigation

πŸ’« Goals Planner

A modern desktop application for managing your goals and objectives, built with Electron and TypeScript.

TypeScript Electron License

✨ Features

  • 🎯 Goal Management: Create, edit, complete, and delete your objectives
  • πŸ“… Integrated Calendar: Visualize your goals in a monthly calendar
  • 🎨 Customizable Themes: 6 different themes (Pink, Lavander, Blue) with light/dark modes
  • πŸ’Ύ Export/Import: Save and share your goals in JSON format
  • πŸ“† ICS Export: Export your goals with dates to calendar files
  • πŸ—‘οΈ Bulk Delete: Delete all goals at once with confirmation

πŸ“‹ Requirements

  • Node.js 18+
  • npm
  • Git (optional, for cloning the repository)

πŸš€ Installation

  1. Clone the repository (or download the code):
git clone https://github.com/Alexdaz/GoalsPlanner
cd "GoalsPlanner"
  1. Install dependencies:
npm install
  1. Build the project:
npm run build
  1. Run the application:
npm start

πŸ“œ Available Scripts

  • npm run build - Compiles TypeScript to JavaScript
  • npm run build:watch - Compiles in watch mode (auto-compiles on save)
  • npm start - Builds and runs the application
  • npm run dist - Builds and creates the executable for distribution
  • npm run dist:mac - Builds macOS executable (DMG and ZIP)
  • npm run dist:win - Builds Windows executable (NSIS Installer)
  • npm run dist:linux - Builds Linux executable (AppImage)

🎨 Available Themes

The application includes 6 different themes:

  • πŸ”΅ Blue (light and dark)
  • 🌸 Pink (light and dark)
  • πŸ’œ Lavender (light and dark)

Each theme automatically adapts to all components, including the custom title bar.

πŸ”’ Security

The application implements multiple security measures:

  • βœ… Strict JSON file validation
  • βœ… File size limits (5MB maximum)
  • βœ… Input data sanitization
  • βœ… Context Isolation and Sandbox enabled
  • βœ… Node Integration disabled
  • βœ… Type and data structure validation
  • βœ… Special character escaping in ICS exports

πŸ“¦ Distribution

To create an executable:

npm run dist

Executables will be generated in the dist/ folder:

  • Linux: AppImage
  • Windows: NSIS Installer
  • macOS: DMG and ZIP (x64 and arm64)

🎯 Usage

  1. Add a goal: Click the floating button (FAB) βž• and select "Add goal"
    • Fill in the title, description, and due date (all fields are required)
  2. Complete a goal: Click the "Complete" button on any card
  3. Delete a goal: Click the "x" button on any card and confirm deletion
  4. Delete all goals: FAB β†’ "πŸ—‘οΈ Delete all goals" (with confirmation)
  5. View calendar: Click "πŸ“… Show" in the header
  6. Change theme: Use the palette selector and the light/dark mode button
  7. Export goals: FAB β†’ "πŸ’Ύ Save JSON"
  8. Import goals: FAB β†’ "πŸ“‚ Import JSON"

πŸ“ License

This project is licensed under the MIT License. See the LICENSE file for more details.

Third-Party Licenses

This project uses several open-source libraries. For detailed license information of all third-party components, please see the THIRD_PARTY_LICENSES.txt file.

πŸ™ Acknowledgments