Links
Project Idea:
https://github.com/joplin/gsoc/blob/master/ideas.md
GitHub profile:
https://github.com/Vinayreddy765
Forum Introduction Post:
https://discourse.joplinapp.org/t/introducing-vinayreddy/48835
Pull requests submitted to Joplin:
PR #14566 – Desktop: Show feedback message when master passwords do not match
PR #14638-Desktop: Fix context menu missing cut/copy when selecting resource links in markdown editor
PR #14665-Desktop: Ensure re-enter password field appears when changing master password
PR #14662-Desktop: Prevent enabling encryption when master password is not set
PR #14724-Desktop: Resolves #14717: Improve clarity of master password warning
1. Introduction
My name is Vinay Reddy and I am currently pursuing a Bachelor of Engineering in Information Science and Engineering at Global Academy of Technology, Bengaluru, India (expected graduation: 2027).
I have experience with TypeScript, React, and modern JavaScript tooling. Recently I started contributing to the Joplin codebase and became familiar with the encryption settings UI while working on improvements to the master password dialog.
Through these contributions I became interested in improving the security usability of Joplin's master password workflow.
2.Project Summary
This project proposes adding a password strength indicator to the Joplin master password dialog.
Currently users receive no feedback about password strength when creating or changing their master password. Weak passwords may therefore be chosen unknowingly.
The goal is to provide real-time feedback while the user types, helping users create stronger passwords without enforcing strict requirements.
Expected outcome:
• Visual password strength indicator
• Strength label (Very Weak → Very Strong)
• Suggestions for improving password quality
• Fully local evaluation using the zxcvbn algorithm
3. Technical Approach
The feature will be implemented using a reusable React component integrated into the existing MasterPasswordDialog.
Main components:
PasswordStrengthIndicator
Displays the strength bar, label, and suggestions.
passwordStrengthUtils
Wrapper utility around the zxcvbn library.
Integration with MasterPasswordDialog
Evaluate password strength whenever the password input changes.
Technologies used:
• TypeScript
• React
• @zxcvbn-ts/core
The password evaluation occurs entirely locally and does not transmit or store password data.
4. Implementation Plan
Community Bonding
Study the existing encryption settings UI and discuss the implementation approach with mentors.
Week 1
Integrate @zxcvbn-ts/core and implement password strength utility functions.
Week 2
Implement PasswordStrengthIndicator React component.
Week 3
Integrate component into MasterPasswordDialog and ensure consistent UI behavior.
Week 4
Write unit tests, optimize performance, and complete documentation
5. Deliverables
At the end of the project:
• Password strength indicator integrated into Joplin's master password dialog
• Unit tests for strength evaluation and UI components
• Documentation for the feature
• Clean and maintainable React component structure
6. Availability
I will be available approximately 30–35 hours per week during the GSoC coding period.
Time zone:
IST (UTC +5:30)
I currently have no conflicting commitments during the coding period.
Full Proposal
Full proposal document:
GSoC 2026 Proposal – Idea 7: Password Strength Indicator
I would appreciate feedback from mentors and contributors regarding the design and implementation approach.