Repository Guidelines
This project is written in **Python**. Follow these instructions when working with the code base.
Running Tests
1. Set up a virtual environment and install dependencies:
```bash python3 -m venv venv source venv/bin/activate pip install -r src/requirements.txt ```
2. Run the test suite using **pytest**:
```bash pytest ```
Currently the test folder is located in `src/tests/`. New tests should be placed there so `pytest` can discover them automatically.
Style Guidelines
- Adhere to **PEP 8** conventions (4‑space indentation, descriptive names, docstrings).
- Use [**black**](https://black.readthedocs.io/) to format Python files before committing:
```bash black . ```
- Optionally run **flake8** or another linter to catch style issues.
Security Practices
- Never commit seed phrases, passwords, private keys, or other sensitive data.
- Use environment variables or local configuration files (ignored by Git) for secrets.
- Review code for potential information leaks (e.g., verbose logging) before submitting.
Following these practices helps keep the code base consistent and secure.
Integrating New Entry Types
SeedPass supports multiple `kind` values in its JSON entry files. When adding a new `kind` (for example, SSH keys or BIP‑39 seeds) use the checklist below:
1. **Menu Updates** – Extend the CLI menus in `main.py` so "Add Entry" offers choices for the new types and retrieval operations handle them properly. The current main menu looks like this:
``` Select an option: 1. Add Entry 2. Retrieve Entry 3. Search Entries 4. Modify an Existing Entry 5. 2FA Codes 6. Settings 7. Exit ```
2. **JSON Schema** – Each entry file must include a `kind` field describing the entry type. Add new values (`ssh`, `seed`, etc.) as needed and implement handlers so older kinds continue to work.
3. **Best Practices** – When introducing a new `kind`, follow the modular architecture guidelines from `docs/json_entries.md`:
- Use clear, descriptive names.
- Keep handler code for each `kind` separate.
- Validate required fields and gracefully handle missing data.
- Add regression tests to ensure backward compatibility.
This procedure keeps the UI consistent and ensures new data types integrate smoothly with existing functionality.