https://github.com/ryan3971/NoteNudge
@ryan3971's Note Reminder App • ryan3971
Media
Project Overview:
NoteNudge is a desktop application, conceived and developed independently, designed to help users log their daily activities seamlessly and non-intrusively. The application provides periodic reminders to submit entries and stores the logs in a structured format. This helps users keep track of their productivity, skills developed, and accomplishments. NoteNudge aims to enhance productivity by minimizing disruptions and offering versatile logging options, making it easy to capture thoughts, code snippets, and images with a simple and intuitive text editor.
Tasks Performed:
- Development of GUI Components:
- Designed and implemented the main window, toolbar, settings window, and toolbar.
- Styled components using CSS and Tailwind CSS for a responsive and visually appealing interface.
- Integrated the Quill text editor for rich text entry.
- Information Flow and State Management:
- Developed mechanisms for passing information between GUI components.
- Ensured consistent state management across different components, such as the main window, settings window, and toolbar.
- Implemented asynchronous handling for loading settings and other data.
- User Interaction and Event Handling:
- Handled user events for actions like submitting entries, snoozing reminders, and opening the settings.
- Managed file handling events for saving and opening Word documents.
- Implemented a robust reminder system to notify users based on predefined schedules.
- Backend Integration:
- Developed Python scripts for converting HTML entries to Word documents.
- Ensured smooth communication between the frontend and backend components.
- Performance Optimization and Bug Fixes:
- Optimized performance by reducing application size and processing requirements.
- Addressed various bugs related to UI rendering, asynchronous behavior, and file handling.
- Improved image handling and conversion processes.
- Documentation and Deployment:
- Created a comprehensive README file with installation, usage, and development guidelines.
- Managed the entire development process using GitHub Projects for task tracking and progress logging.
Challenges and Solutions:
- Data Workflow and Text Formatting:
- Challenge: Determining the workflow for getting data from the application's text editor to a Word document while maintaining the text format. This involved selecting a Node module for exporting the data from the Quill editor to the Python script and selecting the Python library to handle saving the data to a Word document.
- Solution: Tested several different modules and Python packages, logging their features and shortcomings, eventually settling on ones that best fit the needs of the project.
- Non-Intrusive User Reminders
- Challenge: Satisfying the requirement of reminding the user to log their work while avoiding disrupting them mid-thought
- Solution: Implemented a fade-in animation so the reminder window gently appears without drawing too much attention. Placed the window in the bottom right corner to keep it out of the way. Ensured it would always be the top window so it was always in view , acting as a subtle reminder for the user to take a note when they finish their current task.
- Conditional Application Runtime
- Challenge: Ensuring the application runs only during periods when the user is performing relevant work they want to log.
- Solution: Implemented a settings feature that allows the user to define their working hours, with advanced settings for greater flexibility in when the application runs day to day.
- Image Resizing and Indented Lists formatting issues
- Challenge: Images resized in the editor did not retain their dimensions when exported to the Word document and nested bullet points did not retain their nested format when exported.
- Solution: Modified the Python library responsible for exporting HTML to Word to handle resized images correctly and so it correctly interpreted and applied indentations for nested lists, ensuring they appear as intended in the Word document.
- Error Handling and Invalid Inputs
- Challenge: Preventing invalid user inputs within the settings and handling errors effectively.
- Solution: Implemented alerts to handle any invalid cases, providing immediate feedback to the user and preventing the application from proceeding with invalid settings.
- Window Rendering
- Challenge: Windows were loading before they finished rendering, leading to incomplete displays and a poor user experience.
- Solution: Implemented a callback function that is called once window rendering is completed, ensuring all elements are fully loaded before the window is displayed to the user.
Technologies Used:
- Frontend: HTML, CSS, JavaScript, Quill.js, Electron.js, Tailwind CSS