A modern, collaborative sticky note application built with React and TypeScript.
NotesPage: Main container managing notes display and member-based filteringNoteCard: Interactive note component with drag-and-drop and member colorsControls: Member selection and filtering with visual feedbackButton: Multi-variant button system with consistent stylingColorPalette: Member color selection with real-time preview
- Global contexts for notes and members state
- Local storage persistence for data
- Member-based filtering with useMemo optimization
- Proper event propagation control
// Button variants with consistent transitions (0.2s ease)
type ButtonVariant = 'primary' | 'secondary' | 'add' | 'delete' | 'close'
// Primary/Secondary
- Primary: Green (#66bb6a), rectangular
- Secondary: Transparent with border
- Both support text content
- 6px border radius
// Icon Buttons
- Add: 40px circular, gray (rgba(107, 107, 107, 1))
- Delete: Transparent with trash icon, 4px padding
- Close: Circular with dark/light modes, 8px paddinginterface Member {
id: string
name: string
colorHeader: string
colorBody: string
colorText: string
}
// Active Member Features
- Visual selection with white outline
- Click to select/deselect
- New notes inherit member colors
- Real-time note filteringnpm install
npm run devhttps://sticky-note-roan.vercel.app/
- Add members with custom colors
- Create notes (inherits member colors)
- Set priorities (low/medium/high)
- Filter by member
- Filter by notes body
- Mark notes complete
- Assign notes to members
- Drag notes to reorder
- Delete notes
- Save notes to local storage
- Search member
- Memoized components (React.memo)
- Debounced note updates (500ms)
- Lazy-loaded modals
- Efficient filtering (useMemo)
- Local storage caching
- Event delegation
- Proper cleanup
- Smart re-rendering
- Consistent transitions
- Role based permissions
- Rich text editing
- Categories/tags
- Search functionality
- Note sharing
- Member management
- Note history
- Note notifications
- Note reminders
- Note collaboration
- Real-time collaboration
- Offline support
- Backend integration
- Keyboard shortcuts
- E2E tests (Playwright & Cucumber)
- Visual regression
- Performance metrics
- Accessibility testing
- Coverage increase
- React 18: Frontend framework
- TypeScript: Type safety and better developer experience
- Vite: Fast build tool and development server
- Styled Components: CSS-in-JS styling
- Vitest: Unit testing framework
- React Testing Library: Component testing
- ESLint: Code linting and style enforcement
src/
├── components/ # React components
│ ├── __tests__/ # Modal components
├── context/ # Business logic and hooks
├── utils/ # Helper functions and types
├── styles/ # Global styles
└── App.tsx # Main application component
- Node.js (v16 or higher)
- npm or yarn
- Clone the repository:
git clone <repository-url>- Install dependencies:
npm install
# or
yarn install- Start the development server:
npm run dev
# or
yarn dev- Open http://localhost:5173 in your browser
The main component for displaying and managing individual notes.
- Props:
note: Note data (position, colors, content)onDelete: Callback for note deletiononUpdate: Callback for note updates
- Features:
- Real-time content editing
- Drag and drop positioning
- Member color inheritance
- Completion status toggle
- Priority selection
Manages member selection and note creation.
- Features:
- Add new members
- Select/deselect active member
- Member color customization
- Local state management
- Callback propagation to parent
- Visual feedback for member selection
Color selection component with predefined color options.
- Props:
selectedColor: Currently selected coloronColorSelect: Color selection callback
- Features:
- Grid layout of color options
- Visual selection feedback
- Hover and active states
- Smooth transitions
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details