Skip to content

aarab-abderrahmane/PlanPulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

76 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ PlanPulse

The Ultimate Modern Todo Experience

PlanPulse Banner

React Vite Tailwind CSS License: CC BY-NC 4.0

A stunning, feature-rich todo application that transforms task management into an art form.
Built with bleeding-edge React 19, powered by Vite, and styled with Tailwind CSS 4.

๐Ÿš€ Live Demo โ€ข ๐Ÿ› Report Bug โ€ข โœจ Request Feature


๐ŸŒŸ Why PlanPulse?

PlanPulse isn't just another todo appโ€”it's a productivity powerhouse wrapped in a gorgeous glassmorphic interface. Built from the ground up with modern web technologies, it offers unparalleled customization, smooth animations, and an experience that makes task management genuinely enjoyable.

Demo


โœจ Features That Set Us Apart

๐ŸŽฏ Core Functionality

Task Management

  • โšก Quick Task Creation - Add tasks instantly with Enter key
  • ๐ŸŽจ Inline Editing - Edit tasks directly in place with smooth transitions
  • โœ… Animated Checkboxes - Satisfying completion animations
  • ๐Ÿ—‘๏ธ Smart Deletion - Confirmation dialogs prevent accidents
  • ๐Ÿ”’ Task Masking - Hide sensitive tasks with blur effect via right-click
  • ๐Ÿ’พ Auto-save - Every change persists instantly to localStorage
  • ๐Ÿ“ค Import/Export - Backup and restore tasks as JSON files
  • ๐ŸŽฏ Context Menu - Right-click for quick actions (Mask, Delete)

Advanced Interactions

  • ๐Ÿ”„ Drag & Drop - Reorder tasks effortlessly with @dnd-kit
  • ๐ŸŽŠ Celebration Effects - Confetti animations on milestones
  • ๐Ÿ”” Toast Notifications - Color-coded feedback for every action
  • ๐ŸŒŠ Framer Motion - Physics-based animations throughout
  • โŒจ๏ธ Keyboard Shortcuts - Power-user productivity (Ctrl+B, Ctrl+Y)
  • ๐ŸŽฌ Welcome Stepper - Interactive onboarding for new users
  • ๐Ÿ“ฑ Fully Responsive - Seamless experience across all devices

๐ŸŽจ Customization Paradise

9 Stunning Themes

Choose from carefully crafted color schemes that transform your entire interface:

๐Ÿ”ต Blue โ€ข ๐Ÿ”ด Red โ€ข ๐ŸŸก Yellow โ€ข ๐ŸŸข Green โ€ข ๐ŸŸฃ Purple โ€ข ๐ŸŸ  Orange โ€ข ๐Ÿ”ต Teal โ€ข ๐Ÿฉท Pink โ€ข โšช Gray

Theme Showcase

Visual Customization

  • ๐Ÿ–ผ๏ธ 10+ Background Patterns - Pre-loaded textures or custom image uploads
  • ๐Ÿ–ฑ๏ธ Cursor Styles - Choose between smooth animated or default cursor
  • ๐Ÿ“ Corner Radius Control - Adjust borders from sharp to pill-shaped (0-3rem)
  • ๐ŸŽจ Font System - 8 beautiful fonts with adjustable weights (300-900)
  • ๐Ÿ”† Opacity Control - Fine-tune text transparency (0-100%)
  • ๐Ÿ‘๏ธ UI Visibility Toggle - Hide/show background text for minimal interface
  • ๐ŸŽฏ Button Customization - Show/hide edit and delete buttons per preference
  • ๐ŸŽญ Glassmorphism UI - Modern frosted-glass aesthetic throughout

๐Ÿงฉ Dynamic Widget System

Widget Demo

Powerful Widgets

  • ๐Ÿ“… Live Calendar - Interactive date picker with month/year navigation
  • โฐ Detailed Clock - Real-time display with hours:minutes:seconds + AM/PM
  • ๐ŸŽฏ Smart Layout - Drag widgets between sections or reorder within sections

Two Drag Modes

// Items Mode โ†’ Reorder calendar & clock widgets
[Calendar, Clock] โ†” [Clock, Calendar]

// Sections Mode โ†’ Swap entire widget sections
[Calendar + Clock] โ†” [TodoList]

Quick Access Dock

  • ๐ŸŽฏ Floating Dock - Quick layout customization controls
  • ๐Ÿ”„ Mode Toggle - Switch between Items/Sections drag modes
  • โ†ฉ๏ธ Reset Button - Restore default layout instantly
  • โŒ Cancel - Exit customization mode

๐Ÿš€ Getting Started

Prerequisites

Node.js 18.x or higher
npm / yarn / pnpm
Modern browser (Chrome, Firefox, Safari, Edge)

Installation

# Clone the repository
git clone https://github.com/aarab-abderrahmane/PlanPulse.git

# Navigate to project directory
cd PlanPulse

# Install dependencies
npm install
# or
yarn install
# or
pnpm install

Development

# Start development server
npm run planpulse

# Server runs at http://localhost:5173
# Hot module replacement enabled โšก

Production Build

# Build for production
npm run build

# Preview production build
npm run preview

# Lint codebase
npm run lint

๐Ÿ“ Project Architecture

PlanPulse/
โ”œโ”€โ”€ ๐Ÿ“‚ src/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ components/
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ ui/                         # 40+ shadcn/ui components
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ accordion.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ button.jsx
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ calendar.jsx              # Date picker (react-day-picker)
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ floating-dock.jsx         # Layout customization dock
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ smooth-cursor.jsx         # Animated cursor
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ confetti.jsx              # Celebration effects
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ sparkles-text.jsx         # Animated text
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ ...
โ”‚   โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ PreferencesItems/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ backgroundAccordion.jsx   # Background selector carousel
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ fontAccordion.jsx         # Font selection interface
โ”‚   โ”‚   โ”œโ”€โ”€ TodoList.jsx                  # Main todo container with DnD
โ”‚   โ”‚   โ”œโ”€โ”€ List.jsx                      # Individual todo item (sortable)
โ”‚   โ”‚   โ”œโ”€โ”€ Checkbox.jsx                  # Animated checkbox component
โ”‚   โ”‚   โ”œโ”€โ”€ LiveCalendar.jsx              # Calendar widget
โ”‚   โ”‚   โ”œโ”€โ”€ LiveClockDetailed.jsx         # Clock widget with seconds
โ”‚   โ”‚   โ”œโ”€โ”€ Preferences.jsx               # Settings panel (40+ options)
โ”‚   โ”‚   โ”œโ”€โ”€ DropDownMenuLabo.jsx          # Main dropdown menu
โ”‚   โ”‚   โ”œโ”€โ”€ AlertConfirm.jsx              # Confirmation dialogs
โ”‚   โ”‚   โ””โ”€โ”€ error_404.jsx                 # Custom 404 page
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ landingPage/
โ”‚   โ”‚   โ”œโ”€โ”€ indexlanding.jsx              # Animated landing page
โ”‚   โ”‚   โ”œโ”€โ”€ button.jsx                    # CTA button with effects
โ”‚   โ”‚   โ””โ”€โ”€ timeline-animation.jsx        # Feature timeline
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ lib/
โ”‚   โ”‚   โ””โ”€โ”€ utils.js                      # Helper functions (cn, etc.)
โ”‚   โ”œโ”€โ”€ App.jsx                           # Root component with contexts
โ”‚   โ”œโ”€โ”€ Content.jsx                       # Router wrapper
โ”‚   โ”œโ”€โ”€ Stipper.jsx                       # Welcome onboarding flow
โ”‚   โ”œโ”€โ”€ ImportDataSection.jsx             # JSON import functionality
โ”‚   โ”œโ”€โ”€ ToastContext.jsx                  # Global toast notifications
โ”‚   โ”œโ”€โ”€ main.jsx                          # Application entry point
โ”‚   โ””โ”€โ”€ index.css                         # Global styles + CSS variables
โ”œโ”€โ”€ ๐Ÿ“‚ public/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ backgrounds/                   # 10+ background patterns
โ”‚   โ”œโ”€โ”€ ๐Ÿ“‚ Demo/                          # Demo GIFs for README
โ”‚   โ””โ”€โ”€ *.png                             # Screenshots & assets
โ”œโ”€โ”€ ๐Ÿ“„ package.json                       # Dependencies & scripts
โ”œโ”€โ”€ ๐Ÿ“„ vite.config.js                     # Vite configuration
โ”œโ”€โ”€ ๐Ÿ“„ tailwind.config.js                 # Tailwind CSS config
โ”œโ”€โ”€ ๐Ÿ“„ components.json                    # shadcn/ui config
โ””โ”€โ”€ ๐Ÿ“„ README.md                          # You are here!

๐Ÿ—๏ธ Technical Deep Dive

State Management Architecture

PlanPulse uses React Context API for comprehensive, performant state management:

// ๐ŸŽจ Preferences Context - Theme, Layout & UI Settings
PreferencesContext = {
  appVersion: "3.0.0",
  font: { id: "font-8", weight: 500 },
  corners: 1.5,  // Border radius in rem
  background: { 
    active: false, 
    id: 0, 
    path: "" 
  },
  customizeLayout: [
    [{ id: 0, type: "calendar" }, { id: 1, type: "clock" }],
    [{ id: 2, type: "todoList" }]
  ],
  general: { 
    hideTexts: false,      // Hide background text
    opacityTexts: 100      // Text opacity percentage
  },
  cursorType: "smooth",    // "default" | "smooth"
  theme_name: "blue",      // Active theme key
  themes: { /* 9 themes */ },
  buttons: {
    buttonDelete: { active: false },
    buttonEdit: { active: true }
  },
  dragMode: { 
    active: false, 
    mode: "items"          // "items" | "sections"
  }
}

// ๐Ÿ”” Toast Context - Global Notifications
ToastContext = {
  showToast: Function      // Display toast with color & message
}

// โœ… Todos Context - Task Operations
todosContext = {
  todos: Array<Todo>,
  setTodos: Function,
  MaskTodo: Function,      // Toggle blur effect
  handleAdd: Function,
  handleCheck: Function,
  handleEdit: Function,
  handleSave: Function,
  hanldeDelete: Function
}

Data Models

// ๐Ÿ“ Todo Item Structure
interface Todo {
  id: number;              // Unique identifier (timestamp-based)
  content: string;         // Task description (min 5 chars)
  modeEdit: boolean;       // Currently in edit mode?
  check: boolean;          // Completion status
  mask: boolean;           // Visibility state (blur toggle)
}

// ๐Ÿงฉ Widget Structure
interface Widget {
  id: number;              // Unique widget ID
  type: "calendar" | "clock" | "todoList";
}

// ๐Ÿ“ Layout Structure
type Layout = Widget[][];  // 2D array: [[left widgets], [right widgets]]

// ๐ŸŽจ Theme Structure
interface Theme {
  "--color-background": string;  // Main background color
  "--color-text": string;        // Text color
  "--color-button": string;      // Primary button color
}

Drag & Drop System

Powered by @dnd-kit for smooth, accessible interactions:

// ๐ŸŽฏ DndContext Configuration
<DndContext
  onDragEnd={handleDragEnd}
  collisionDetection={closestCorners}
>
  <SortableContext 
    items={todos.map(todo => todo.id)}
    strategy={verticalListSortingStrategy}  // or horizontalListSortingStrategy
  >
    {/* Sortable items */}
  </SortableContext>
</DndContext>

// ๐Ÿ”„ Drag Modes
// Items Mode: Reorder calendar/clock within their section
// Sections Mode: Swap entire left โ†” right sections

๐Ÿ’พ Data Persistence

localStorage Keys & Formats

// 1๏ธโƒฃ Todos Data
Key: 'todos'
Format: Array<Todo>
Example: [
  { id: 1, content: "Buy groceries", check: false, modeEdit: false, mask: false },
  { id: 2, content: "Finish project", check: true, modeEdit: false, mask: false }
]

// 2๏ธโƒฃ Preferences Data
Key: 'Preferences'
Format: PreferencesObject
Storage: Deep merged with defaults on load

// 3๏ธโƒฃ Onboarding State
Key: 'hasVisited'  โ†’ boolean (landing page visit)
Key: 'hasStarted'  โ†’ boolean (stepper completion)

Features

โœ… Auto-save - Every state change persists instantly
โœ… Graceful Loading - Defaults provided if localStorage is empty
โœ… Deep Object Merging - New preferences merge with existing
โœ… JSON Validation - Import validates structure before loading
โœ… Error Handling - Fallbacks prevent data loss


๐ŸŽจ Theming System

CSS Variables Architecture

Customize themes by modifying CSS variables in src/index.css:

:root {
  /* ๐ŸŽจ Color System */
  --color-background: #90b5dc;  /* Primary background */
  --color-text: #0c2646;        /* Text & borders */
  --color-button: #4f83f8;      /* Interactive elements */

  /* ๐Ÿ“ Layout */
  --border-radius: 1.5rem;      /* Global corner radius */
  
  /* ๐Ÿ–‹๏ธ Typography */
  --font-family: 'Poppins', sans-serif;
  --font-weight: 500;
  
  /* ๐Ÿ–ผ๏ธ Background (when active) */
  --background-name: url('/backgrounds/light-wool.png');
}

Built-in Themes

๐Ÿ”ต Blue (Default)

#90b5dc background
#0c2646 text
#4f83f8 buttons

๐Ÿ”ด Red

#dc9090 background
#460c0c text
#f84f4f buttons

๐ŸŸก Yellow

#e6dc90 background
#46400c text
#f8e14f buttons

๐ŸŸข Green

#90dca4 background
#0c4620 text
#4ff86a buttons

๐ŸŸฃ Purple

#b890dc background
#2a0c46 text
#9b4ff8 buttons

๐ŸŸ  Orange

#f2b38a background
#4a2308 text
#ff8c42 buttons

Plus: Teal, Pink, and Gray themes available!

Background Patterns

10+ pre-loaded seamless patterns from Subtle Patterns:

  • ๐Ÿงฑ Asfalt Light
  • ๐Ÿ“ Batthern
  • โ›ช Church
  • ๐Ÿงถ Light Wool
  • โญ Starring
  • ๐Ÿงฑ White Brick Wall
  • ๐Ÿ’Ž White Diamond Dark
  • ๐Ÿ”˜ Worn Dots
  • โšก Zig Zag

Custom Upload: Use your own images as backgrounds!


๐Ÿ”ง Technology Stack

Core Framework

Technology Version Purpose
React 19.2.0 UI library with concurrent features
React DOM 19.2.0 React rendering engine
Vite 7.1.7 Lightning-fast build tool & dev server
Tailwind CSS 4.1.16 Utility-first CSS framework

UI & Animation

Technology Version Purpose
Framer Motion 12.23.24 Physics-based animations
Styled Components 6.1.19 CSS-in-JS styling
Lucide React 0.546.0 1000+ beautiful icons
Tabler Icons 3.35.0 Additional icon library
Canvas Confetti 1.9.4 Celebration effects

Drag & Drop

Technology Version Purpose
@dnd-kit/core 6.3.1 Core drag-and-drop logic
@dnd-kit/sortable 10.0.0 Sortable list functionality
@dnd-kit/utilities 3.2.2 DnD helper utilities

Component Libraries

Technology Version Purpose
Radix UI Various 15+ accessible headless components
shadcn/ui Latest Pre-built styled components
Sonner 2.0.7 Toast notification system
React Day Picker 9.11.1 Calendar date picker

Utilities

Technology Version Purpose
date-fns 4.1.0 Date manipulation & formatting
clsx 2.1.1 Conditional className utility
tailwind-merge 3.3.1 Merge Tailwind classes intelligently
React Router 7.9.5 Client-side routing

โŒจ๏ธ Keyboard Shortcuts

Boost your productivity with power-user shortcuts:

Shortcut Action Context
Ctrl + B Open/Close Preferences panel Global
Ctrl + Y Toggle Layout Customization Mode Global
Enter Add new todo When input is focused
Escape Cancel edit mode When editing a task
Right Click Open context menu On todo items

๐ŸŒ Browser Compatibility

Browser Version Support
Chrome Latest โœ… Fully Supported
Firefox Latest โœ… Fully Supported
Safari Latest โœ… Fully Supported
Edge Latest โœ… Fully Supported
Mobile Safari iOS 14+ โœ… Fully Supported
Chrome Mobile Latest โœ… Fully Supported

Requires JavaScript enabled and localStorage support


๐Ÿ›ฃ๏ธ Roadmap

Roadmap Demo

๐Ÿšง In Development (v3.1.0)

  • ๐Ÿ”„ Undo/Redo System - Action history with Ctrl+Z/Ctrl+Shift+Z
  • โŒจ๏ธ Extended Shortcuts - More keyboard shortcuts for power users
  • ๐ŸŒ™ Dark Mode - Automatic theme switching based on system preference
  • ๐Ÿ”Š Sound Effects - Optional audio feedback for actions

๐Ÿ“‹ Planned (v4.0.0)

Organization

  • ๐Ÿท๏ธ Tags & Categories - Color-coded task organization
  • ๐Ÿ“ Multiple Lists - Create separate lists for different projects
  • ๐Ÿ” Search & Filter - Fuzzy search with advanced filtering
  • โญ Favorites - Pin important tasks to the top
  • ๐Ÿ”ข Subtasks - Nested task hierarchies

Advanced Features

  • ๐Ÿ“… Due Dates - Date picker with native reminders
  • ๐ŸŽฏ Priority Levels - High/medium/low badges
  • ๐Ÿ“Š Statistics Dashboard - Productivity insights & charts
  • ๐Ÿ”” Browser Notifications - Native reminder system
  • ๐ŸŽ™๏ธ Voice Input - Add tasks via speech recognition

Collaboration & Sync

  • ๐Ÿ‘ฅ Collaboration - Share lists with team members
  • โ˜๏ธ Cloud Sync - Multi-device synchronization
  • ๐Ÿ” User Accounts - Secure authentication & data storage
  • ๐Ÿ“ฑ PWA Support - Install as native mobile app
  • ๐ŸŒ Internationalization - Multi-language support

๐ŸŽฏ Vision (v5.0.0+)

  • ๐Ÿค– AI Task Suggestions - Smart task recommendations based on patterns
  • ๐Ÿ“ˆ Productivity Analytics - ML-powered insights & goal tracking
  • ๐ŸŽฎ Gamification - Achievements, streaks, and rewards
  • ๐Ÿ”— Integrations - Connect with Google Calendar, Slack, Notion, etc.

๐Ÿค Contributing

We love contributions! Whether it's bug fixes, new features, or documentation improvements, your help makes PlanPulse better for everyone.

How to Contribute

  1. Fork the repository

    # Click the "Fork" button on GitHub
  2. Clone your fork

    git clone https://github.com/YOUR_USERNAME/PlanPulse.git
    cd PlanPulse
  3. Create a feature branch

    git checkout -b feature/amazing-feature
  4. Make your changes

    • Write clean, documented code
    • Follow existing code style
    • Add comments where necessary
  5. Test thoroughly

    npm run lint       # Check for linting errors
    npm run planpulse  # Test in development
    npm run build      # Verify production build
  6. Commit with descriptive messages

    git commit -m "feat: add amazing new feature"
  7. Push to your fork

    git push origin feature/amazing-feature
  8. Open a Pull Request

    • Describe your changes in detail
    • Reference any related issues
    • Wait for review and feedback

Development Guidelines

  • ๐Ÿ“ Use clear, descriptive variable names
  • ๐Ÿงช Test your changes across different browsers
  • ๐Ÿ“ฑ Ensure mobile responsiveness
  • โ™ฟ Maintain accessibility standards
  • ๐Ÿ“š Update documentation if needed

Reporting Issues

Found a bug? Have a feature request? Open an issue with:

  • Clear title and description
  • Steps to reproduce (for bugs)
  • Expected vs actual behavior
  • Screenshots (if applicable)
  • Browser/device information

๐Ÿ“„ License

This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) license.

โœ… You Are Free To:

  • Share โ€” Copy and redistribute the material in any medium or format
  • Adapt โ€” Remix, transform, and build upon the material

๐Ÿ“‹ Under The Following Terms:

  • Attribution โ€” Give appropriate credit with a link to this repository
  • NonCommercial โ€” Cannot be used for commercial purposes
  • No Additional Restrictions โ€” Cannot apply legal terms or tech measures that restrict others

๐Ÿ“– Full License: CC BY-NC 4.0 Legal Code


๐Ÿ‘จโ€๐Ÿ’ป Author

Aarab Abderrahmane

Full-Stack Developer & UI/UX Enthusiast

Portfolio GitHub LinkedIn Email


๐Ÿ™ Acknowledgments

This project wouldn't be possible without these amazing technologies and resources:

๐Ÿ› ๏ธ Core Technologies

๐ŸŽจ UI & Components

๐Ÿ–ผ๏ธ Design Resources

๐Ÿ“š Learning Resources

๐Ÿ’ก Inspiration


๐Ÿ“Š Project Stats

GitHub Stars GitHub Forks GitHub Issues License: CC BY-NC 4.0


๐Ÿ’– Show Your Support

If PlanPulse helps you stay organized and productive, consider:

โญ Star this repository - It helps others discover the project
๐Ÿ› Report bugs - Help us improve the experience
โœจ Request features - Share your ideas for new functionality
๐Ÿค Contribute code - Make PlanPulse even better
๐Ÿ“ข Spread the word - Tell your friends and colleagues


Built with โค๏ธ by Aarab Abderrahmane

Making task management beautiful, one feature at a time.

โฌ† Back to Top


Happy Task Managing! โœ…

About

PlanPulse is a modern task manager with a clean design, drag and drop tasks, and customizable themes built with React 19 and Vite.

Topics

Resources

License

Stars

Watchers

Forks

Contributors