Work/BusinessFlow CRM

Completed

BusinessFlow 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.

BusinessFlow CRM: admin panel with roles, users and activity log (left) and the dashboard with pipeline, tasks and clients (right)
BusinessFlow CRM — independent portfolio demonstration project. Left: admin panel (roles, users & activity log). Right: dashboard (pipeline, tasks & clients).
BusinessFlow CRM overview: six screens — login, dashboard, clients, projects, tasks and user management
All six screens of the panel: login, dashboard, clients, projects, tasks and user management — independent portfolio demonstration project.

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.

Role
Design, development & testing — solo
Stack
Python · Flask · SQLite · JavaScript
Status
Completed
Verification
Automated test suite (pytest)