KeyPulse is a secure and elegant password manager designed to store, manage, and protect your digital credentials. Built with a modern tech stack, it offers a sleek user interface, robust AES-256 encryption, and seamless JWT-based authentication to safeguard your digital life.
- Secure Password Storage: Save, edit, and delete passwords with AES-256-CBC encryption.
- User Authentication: Register and log in using JWT-based authentication.
- Dynamic Page Titles: Unique browser tab titles (e.g.,
KeyPulse - Login) for each page, powered by React Helmet Async. - Intuitive UI: Fixed navbar with links to Home, Password Vault, About, Contact, and a static Settings placeholder.
- Non-Fixed Headers: Consistent, animated headers on Login, Register, Manager, Home, About, and Contact pages, featuring the KeyPulse logo and tagline.
- Password Vault: View, copy, and manage credentials in a responsive table with clipboard functionality.
- Toast Notifications: Real-time feedback for user actions via React Toastify.
- Responsive Design: Tailwind CSS ensures a seamless experience across devices.
- React: Component-based UI with React Router for navigation.
- Tailwind CSS: Utility-first styling for a modern, responsive design.
- Framer Motion: Smooth animations for navbar, headers, and page elements.
- React Toastify: Notification system for user feedback.
- React Helmet Async: Dynamic
<title>tags for improved SEO and user experience.
- Node.js with Express: RESTful API server for handling requests.
- MongoDB Atlas: Cloud-hosted NoSQL database for storing user data and passwords.
- Bcrypt: Password hashing for secure user credential storage.
- JSON Web Tokens (JWT): Secure authentication for protected routes.
- Crypto: AES-256-CBC encryption for password security.
- UUID: Generates unique identifiers for password entries.
- Express Validator: Sanitizes and validates user inputs.
- Express Rate Limit: Throttles API requests to enhance security.
- Node.js: Version 16+ (v20 LTS recommended).
- MongoDB Atlas: Account for cloud database hosting.
- Git: For version control.
- Navigate to the
backenddirectory:cd backend - Install dependencies:
npm install
- Create a
.envfile inbackendwith the following configuration:MONGO_URI=mongodb+srv://<username>:<password>@cluster0.tskxf80.mongodb.net/keypulse?retryWrites=true&w=majority DB_NAME=keypulse PORT=3000 JWT_SECRET=your_jwt_secret_key_12345_change_this ENCRYPTION_KEY=7e8f9a0b1c2d3e4f5a6b7c8d9e0f123456789abcdef0123456789abcdef01234- Replace
<username>:<password>with your MongoDB Atlas credentials. - Ensure
ENCRYPTION_KEYis a 64-character hexadecimal string. Generate one using:node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
- Replace
- Start the backend server:
node server.js
- Confirm:
Server running on http://localhost:3000.
- Confirm:
- Navigate to the
frontenddirectory:cd frontend - Install dependencies:
npm install
- Start the frontend development server:
npm run dev
- Access the app at
http://localhost:5173(or Vite’s default port).
- Access the app at
- Register: Visit
/registerto create an account with a username and password. - Login: Use
/loginto authenticate and access the Password Vault. - Manage Passwords:
- Navigate to
/manager. - Add a password (site, username, password; each must be 4+ characters).
- Edit or delete existing passwords.
- Copy credentials to the clipboard with a single click.
- Navigate to
- Navigation:
- Use the fixed navbar to access:
- Home (
/): Welcome page with links to login or register. - Password Vault (
/manager): Credential management interface. - About (
/about): Overview of the KeyPulse project. - Contact (
/contact): Support contact information. - Settings: Static placeholder (non-functional).
- Home (
- Use the fixed navbar to access:
- Verify Page Titles:
- Check browser tab titles for each route:
/:KeyPulse - Home/login:KeyPulse - Login/register:KeyPulse - Register/manager:KeyPulse - Password Vault/about:KeyPulse - About/contact:KeyPulse - Contact
- Check browser tab titles for each route:
- Encryption: Passwords are encrypted with AES-256-CBC using a 32-byte key and random initialization vectors (IVs).
- Authentication: JWTs secure API routes; bcrypt hashes user passwords for storage.
- Input Validation: Express Validator sanitizes inputs to prevent injection attacks.
- Rate Limiting: Express Rate Limit prevents brute-force attacks on API endpoints.
- Best Practices:
- Regularly update your MongoDB Atlas password.
- Keep the
.envfile secure and untracked by adding it to.gitignore. - Use a strong
JWT_SECRETandENCRYPTION_KEY. - Monitor backend logs for unauthorized access attempts.
Contributions are welcome to enhance KeyPulse! To contribute:
- Fork the repository at https://github.com/xenon1919/KeyPulse.
- Create a feature branch:
git checkout -b feature/YourFeature
- Commit your changes:
git commit -m 'Add YourFeature' - Push to the branch:
git push origin feature/YourFeature
- Open a Pull Request on https://github.com/xenon1919/KeyPulse.
Please follow the Code of Conduct and ensure all tests pass before submitting.
This project is licensed under the MIT License. See the LICENSE file for details.
KeyPulse: Secure your digital life with elegance.