Difference between revisions of "New Website"

From docs
Jump to: navigation, search
(UI architecture)
(Dashboard)
 
(8 intermediate revisions by the same user not shown)
Line 27: Line 27:
 
* Feature flags on Company control Twilio, People Tab, 2FA, AI, beacons, login limits, and more
 
* Feature flags on Company control Twilio, People Tab, 2FA, AI, beacons, login limits, and more
 
* Data is intended to be company-scoped
 
* Data is intended to be company-scoped
 
=== Request lifecycle ===
 
# SameSite cookie middleware
 
# SecurityMiddleware
 
# SessionMiddleware
 
# CommonMiddleware
 
# CsrfViewMiddleware
 
# AuthenticationMiddleware
 
# MessageMiddleware
 
# XFrameOptionsMiddleware
 
# ViewName
 
# GetCompany
 
# TimezoneMiddleware
 
# APILogMiddleware
 
# AjaxRequestMiddleware
 
# Then the view, services, ORM, and template or JSON response
 
  
 
=== UI architecture ===
 
=== UI architecture ===
Line 58: Line 42:
 
* Scheduled exports and report pipelines run through export and schedule models and related processors
 
* Scheduled exports and report pipelines run through export and schedule models and related processors
 
* Deploy environments may supply SQS settings outside checked-in settings defaults
 
* Deploy environments may supply SQS settings outside checked-in settings defaults
 
== Key features ==
 
 
=== CRM ===
 
* Accounts and contacts
 
* People under accounts when People Tab is on
 
* Companies, phones, account types, custom fields, labels, titles
 
* Duplicates, business cards, imports and exports
 
 
=== Calling and voice ===
 
* Twilio soft calls
 
* Call history
 
* Phone number provisioning
 
* Caller ID verification
 
* Call results and call overrides
 
* Recorded messages
 
* After-call Event Forms
 
 
=== Messaging ===
 
* Twilio SMS
 
* Auto Text for missed calls
 
* Broadcast messaging where enabled
 
 
=== Email ===
 
* Linked Gmail, Office 365, and IMAP accounts under <code>em</code>
 
* CallProof system report mail under <code>mail</code>
 
* SendGrid outbound delivery
 
* Mailchimp list integration
 
 
=== Sales ===
 
* Opportunities board
 
* Stages, types, opportunity fields
 
* Opportunity reports and goals
 
 
=== Field and location ===
 
* Google Places lead finding
 
* Routes, markets, regions, stores
 
* Places categories, beacons, clock in and out
 
 
=== Scheduling ===
 
* Appointments and visits
 
* Tasks and follow-ups
 
* Google and Office calendar sync
 
 
=== Forms and integrations ===
 
* Event Forms
 
* Wufoo webhooks
 
* API access for external systems
 
 
=== Reporting and stats ===
 
* Events, activity and productivity stats
 
* Notes report
 
* Custom and manual reports
 
* Rankings and My Exports
 
 
=== Gamification ===
 
* Points, event points, badges, ranks, hustle
 
 
=== Admin and billing ===
 
* Company directory and user settings
 
* Tools admin
 
* ChargeOver billing
 
* Authorize.net
 
  
 
== Technology stack ==
 
== Technology stack ==
Line 222: Line 143:
 
* CallProof Voice section appears only when company Twilio is enabled
 
* CallProof Voice section appears only when company Twilio is enabled
 
* System report mail under <code>/mail/</code> is separate from synced personal email under <code>/em/</code>
 
* System report mail under <code>/mail/</code> is separate from synced personal email under <code>/em/</code>
* V2 UI work is planned to be additive beside V1
 
 
* Logging uses rotating app logs plus console and domain-specific loggers
 
* Logging uses rotating app logs plus console and domain-specific loggers
* Design and agent guidance for V2 lives in <code>CLAUDE.md</code>
 
* Broader module reference lives in <code>PROJECT_DOCUMENTATION.md</code>, with some sections more fully verified than others
 
  
 
== Deployment and operations ==
 
== Deployment and operations ==
Line 239: Line 157:
 
* Security centers on company-scoped access, CSRF, optional 2FA, encrypted secrets, and SSO
 
* Security centers on company-scoped access, CSRF, optional 2FA, encrypted secrets, and SSO
 
* Performance and scale rely on pagination, AJAX partials, caching, S3, SQS workers, and background exports
 
* Performance and scale rely on pagination, AJAX partials, caching, S3, SQS workers, and background exports
* Live UI is V1; V2 is planned and must remain additive
 
  
 
== [[Login]] ==
 
== [[Login]] ==
Line 274: Line 191:
 
<div style="clear:both;"></div>
 
<div style="clear:both;"></div>
  
 +
 +
== [[Dashboard]] ==
 +
Home screen after login. Shows sales activity at a glance: KPI counts, recent events, a map of rep locations, and an opportunity leaderboard.
 +
Navigation Sidebar CallProof / home icon → Dashboard. Route name: dash_index. Common landing page after login and a common redirect when access is denied elsewhere.
 +
Access Login required. Available to all logged-in company users. Not manager-only. If Terms of Service are not accepted, users are redirected to /tos/ first.
 +
 +
More Info: [[Dashboard]]
 +
 +
[[File:Dashboard.png|300px|thumb|Dashboard]]
 +
<div style="clear:both;"></div>
  
 
== [[Communication Menu]] ==
 
== [[Communication Menu]] ==

Latest revision as of 11:24, 28 July 2026

Path: Callproof Support - New Website


CallProof New Web — Application Overview

CallProof New Web is a multi-tenant SaaS CRM for field sales teams. It combines account and contact management, Twilio calling and SMS, email, GPS and maps, appointments and tasks, sales opportunities, reporting, gamification, and admin tooling. The web app works alongside CallProof Android and iOS apps.

Core stack

  • Python 3.12
  • Django 5.2.3
  • PostgreSQL via psycopg2-binary 2.9.10
  • Apache2 with mod-wsgi 5.0.2
  • Static and media under callproof-static
  • No package.json or Pipfile — frontend libraries are vendored under callproof-static or loaded from CDN

Architecture

Application shape

  • Flat Django project with many domain apps mounted from the root URL config
  • Typical apps: contacts, caller, calls, phone_numbers, sms, em, mail, funnel, report, appointments, followups, map, route, markets, region, event_forms, dash, stats, users, billing, tools, api, and others
  • Shared libraries live in helper and cplib

Multi-tenancy

  • Tenant boundary is Company
  • Authenticated users have a UserProfile linked to a company
  • GetCompany middleware attaches user_profile, company, manager flags, and related context to each request
  • Feature flags on Company control Twilio, People Tab, 2FA, AI, beacons, login limits, and more
  • Data is intended to be company-scoped

UI architecture

  • Current production UI is V1: Django templates, Bootstrap, jQuery, and page-level JavaScript under callproof-static

Menu system

  • Menus are database-driven
  • Hierarchy: MenuMenuColMenuRowNewUIMenuURL, with optional company customizations
  • HomeMenuView builds JSON for the sidebar
  • Items can be gated by manager, tools, dealer, Twilio, and other company or user flags

Background processing

  • Async work uses AWS SQS handlers under cplib/sqs for jobs such as email and IMAP-related processing
  • No Celery or RQ in requirements
  • Scheduled exports and report pipelines run through export and schedule models and related processors
  • Deploy environments may supply SQS settings outside checked-in settings defaults

Technology stack

Backend

  • Django 5.2.3
  • Python 3.12
  • PostgreSQL
  • mod-wsgi

Integrations

  • Twilio — voice and SMS
  • SendGrid — outbound email
  • Mailchimp — marketing lists
  • Google APIs — auth, calendar, Maps / Places
  • HERE Maps — geocoding where used
  • AWS — S3, KMS, SQS, CodeDeploy
  • Firebase — push notifications
  • Duo SAML SSO via python3-saml
  • OAuth — Google, Microsoft, Apple sign-in
  • ChargeOver and Authorize.net — billing
  • Gryphon — DNC where enabled
  • Rev.ai / related ML endpoints — transcription where configured

Frontend

  • Bootstrap
  • jQuery 3.7.1
  • Twilio.js
  • Firebase JS
  • Highcharts
  • flatpickr
  • Choices.js
  • CryptoJS
  • Dexie
  • Sortable
  • sorl-thumbnail — image thumbnails

Security mechanisms

Authentication and access

  • Django auth.User plus UserProfile
  • Complex password rules
  • cp_login_required — login and active company checks
  • manager_required and other resource decorators
  • Optional single-browser login limit per company
  • Optional company 2FA with pyotp
  • Menu-level and permission-flag gating for features such as SMS, call history, and phone numbers

Session and CSRF

  • Django sessions
  • CSRF middleware and trusted origins
  • SameSite cookie handling, with special behavior on mobile /m/ paths
  • X-Frame-Options middleware

SSO and social login

  • SAML 2.0 with Duo IdP for enterprise SSO, including ACS, metadata, and single logout
  • Google, Microsoft, and Apple OAuth paths

Encryption and secrets

  • AES encryption for sensitive email credentials and API-related secrets
  • Client-side CryptoJS for some localStorage values
  • AWS KMS for protected S3 objects where configured
  • Environment-based secrets via dotenv

API security

  • API key and secret authentication
  • Role-style API access models
  • API request logging with payload sanitization

Operational security

  • Login failure throttling via cache
  • Account disabled and suspended company checks
  • Impersonation support through session old_user_id for support or admin flows
  • reCAPTCHA support where configured

Performance optimizations

  • Django cache used for login attempts, filter options, and selected lookups
  • Default cache is LocMem unless production overrides it; shared Redis is not configured in checked-in settings
  • PaginationMixin with configurable rows per page across list screens
  • AJAX partial HTML and JSON responses to avoid full page reloads
  • ORM use of select_related, prefetch_related, and only where implemented
  • sorl-thumbnail for resized images such as logos and avatars
  • Session-stored filter state for heavy list screens
  • Specialized static routes for recordings, greetings, and user files

Scalability

  • Company-based multi-tenancy supports many isolated customers on one application
  • Apache and mod-wsgi multi-process hosting
  • AWS S3 for media, files, and email mailbox storage
  • AWS SQS for asynchronous workers
  • Twilio for telephony and SMS capacity
  • Firebase for push delivery to mobile and web clients
  • Background export and scheduled report pipelines so large jobs do not block the request thread
  • Multiple deploy environments such as apptest, staging, UAT, and production via CodeDeploy

Notable implementation details

  • Thin views with service and utility layers in helper, cplib, and app services
  • Mostly class-based views, with some function-based views and decorators still in use
  • Soft deletes and hide flags on many domain models
  • People Tab switches Contacts vs Accounts wording and enables personnel and Roles
  • CallProof Voice section appears only when company Twilio is enabled
  • System report mail under /mail/ is separate from synced personal email under /em/
  • Logging uses rotating app logs plus console and domain-specific loggers

Deployment and operations

  • Deployed with Apache and mod-wsgi
  • Assets served from callproof-static
  • Media and specialized recording paths under configured static or media URLs
  • Environment variables drive database, Twilio, SendGrid, AWS, OAuth, SAML, maps, and billing configuration
  • CodeDeploy supports multiple environments

Summary

  • CallProof New Web is a Django 5.2 and Python 3.12 multi-tenant field-sales CRM on PostgreSQL
  • Integrates Twilio, SendGrid, Google and Microsoft services, AWS, Firebase, and Duo SAML
  • Security centers on company-scoped access, CSRF, optional 2FA, encrypted secrets, and SSO
  • Performance and scale rely on pagination, AJAX partials, caching, S3, SQS workers, and background exports

Login

Use this screen to sign in to CallProof with your email and password, or with Google, Microsoft, or Outlook. The Login screen lets you securely access your CallProof account so you can use contacts, calls, events, reports, and other features for your company.

From this screen you can also:

Reset a forgotten password Create a new account Sign in with Google, Microsoft, or Outlook Enter a verification code when your company requires extra security

More Info: Login

Login


Signup

Use this screen to create a new CallProof account for your company. The Signup screen lets you register as a new member so you can start using contacts, calls, events, reports, and other CallProof features.

From this screen you can also:

  • Sign up with your company and contact details
  • Continue with Google, Microsoft, or Outlook
  • Go back to Sign in if you already have an account

More Info: Signup

Signup


Dashboard

Home screen after login. Shows sales activity at a glance: KPI counts, recent events, a map of rep locations, and an opportunity leaderboard. Navigation Sidebar CallProof / home icon → Dashboard. Route name: dash_index. Common landing page after login and a common redirect when access is denied elsewhere. Access Login required. Available to all logged-in company users. Not manager-only. If Terms of Service are not accepted, users are redirected to /tos/ first.

More Info: Dashboard

Communication Menu

Where it lives Sidebar phone icon → Communication. The Communication submenu fills dynamically from the company menu. What Communication is for Make calls, send texts, manage recorded voicemails, review call history, maintain Do Not Call lists, and choose which Event Form appears after a call.

Communication Menu

More Info: Communication Menu

People Menu

The People submenu fills dynamically from the company menu. In code, the main list still uses /contacts/ even when the UI says Accounts. What People is for Manage accounts or contacts, build visit routes, and find and merge duplicate records. Related items such as Roles, Companies, Contact Types, and Imports may also appear depending on company settings.

People Menu

More Info: People Menu

Sales Menu

Where it lives Sidebar → Sales. The Sales submenu fills dynamically from the company menu. In code the app and URLs use funnel (for example /funnel/...), but the product labels are Sales and Opportunities. What Sales is for Manage the opportunity pipeline: create and move deals through stages, categorize by type, add opportunity-specific fields, review and export opportunity reports, set dollar or points goals, and define achievement badges tied to the points system.

Sales Menu

More Info: Sales Menu

Report Menu

Where it lives Sidebar → Reports. The Reports submenu fills dynamically from the company menu. In the menu API these items sit under the dashboard group, but they render in the Reports sidebar panel. What Reports is for Review field activity, productivity, appointments, tasks, notes, and rankings. Run scheduled or one-off company reports. Download finished files from My Exports. Some items are full working screens (Appointments, Tasks); others are report or stats views.

Reports Menu

More Info: Report Menu

Settings Menu

The remaining configuration screens allow administrators to customize how CallProof captures business data, organizes accounts and users, manages territories, and configures calling features. These settings include creating custom Event Forms for visit reporting, adding Custom Fields to contacts and opportunities, defining Account Types, Job Titles, Contact Roles, Markets, Territories, and Regions, as well as configuring CallProof Voice features such as Caller ID verification, Twilio phone numbers, Call Result options, Call Overrides, and Auto Text rules. The Info section provides access to the latest product updates through the What's New page. Most of these screens are intended for managers or administrators, and their availability depends on user permissions, company feature flags (such as Twilio or the People tab), and menu customizations. Menu items are loaded dynamically through the NewUIMenuURL configuration using the HomeMenuView.

Settings Menu

More Info: Settings Menu

Support Menu

Support → Submit Support Request. Does not leave the current page. URL: GET and POST /support/ Any logged-in user can use it if the menu item is visible.

What it does Opens a form to describe a problem or question. On submit, CallProof sends an email to the support team. No support ticket is stored in the database — it is email only. Success message: Support Request Sent Successfully.

Form fields Category — required. Choose from support categories (ordered list). Description of Problem or Question — required. Free-text details. Please Contact Me — required. Email, Phone, or Do not contact. Phone Number — shown and required when Phone is selected. Prefills your default phone. Email — shown and required when Email is selected. Prefills your user email.

Support Menu

More Info: Support Menu

Personnel Settings Menu

Where it lives Bottom sidebar icon (Personal Settings). Opens the Personal Settings panel. Shows CallProof logo, personal options, your company name, and Sign out. What Personal Settings is for Manage your own profile and integrations: report subscriptions, profile photo, time zone, linked email accounts, and calendar sync. This is per-user, not company Home → Settings → Customizations.

Personnel Settings Menu

More Info: Personnel Settings Menu


Sign out

Where it lives Personal Settings panel → Sign out. Also available from other session menus that call the same logout action. Tools sidebar may link directly to /logout/. URL /logout/ Purpose End your CallProof web session securely and return to the login screen. Clears local client data and, when Duo SSO was used, can also log you out of the identity provider. Access Available to any logged-in user. Not manager-only. How it opens Click Sign out under Personal Settings. The app calls GET /logout/ by AJAX, shows a success toast, then redirects. What happens when you sign out

Server ends the Django session. Clears browser login tracking on your user profile when this was the active browser session. Logs a web logout event. Duo SSO users get a Cisco Duo logout event instead. Saves a location log for logout when latitude and longitude are available. Clears device push fields used for notifications on that profile. Removes the current session device log row. Client clears IndexedDB and local storage keys such as locations and placeResponse. Shows toast: Logout Successful. Redirects to / or /login/, or to Duo single logout when SSO applies. SSO / Duo logout If you signed in with Duo SSO, logout may redirect to Duo single logout first, then return to the CallProof login page. Related endpoint: /saml2/sls/ handles Duo’s logout response and finishes clearing the local session. If SSO logout fails, CallProof falls back to local logout only.

Example use cases End of day — Sign out so no one else can use your open browser session. Shared computer — Sign out before leaving the desk. SSO user — Sign out of CallProof and Duo together when company SSO is enabled.

Related session behavior If your company limits one active browser login, logging in elsewhere can end the old session. That is separate from clicking Sign out, but the result is similar: you must log in again.

Sign out

More Info: Sign out