# LeoCRM – Requirements ## Overview A minimal web CRM for managing companies and their contact persons, with user authentication. ## Functional Requirements ### FR1: User Authentication - Users can register with username and password - Users can login/logout - Passwords are hashed with bcrypt - Session management via Flask-Login ### FR2: Company Management - Authenticated users can create, view, edit, and delete companies - Company fields: name, address, phone, email, website, notes - List view with search/filter ### FR3: Contact Person Management - Each contact person belongs to a company - Fields: first_name, last_name, email, phone, position, notes - CRUD operations, linked to company ### FR4: Web UI - Jinja2 templates with basic styling - Navigation between sections - Forms with validation ## Non-Functional Requirements - SQLite database (no external DB needed) - Runs on single server (Flask built-in or gunicorn) - Deployable via Coolify (Docker) - Code in Git (Forgejo) ## Out of Scope - Multi-tenancy - REST API - Advanced search - File uploads - Email notifications