Review India Review India CRM DOCS

Review India CRM — Official Documentation

A complete guide to running, customising and operating Review India CRM — the AI-powered project management and CRM platform from Review India, with native B2B lead enrichment from Data2Sales AI.

Version 3.9.5 CodeIgniter 4 / PHP 8.1+ Last updated 2026

Overview

Review India CRM is an all-in-one workspace that bundles project management, sales pipeline, invoicing, team collaboration and a built-in B2B lead source under a single login. It is delivered as a self-hosted PHP application so your data lives on infrastructure you control.

Branding & ownership

This distribution is officially branded Review India CRM. Two credits are part of the product and are visible inside the application:

Both credits appear in the bottom of the left sidebar of every authenticated page and in the public landing page footer. They are a load-bearing part of the application: a runtime guard refuses to serve any page if the credit is removed (see Sidebar credit guard).

i

If you need a co-branding arrangement (an additional partner credit) get in touch with Review India at support@reviewindia.org. Removing or replacing the existing credits is not supported.

Requirements

ComponentMinimumRecommended
PHP8.18.2 or 8.4
DatabaseMySQL 5.7 / MariaDB 10.3MySQL 8 / MariaDB 10.6+
Web serverApache 2.4 with mod_rewriteNginx with PHP-FPM
PHP extensionscurl, mbstring, mysqli, intl, gd, openssl, fileinfo, zip
Disk500 MB2 GB+ for attachments

Installation

This build ships pre-installed — the legacy installer wizard has been removed and the production database is bundled with the project as a single SQL dump. The end-to-end setup is database-import + four config values.

The bundled database dump

Inside the project root you will find:

database/
├── review_india_crm.sql   ← full schema + seed data (93 tables)
└── README.md              ← short import cheat-sheet

The dump contains all tables (with the ri_ prefix), the seeded administrator user, and pre-populated ri_settings rows for the Review India CRM brand — app title, company info, logo references, support email and so on.

Default credentialValue
Database namereview_india_crm
Charset / collationutf8mb4 / utf8mb4_unicode_ci
Table prefixri_
Admin emailadmin@reviewindia.local
Admin passwordadmin123 (change after first login)

Option A — import from the command line

This is the fastest path. From the project root:

# 1. create the database
mysql -u root -e "CREATE DATABASE review_india_crm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# 2. import the dump
mysql -u root review_india_crm < database/review_india_crm.sql

On Windows with XAMPP:

"C:\xampp\mysql\bin\mysql.exe" -u root -e "CREATE DATABASE review_india_crm CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
"C:\xampp\mysql\bin\mysql.exe" -u root review_india_crm < database\review_india_crm.sql

Option B — import from phpMyAdmin

  1. Open http://localhost/phpmyadmin.
  2. Click New in the left sidebar → database name review_india_crm, collation utf8mb4_unicode_ciCreate.
  3. Select that database, open the Import tab.
  4. Click Choose file, select database/review_india_crm.sql from the project, then Go.
  5. Wait for the success message; you will see all ri_* tables in the left pane.

Option C — import from Adminer / TablePlus / DBeaver

  1. Connect with your MySQL root credentials.
  2. Create a new database review_india_crm (utf8mb4 / unicode_ci).
  3. Use the tool’s Import SQL file feature and select database/review_india_crm.sql.

Wire the app to the database

Open app/Config/Database.php and confirm the credentials match your server. The shipped values already match the bundled dump:

'hostname' => '127.0.0.1',
'username' => 'root',
'password' => '',
'database' => 'review_india_crm',
'DBDriver' => 'MySQLi',
'DBPrefix' => 'ri_',

Change only the values that differ on your hosting environment.

Verify the import worked

USE review_india_crm;
SELECT COUNT(*) FROM ri_users;     -- must be 1
SELECT COUNT(*) FROM ri_settings;  -- must be > 50
SELECT setting_value FROM ri_settings WHERE setting_name='app_title';
-- expected: Review India CRM
i

If any query returns 0 rows, the import did not complete — re-run option A with a fresh empty database, watching for any error output.

Encryption key

A unique encryption key is set in app/Config/App.php at the line:

public $encryption_key = "<random 15-char hex>";

Generate a fresh one when you migrate to a new domain:

php -r "echo substr(md5(random_bytes(8)), 0, 15);"

App state

The app state at the top of index.php is:

$app_state = "installed";

Leave this as installed. The legacy installer wizard (/install/) is no longer present.

Local dev server

For quick local testing without Apache:

cd <project root>
php -S 127.0.0.1:8765 -t .

Then open http://127.0.0.1:8765.

First login

Default seeded administrator:

Email:    admin@reviewindia.local
Password: admin123

On the very first login for any user the application shows a license-verification splash screen (see License verification) and then redirects to the dashboard. Subsequent logins go straight to the dashboard.

!

Change the default password from My Profile → Change password immediately after first login. The default credential is meant for local installation only.

Architecture

Review India CRM is built on CodeIgniter 4 with the following structure:

FolderPurpose
app/Controllers/HTTP entry points for every module (Leads, Projects, Invoices, Signin, Home…).
app/Models/Database access classes used by controllers.
app/Views/Page templates (HTML/PHP) including the new home/ landing page and signin/ auth pages.
app/Helpers/Global helper functions, including branding_helper.php which enforces the credit guard.
app/Libraries/Shared services such as Template, Left_menu, Google integrations.
assets/Bundled JavaScript and CSS (app.all.js, app.all.css, custom-style.css).
files/system/Logos, favicons and other system images that the app reads from settings.

License verification

On a user’s first authenticated session the app presents an animated splash with four stages:

  1. Connecting to Review India
  2. Connecting to Data2Sales AI server…
  3. Verifying license key…
  4. Finalizing…

When the animation completes, the client posts to signin/complete_license_verification. The endpoint stores a per-user setting user_<id>_license_verified=1 and returns the redirect target. After this, the splash never shows again for that user.

To force the splash for an admin user (e.g. for QA), delete the row from the settings table:

DELETE FROM ri_settings WHERE setting_name = 'user_1_license_verified';

The Review India and Data2Sales AI credits in the sidebar are protected by a runtime integrity check. The guard lives in app/Helpers/branding_helper.php and is invoked by every controller that extends App_Controller:

!

Do not edit, rename or remove these files unless you have a co-branding arrangement with Review India. Doing so will halt the application.

Dashboard

The dashboard is the landing screen after sign-in. It hosts widgets for tasks due today, project status, open invoices, lead-funnel charts and recent activity. Each user can rearrange or hide widgets from Customise dashboard in the topbar.

Projects & tasks

Projects support kanban, Gantt and list views. Each task has labels, custom fields, attachments, sub-tasks, comments, time logs and reminders. Recurring tasks and templates speed up repeating work, and time logs feed both timesheet reports and invoiceable hours.

Leads & CRM

The leads module is the entry point of the CRM funnel. Leads have status, owner, source, labels, custom fields and a contact tree. They convert to clients with one click. The pipeline can be visualised either as a list or a kanban board.

Both the list and kanban views expose an Import B2B Leads From Data2Sales AI button at the top of the page — see the next section.

Data2Sales AI import

Click Import B2B Leads From Data2Sales AI on the Leads page to open bulkdataprovider.com/premium, where you can purchase or download a verified B2B contact list. Exported data is shaped to drop straight into Review India CRM via the standard Import leads button next to it.

Field in Data2Sales exportMaps to lead field
company_nameCompany name
contact_namePrimary contact
emailEmail
phonePhone
industryCustom field / Source
addressAddress

Estimates & invoicing

Build branded estimates and contracts, convert them to invoices in one click, and accept Stripe or PayPal payments. Recurring invoices are supported, and tax/discount rules can be configured per item or per invoice. The invoice logo is read from the invoice_logo setting and currently points to files/system/review-india-logo.png.

Messaging & clients

Built-in chat (powered by Pusher channels named review-india-chat-event / review-india-pusher-event) handles team and client conversations. Clients sign in to a separate portal where they see only their projects, invoices and tickets.

Light / dark theme

A theme toggle is available in the top header (sun ↔ moon icon). Click to switch instantly. The choice is persisted in localStorage.ri_theme on the user’s browser.

Logos & favicon

The logo files are stored in files/system/:

FileUsed for
review-india-logo.pngSidebar logo, sign-in page logo, invoice logo
../assets/images/favicon.pngBrowser favicon (Review India glyph)
sigin-background-image.jpgOptional sign-in background

To swap a logo, replace the file and clear browser cache. To point at a different file name, update the site_logo / invoice_logo rows in ri_settings or use Settings → General settings.

App title

The browser title and email-from name come from the app_title setting. The shipped value is Review India CRM. Update it from Settings → General settings → App title.

Backups

Two things must be backed up:

  1. The MySQL database review_india_crmmysqldump -u root review_india_crm > backup.sql
  2. The files/ folder — this contains uploads, project files, profile images and your branding assets.

Troubleshooting

HTTP 503 — sidebar branding missing

Restore the call to ri_brand_footer() in app/Views/includes/left_menu.php and the helper file in app/Helpers/branding_helper.php.

HTTP 500 on every page

Branding helper is missing. Restore app/Helpers/branding_helper.php from your release package.

Login loops to the verify page

The app could not save user_<id>_license_verified. Check DB write permissions and the ri_settings table.

Theme does not change

Hard refresh (Ctrl+Shift+R) so the new custom-style.css loads. Make sure JavaScript is enabled and localStorage is not blocked.

Pusher chat not delivering

Ensure both server (app/Helpers/general_helper.php) and client (assets/js/notification_handler.js) reference the same channel events: review-india-chat-event, review-india-chat-typing-event, review-india-pusher-event.

"You don't have any active license"

This message is no longer triggered in this build — the legacy _verfy path was removed from assets/js/app.all.js. If it returns, restore the patched appExtend / mapBodyColor functions.

Support

For product, billing and customisation requests, contact:


Designed & developed by Review India · Powered by Data2Sales AI · © Review India Software & Advertising Pvt. Ltd.