A secure password management application with Google OAuth authentication and end-to-end encryption.
- End-to-end encryption using AES-256-CTR
- Google OAuth 2.0 authentication
- JWT-based session management with HTTP-only cookies
- CSRF protection
- Rate limiting for API endpoints
- Password strength validation
- Modern dark theme UI with Material Design
- Real-time password strength feedback
- Password categorization (Social, Finance, Work, Personal)
- Quick copy-to-clipboard functionality
- Search and filter passwords
- Responsive design for all devices
- React 18
- Material-UI v6
- Context API for state management
- React Router v6
- Axios for API requests
- React Hot Toast for notifications
- Node.js & Express
- MySQL with connection pooling
- MVC architecture
- RESTful API design
- JWT for authentication
- Crypto for encryption/decryption
- MySQL (hosted on Railway)
- Secure credential storage
- Efficient query optimization
- HTTP-only cookies for JWT storage
- CSRF token validation
- Rate limiting on sensitive endpoints
- Password encryption before storage
- Secure session management
- Input validation and sanitization
GET /auth/url
- Get Google OAuth URLGET /auth/token
- Handle OAuth callbackGET /auth/logged_in
- Check login statusPOST /auth/logout
- Logout user
GET /passwords
- Get all of the current user's passwordsPOST /passwords
- Create new passwordPUT /passwords/:id
- Update passwordDELETE /passwords/:id
- Delete passwordGET /passwords/decrypt/:id
- Decrypt specific password
- Database: Railway (MySQL)
- Backend: [Pending] AWS/GCP
- Frontend: [Pending] AWS/GCP
-
Clone the repository
git clone https://github.com/claudiaaziz/LockIt.git
-
Install dependencies
# Install backend dependencies cd server npm install # Install frontend dependencies cd client npm install
-
Set up environment variables
# Server (.env) GOOGLE_CLIENT_ID=your_client_id GOOGLE_CLIENT_SECRET=your_client_secret DATABASE_URL=your_railway_db_url TOKEN_SECRET=your_jwt_secret
-
Start development servers
# Start backend (port 5001) cd server npm start # Start frontend (port 3000) cd client npm start
- Two-factor authentication
- Password generation
- Browser extension
- Mobile app version