A secure and user-friendly command-line contacts management application that allows users to manage their contacts with authentication.
-
🔐 User Authentication
- Secure signup and login system
- Password hashing for security
- Session management
-
📝 Contacts Management
- Add new contacts
- View all contacts in a formatted way
- Delete existing contacts
- Input validation for contact information
-
🛡️ Security
- Password encryption
- Input sanitization
- User session handling
-
📂 Data Storage
- JSON-based data storage
- Separate storage for users and contacts
- Organized file structure
- Python 3.8+
- No additional dependencies required (uses standard library only)
-
Clone the repository:
git clone <repository-url> cd contacts_book_enhanced
-
(Optional) Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Run the application:
python -m src.app.main
-
Choose from the following options:
- Sign up for a new account
- Login with existing credentials
- Exit the application
-
After logging in, you can:
- View all your contacts
- Add new contacts
- Delete existing contacts
- Logout or Exit
contacts_book_enhanced/
├── data/
│ └── json_data/
│ ├── contacts.json # Stores contact information
│ └── user.json # Stores user authentication data
├── src/
│ ├── app/
│ │ ├── contacts/ # Contact management modules
│ │ ├── data_manager/ # Data handling and configuration
│ │ ├── repository/ # Data storage operations
│ │ ├── security/ # Authentication and encryption
│ │ ├── user_auth/ # User authentication modules
│ │ ├── utils/ # Utility functions
│ │ ├── validators/ # Input validation
│ │ ├── main.py # Application entry point
│ │ └── user_menu.py # Main menu interface
│ └── contacts_book_enhanced.egg-info/
└── README.md
- Passwords are hashed before storage
- User sessions are managed securely
- Input validation is implemented throughout the application
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
For support, please open an issue in the repository.