Work/BusinessFlow CRM
CompletedBusinessFlow CRM
An independently designed, developed and tested CRM for small sales teams: customers, sales opportunities and tasks in one relational database — with role-based access control enforced server-side, session authentication and a full automated test suite.
The challenge
Small sales teams usually run their pipeline in spreadsheets, chat threads and memory. Nothing is shared, nothing is validated, and when a deal changes hands the history is lost. The goal was a single system where customers, opportunities and tasks live in one relational database, where each role sees only what it should, and where the data stays trustworthy as the team grows.
What I built
- Relational SQLite schema — customers, opportunities, tasks and users with proper relationships, constraints and indexes
- Role-based access control (admin, manager, sales) enforced server-side on every route, not just in the UI
- Session-based authentication with secure password hashing and logout
- Full CRUD for customers, opportunities and tasks with server-side validation on every input
- Pipeline view with stage transitions and an activity history per record
- Automated test suite (pytest) covering authentication, authorization and data integrity
I started from the data model: what entities exist, how they relate, and which invariants must never break. Then I built the backend with strict server-side validation and authorization checks on every endpoint, and only then the interface. Tests were written alongside the features — a feature is not done until its authorization rules and its data paths are covered.
Outcome
A complete, working CRM application that runs end to end: three roles, six screens, one relational database — a user logs in, sees exactly the records their role allows, and every write is validated and persisted. The schema, migrations and test suite are documented, so the system can be extended or handed over without archaeology.