Law Practicev1.7 Documentation
Support

Law Practice documentation

Everything you need to install, set up and run your legal practice: clients and advocates, cases and hearings, documents, time and invoices, messages and e-signatures, the client login, your own website, the client app, AI tools and running it as a SaaS.

LaravelMulti-firm SaaSClient appAI tools

Install in minutes   Explore the features

Getting started

Overview

Law Practice is a complete legal practice management system. Run it for your own firm, or as a SaaS: firms sign up, pick a plan and manage clients, cases, hearings, documents, time and invoices in one place, with their own website and a client app.

How the pieces fit together

PartWhat it isWho uses it
Admin panelThe back office: clients, advocates, cases, hearings, documents, billing, reports and settings.Super admin, owner, staff, advocates
Client loginThe same system with a short menu: own cases, hearings, invoices, documents, messages and signatures.Clients
Firm websiteA public website with lawyer profiles, services, a blog, enquiries and a page for the client app.Anyone on the internet
Client appFlutter app for Android and iPhone. One app for every firm; the firm is found by its company code or QR code.Clients
Platform consolePackages, coupons, referrals, transactions, mobile app switches and the landing page.Super admin

Quick-start checklist

  1. InstallCheck the requirements, create the database, upload the files and run the installer.
  2. Log in and secure the accountsUse the default logins once, then change every password.
  3. Switch on the background workAdd the cron line so hearing reminders and queued emails run.
  4. Company and emailIn Settings fill in the company and email (SMTP) tabs. See Settings.
  5. Describe how you workAdd courts, stages, categories and practice areas, then your advocates and clients.
  6. Open your first caseCreate a case, add its hearings, and invoice the work from the Billing menu.
Getting started

Server requirements

Law Practice is built with Laravel. Make sure your hosting meets the following before you start.

PHP
8.1 or newer (8.2 or 8.3 is fine)
Database
MySQL 5.7+ (8 recommended) or MariaDB 10.3+
Web server
Apache (with mod_rewrite) or Nginx
HTTPS
Strongly recommended. Required for online payments and the mobile app.
Cron
One cron line, see Background work

Required PHP extensions

BCMathCtypecURLDOMFileinfoFilterGDHashJSONMbstringOpenSSLPCREPDOSessionTokenizerXML
Note
The installer checks all of this for you in step 2 and shows a green tick next to everything that is fine.

Folders that must be writable

storage and bootstrap/cache. Uploaded logos, photos, documents and signatures are kept under storage/upload. The installer checks these too.

PHP upload limits

Documents can be up to 10 MB and website photos up to 4 MB. Set upload_max_filesize = 12M and post_max_size = 24M in php.ini.

Getting started

Create the database

The steps below use cPanel. Other hosting panels offer the same options under similar names.

  1. Open the database toolIn your hosting panel go to Databases and click MySQL® Databases.
    The Databases section of cPanel
  2. Create the databaseType a name and click Create Database. Your host adds a prefix to the name; write the full name down.
    Creating a database
  3. Create a database userIn Add New User enter a user name and a strong password (use the generator) and click Create User.
    Creating a database user
  4. Add the user to the databaseIn Add User To Database choose the user and the database, then click Add.
  5. Give all privilegesTick ALL PRIVILEGES and click Make Changes.
    Giving the user all privileges
Keep these
Note the database host (usually localhost), database name, user name and password. The installer asks for them in step 5.
Getting started

Upload the files

Upload the contents of the main_file folder from your download to your web root.

  1. Open the File ManagerLog in to cPanel and open File Manager under Files.
    Opening the File Manager
  2. Go to the right folderFor your main domain this is public_html. For a sub-domain or sub-folder, open that folder instead.
    The public_html folder
  3. Upload and extractClick Upload, choose the zip file, wait for 100%, then right-click it and choose Extract. Make sure the files from main_file (including the hidden .htaccess) end up directly in the folder.
  4. CheckYou should see app, bootstrap, config, public, storage, artisan and the other Laravel folders.
Important
Do not upload the documentation or mobile_app folders to the web root. They are for you, not for visitors.
Getting started

Run the installer

A web installer sets up the application in a few minutes.

  1. StartOpen https://yourdomain.com/install in your browser. This starts the App Installation Process.
    The installer welcome page
  2. Check the serverClick Click to Check Your Server Requirements. Everything should be ticked.
    Server requirements check
  3. Check permissionsThe installer checks the folder permissions. When all are fine, click Click to Configure Your App Environment.
    Folder permissions check
  4. Choose the setup typeSelect Using Form Wizard Setup.
    Choosing the form wizard
  5. Enter the app and database detailsFill in the database host, name, user and password from the previous step, plus an application name and the application URL. Click Click to Install.
    Entering the app and database details
  6. FinishWhen you see Application has been successfully installed, click Click here to exit.
    Installation finished
Getting started

After installation

A few minutes of setup now saves problems later.

  1. Log inOpen your site and sign in with a default account.
  2. Change the passwordsOpen Settings → Password for each default account.
  3. Add the cron lineSee Background work. Without it hearing reminders do not go out.
  4. Set up emailSettings → Email SMTP, then send a test message. Invitations, reminders, message alerts and signature requests all use it.
  5. Fill in the company detailsName, logo, address, currency and date format under Settings.
  6. Turn debug offIn .env set APP_ENV=production and APP_DEBUG=false. See Going live.
Getting started

Background work (cron job)

Law Practice does some work on its own: hearing reminders by email, SMS and WhatsApp, and queued messages. A single cron line makes it run.

The scheduler

In cPanel open Cron Jobs and add this line to run every minute. Replace the path with the folder that contains artisan.

* * * * * cd /home/youraccount/public_html && php artisan schedule:run >> /dev/null 2>&1
TaskWhenWhat it does
Hearing reminders (app:hearing-reminder)DailyQueues a reminder for every hearing coming up: email, SMS and WhatsApp to the client and the advocate, once per person per day.

The queue

With QUEUE_CONNECTION=sync (the default) reminders and notices are sent while the page loads. For a busy site use QUEUE_CONNECTION=database and run a worker, for example php artisan queue:work --tries=3 kept alive by your host or Supervisor.

Getting started

Default logins

The installer creates accounts so you can look around straight away.

RoleEmailPassword
Super adminsuperadmin@gmail.com123456
Owner (firm)owner@gmail.com123456
Advocateadvocate@gmail.com123456
Clientclient@gmail.com123456
Change these
These are public. Change every password before you put real data in.
Law practice

Roles and how it fits together

Everyone sees only what belongs to them. The menu changes with the role and with the permissions the owner has given.

RoleWhat they can do
Super adminRuns the platform: customers (firms), packages, coupons, referrals, transactions, mobile app switches, the landing page (CMS) and settings. Cannot see a firm's cases.
OwnerThe firm. Has the full admin panel for their own firm and their own data only, including their website, AI key and client app look.
StaffCreated by the owner under Staff Management. Permissions come from the role the owner gives them.
AdvocateSees only the cases they lead or are on the team of, with their hearings, documents, messages, time entries and invoices.
ClientSees only their own cases, hearings, invoices, documents, messages and signature requests.

The owner's menu

GroupContains
HomeDashboard, Staff Management (users, roles, login history) and Search
Clients & CasesClient, Advocate, Case, Hearing, Calendar, Evidence, Document, Messages, Signatures, File Library and Advice
BillingInvoice, Pending Bank Transfers, Time Tracking and Expense
InsightsReport, Management Reports and Activity Log
CommunicationContact Diary, Notice Board, Email Notification and N8N
My WebsiteWebsite Builder
System SetupMaster (case category and stage, court, document category, judge, practice area, police station), Transactional (matter, tag, task) and Expense Type
AccountPlan & Billing, Mobile App and Settings
Advocates and clients see less
An advocate's menu is Dashboard, Search, Case, Hearing, Calendar, Evidence, Document, Messages, Signatures, File Library, Advice, Invoice, Time Tracking, Notice Board and Settings. A client's is Dashboard, Case, Hearing, Calendar, Evidence, Document, Messages, Signatures, File Library, Advice, Invoice, Notice Board, Get the App and Settings. Whatever permissions a client's role carries, nothing else is offered in their menu.
The owner dashboard
Law practice

Setting up your firm

Describe how you work once, and every case after that is quicker.

WhereWhat to add
System Setup → Master → Case Category / Case StageThe kinds of matter you handle and the steps a case goes through. Shown on cases and in reports.
Master → Court, Judge, Police StationCourts, judges and police stations to pick on a case.
Master → Practice AreaYour areas of law. They also appear on your website.
Master → Document CategoryGroups for documents (contracts, pleadings, correspondence ...).
Transactional → Matter, Tag, TaskMatter types, labels and standard tasks.
System Setup → Expense TypeKinds of expense for the Expense menu.
AI help
On many of these forms an AI button drafts the description for you. It appears when your plan and your AI settings allow it.
Law practice

Clients, advocates and staff

People are added once and reused on every case.

Clients

Clients & Cases → Client. Each client is a login account with contact details and an address. Open a client to see everything for them: their cases, invoices and a timeline of what happened and when. Give them the email and password you set so they can use the client login and the client app.

Advocates

Clients & Cases → Advocate holds your lawyers, with their work history. An advocate's page shows their cases and a timeline. Each advocate gets a login that shows only their own cases.

Staff and roles

Staff Management → User adds secretaries, paralegals and managers. Role lets the owner create roles and tick exactly which pages and actions each role may use (view, create, edit, delete for every module). A plan can limit how many users, advocates and clients you may have (see SaaS administration).

Sign-in history and two-factor

Staff Management → Logged History lists sign-ins with time and place. Each user can turn on two-factor authentication in Settings; when they do they are shown one-time recovery codes in case the phone is lost.

Conflict check

Before accepting a new client, open Search and type a name, email or phone number. It looks through clients, advocates, cases, hearings, documents and the contact diary at once and warns when something matches.

Law practice

Cases

The centre of the system: everything about a matter in one place.

Clients & Cases → Case. A case has an automatic number, a title, the client, the lead advocate, court, judge, stage, matter, category, police station, FIR number, a description and private internal notes. The list can be searched, sorted, exported and filtered by column.

The case list

The case page

The strip at the top shows the next hearing, what has been billed and paid, the time tracked (and how much is not yet invoiced) and how long the case has been open. The tabs are:

  • Case Detail – all the facts and notes.
  • Hearings, Evidences, Invoices, Feedback, Documents – everything filed on the case, each with its own add button.
  • Timeline – hearings, invoices, documents, messages and changes in date order.
  • Messages – opens the conversation with the client.
  • Team – see below.
A case page

Case team

The lead advocate is chosen on the case. On the Team tab add other advocates as Co-counsel, Associate, Junior, Paralegal or Consultant. A team member sees the case, its hearings, documents, messages, invoices and evidence like the lead does, and finds it in search and on their dashboard. Only the owner, staff with edit permission or the lead advocate can change the team.

Tasks and feedback

Tasks can be added to a case (with the standard tasks from System Setup). Feedback records a note from the client or the firm.

Law practice

Hearings and calendar

Never miss a date.

Clients & Cases → Hearing lists hearings; Calendar shows them by month, week, day or list. A hearing has a date and time, a fee, witnesses, the judgement status and reason and a description. Hearings can be invoiced from the case.

The hearing calendar

Your own calendar, kept up to date

On the Calendar page press Create my calendar address. Subscribe to that private address in Google, Outlook or Apple Calendar and hearings appear and update by themselves, each with a one-hour reminder. Everyone gets a feed of only the hearings they may see. Make a new address cancels the old one. The older Export to calendar (.ics) button still gives a one-off file.

Reminders

The daily cron sends reminders for upcoming hearings by email, SMS and WhatsApp (see Messages and automation).

Law practice

Evidence, documents and files

Keep every paper with its case.

  • Evidence – evidence items per hearing with who it favours and attachments.
  • Document – documents per case with a category, notes and one or more attachments. Clients can add documents to their own cases too.
  • File Library – one searchable list of every attached file, with the number of files and the space used, and a filter by type (PDF, images, text documents, spreadsheets). Sizes show for files kept on this server; files on S3 or Wasabi show without a size.
The file library
Storage
Files are kept on your server by default. Settings → Storage (super admin) can switch to AWS S3 or Wasabi.
Law practice

Advice

For consultations before a case exists.

Clients & Cases → Advice records an advice matter with the client, advocate, date, fee and notes. When the client decides to go ahead, convert it to a case in one step.

Law practice

Time, invoices and payments

From hours worked to money received.

Time tracking

Billing → Time Tracking. Press Start timer (also on the dashboard) on a case, or add an entry by hand. Mark entries billable and give an hourly rate. The dashboard and the case page show unbilled time so nothing is forgotten; invoicing it marks the entries as billed.

Invoices

Billing → Invoice. Create an invoice from a case with as many lines as you need (you can pull in hearings). The status moves from open to paid as payments arrive. The invoice page shows the lines, payments and the balance, and can be printed.

The invoice list

Payments

Clients can pay online when you switch on a gateway in Settings → Payment: Stripe, PayPal, Flutterwave, Paystack, Razorpay and Bank Transfer. A bank transfer is recorded as pending with the client's receipt; it only counts once you approve it in Billing → Pending Bank Transfers. A transaction reference can only be used once, so a payment cannot be counted twice.

Expenses

Billing → Expense records what the firm spends per case or in general, using the expense types you set up.

Law practice

Reports and insights

See how the firm is doing.

Management Reports

Insights → Management Reports are for the owner. Each one has a date filter, a CSV download and a Print button.

ReportAnswers
Receivables ageingWho owes you money, and for how long (0-30, 31-60, 61-90, over 90 days).
Revenue vs expensesBilled, collected and spent, month by month.
Time & billingHours worked, billable share and unbilled value.
CaseloadOpen and closed matters, and how long they have been open.
Hearing outlookEverything scheduled in the coming weeks.
Website enquiriesLeads from your website by month and topic.
AI usageRequests by provider and month.
The receivables ageing report

Report

Insights → Report holds the classic lists: Advice, Cases, Hearing, Evidence, Document, Invoice and Expense reports, each with filters.

Activity log

Insights → Activity Log shows who created, changed or deleted what, and when – useful for accountability. The same events appear in case, client and advocate timelines.

Law practice

Search, Jump-to and other tools

Small things that save time.

  • Search – one box across clients, advocates, cases, hearings, documents and contacts (see Conflict check).
  • Jump to – press Ctrl + K (or /) anywhere. Type a page name, a client, a case or an invoice number, use the arrow keys and press Enter. It only offers what the person is allowed to open.
  • Exports – CSV on the list pages and reports; .ics for hearings.
  • Contact Diary – people who are not clients (opponents, witnesses, courts' clerks).
  • Notice Board – announcements for staff and clients.
Search and conflict check
Law practice

Dashboards

Each role gets a dashboard for its own work.

  • Owner – Today & needs your attention (hearings today, open cases, bank transfers to confirm, new website enquiries, overdue invoices, unbilled time), billed / collected / still to collect, the next 7 days, quick actions (new case, client, invoice, start timer, conflict check), website status, AI use, a this month vs last month strip and charts of cases by stage and status.
  • Advocate – their own cases, hearings, time and invoices.
  • Client – their cases, documents, payments and upcoming hearings.
  • Super admin – platform pulse: customers, plans, subscriptions ending soon, transactions and income.
The advocate dashboard
The client dashboard
The super admin dashboard
Client collaboration

Messages

Talk about a case without leaving the system.

Clients & Cases → Messages lists conversations with an unread count; open a case and press Messages to write. Each case has one conversation, seen by the client, the lead advocate, the case team and the firm's staff. Messages are plain text up to 2,000 characters.

  • Opening a conversation marks it read.
  • The other people get an email alert (at most one per person per case every 30 minutes) and, for clients, an item in the app inbox.
  • Nobody outside the case, and no other firm, can read or write in it.
Client collaboration

E-signature

Get a document signed without printing it.

  1. Pick the fileOpen File Library and press Request signature next to a file kept on your server.
  2. Say who signsEnter the signer's name and email, an optional note and how many days the request stays valid (default 14). If the email is one of your clients the request also appears in their login and the app.
  3. Send the linkCopy the private signing link (the signer also gets it by email). The signer needs no account: they read the document, type their full name, draw their signature and tick the consent box – or decline.
  4. Keep the proofThe Certificate shows who signed, when, from which IP address and browser, the drawn signature and a SHA-256 fingerprint of the exact file. It also tells you whether the stored file is still identical to the one that was signed.
What it is
This is a simple electronic signature: a drawn and typed name with an audit trail. Whether it is enough for a given document depends on your jurisdiction. If the file is changed after the request was made, signing is blocked and you send a new request.
Client collaboration

Client login

Clients get their own, much shorter, workspace.

  • Dashboard – their cases, documents, payments and upcoming hearings.
  • Case, Hearing, Calendar, Evidence, Document – only their own matters. They can add documents to their cases.
  • Messages and Signatures – write to the firm and sign what was sent to them.
  • Invoice – see invoices and pay online.
  • Get the App – the firm's QR code, company code and store buttons for the client app.
The Get the App page for clients
Website & mobile

Firm website

Every owner gets a public website, built from blocks they can edit, on their own domain if they like.

Owners open My Website → Website Builder. Until the site is switched on only the owner can see it. A new site is created with Home, About, Services, Practice areas and Contact pages so there is something to edit straight away; its colours follow the owner's own application theme until they choose others.

The Website Builder

What you can edit

TabWhat it does
GeneralFirm name, tagline, address, phone, email, social links, whether to show a client login link, and the closing banner.
PhotosThe picture library used everywhere on the site.
LawyersLawyer profiles with photo, title, practice areas and biography. Each gets its own page. Advocates can upload their photo in their own login.
ServicesFixed-fee services with price, duration and what is included.
Practice areasA page for each area of law, listing the lawyers and services for it.
DesignColours, font, corner style and light or dark. Choose "same as my application theme" to follow your own colours.
Pages & postsPages built from blocks (hero, text and picture, cards, steps, FAQ, team, reviews, gallery and more) and a blog.
Menu & footerThe header menu and footer links and text.
DomainYour address on this platform, and an optional own domain.

Enquiries and reviews

Visitors send an enquiry through the form; it lands in Enquiries and the owner is notified. Visitors can also leave a star review, which the owner approves before it is shown.

Your own domain

  1. Point the domain at your serverAt your domain registrar create an A record for the domain (and www) pointing at this server's IP address, and make your web server accept that host name.
  2. Enter itIn the Domain tab type the host name, for example www.hale-law.com, without https://. The page checks the DNS for you.
  3. Switch the website onTick Website is live and save.
  4. CheckOpen the domain. Every page is served on it, and the address on this platform keeps working too.
HTTPS
Install an SSL certificate for each custom domain on your hosting panel (for example a free Let's Encrypt certificate) so visitors see the padlock.

Search engines

Every page has its own title, description and canonical address, and sitemap.xml and robots.txt are made for you. Pages you have not published are never listed.

Client app page

Every website has a Client app page (linked in the footer) showing the firm's company code, QR code and the store buttons. It disappears if the platform switches the firm's app off.

Website & mobile

Client app

A Flutter app for the firm's clients, for Android and iPhone. The app is an add-on: its source code comes in the add-on's mobile_app folder, and the server side (API, company codes, QR, branding, console) is included in the main package.

FolderAppFor
client_app/android_app and iphone_appLaw ClientClients

The two projects share the same code in lib/; only android/ and ios/ differ. client_app/check-sync.sh tells you if they drift apart.

What clients can do

  • Home – amount due and paid this year, the next payment, documents waiting for a signature, unread messages, the next hearings, cases by status, recent activity, new documents, "My legal team" with one-tap call and email, notices from the firm and quick actions.
  • Cases – search; each case shows its facts, hearings, legal team, evidence and history. From a case the client can message the firm, add a document or request a meeting. Internal time and expenses are never shown to clients.
  • Messages – one conversation per case.
  • Invoices and payments – lines, payments and balance, pay online (opens the firm's secure payment page in the browser, already signed in), and a payment history that also shows bank transfers waiting for the firm to confirm.
  • More – Hearing calendar (with add to my phone's calendar), hearings by case, Request a meeting (written in the case conversation), My legal team, Payments, Notice board, Documents (open files; add a picture or a PDF, Word or text file up to 10 MB) and Signatures (read, sign with a finger, or decline).
  • Inbox – what the firm sent: messages, hearings, invoices, documents to sign.
  • A fingerprint or face lock, two-factor sign-in, and a profile and password page.

Company code and branding

The app is published once and serves every firm. A client finds their firm by typing the company code, scanning the firm's QR code or opening its invite link (/join/your-code). The app then shows that firm's logo, name, colour and welcome text before the client signs in with the email and password the firm gave them. An account that belongs to another firm is refused.

Owner: open Account → Mobile App to see the company code and QR, and to change the name shown in the app, the colour, welcome text, support phone and email, the logo, and which sections clients see (cases, hearings, invoices, documents, messages, signatures, notice board). A hidden section is refused by the server too, not only hidden in the app.

The Mobile App page of an owner

Super admin: open Customers & Billing → Mobile Apps. Enter the Android and iPhone store links, the minimum app version (older apps are asked to update), a maintenance message (the app pauses while it is filled) and the defaults for new firms. The list shows each firm's code, clients, devices, last use and an On / Off switch; turning a firm off signs its clients out at once. Only the super admin publishes the app.

The Mobile Apps console of the super admin

Signing in and security

Email and password, a two-factor code (or a recovery code) when it is on, and an optional fingerprint or face lock. Sign-ins last 90 days (SANCTUM_EXPIRATION_MINUTES); changing the password signs the person out of their other phones. Only clients can use the app; staff sign in on the website.

Website & mobile

Build and publish the app

You need the Flutter SDK (flutter doctor). Open a project folder, for example mobile_app/client_app/android_app.

flutter pub get
flutter run --dart-define=API_BASE_URL=https://your-server
flutter test && flutter analyze
flutter build appbundle --dart-define=API_BASE_URL=https://your-server   # Android (Google Play)
flutter build ipa       --dart-define=API_BASE_URL=https://your-server   # iPhone, on a Mac with Xcode

Leave API_BASE_URL out and the sign-in screen asks for the server address (handy while testing; debug builds accept plain http://).

Run the checks first
The app's code was adapted from a proven base but written without a Flutter SDK to compile it. Run flutter pub get, flutter analyze and flutter test and fix anything the analyser reports before you publish.

Before publishing

  • Application id / bundle id – com.lawpractice.law_client (Android) and com.lawpractice.lawClient (iPhone). Change them to your own.
  • Android signing – create a key with keytool and put its details in android/key.properties (it is git-ignored).
  • Icons – replace assets/icon.png and assets/icon_foreground.png, then run dart run flutter_launcher_icons.
  • iPhone – open ios/Runner.xcworkspace on a Mac, set your team and bundle id.
  • Store links – once the app is live, enter its links under Mobile Apps so firms' invite pages and websites show them.
  • Invite links – lawclient://join/<code> opens the app. To make normal https://your-server/join/<code> links open it too, add Android App Links / iPhone Associated Domains for your domain.
  • Push notifications (optional) – add google-services.json / GoogleService-Info.plist to the app. On the server create a Firebase service account key (Firebase console → Project settings → Service accounts → Generate new private key), save it outside the web root and set FCM_CREDENTIALS=/full/path/to/key.json in .env. Every inbox item (new message, hearing, invoice, document to sign) is then pushed to the client's phones. The Mobile Apps page shows whether push is on; without it the in-app Inbox still works.
AI & automation

AI tools

Use the AI service you prefer, and let each firm bring its own key.

Open Settings → AI Settings. The platform supports OpenAI, Anthropic Claude, Google Gemini and any OpenAI-compatible service.

  • Each owner adds their own key and picks a default provider. Keys are stored encrypted and never shown again.
  • The plan decides which providers a firm may use and how many AI requests it gets per month (see SaaS administration). The dashboard shows the use.
  • Where it appears – an AI button on forms such as case category and stage, advice, evidence, hearing, task and custom pages drafts the description for you. Test a provider from the settings page before relying on it.
  • Usage – the AI usage management report lists requests by provider and month.
AI & automation

Messages and automation

The system tells people what they need to know.

  • Email notification templates – Communication → Email Notification: edit the wording and switch each message on or off.
  • SMS and WhatsApp – add your Twilio details under Settings; hearing reminders and other messages can then go by SMS or WhatsApp.
  • Hearing reminders – sent by the daily cron through the queue, once per person per day, with a retry if the mail server is busy.
  • Message and signature alerts – emailed when a message is posted and when a signature is requested, signed or declined.
  • n8n – Communication → N8N sends events (new case, hearing, invoice ...) to your n8n workflows by webhook.
Administration

Settings and integrations

Everything under Account → Settings.

TabWhat it holds
AI SettingsYour AI providers and keys.
Account / Password / 2FAYour profile, password and two-factor sign-in.
General / CompanyLogo, company name, address, currency, date and time format, time zone.
Email SMTPMail server for every message the system sends. Send a test email after saving.
PaymentCurrency and the payment gateways: Bank Transfer, Stripe, PayPal, Flutterwave, Paystack, Razorpay.
SEO / reCAPTCHA / StorageSite SEO, Google reCAPTCHA on login and register, and cloud storage (super admin).
ThemeColour presets or a custom colour, light or dark mode, font, RTL layout.
Administration

Languages and themes

Twelve languages are included.

Arabic, Danish, Dutch, English, French, German, Italian, Japanese, Polish, Portuguese, Russian and Spanish. Each user picks a language in the top bar; Arabic switches the layout to right-to-left. Translations live in resources/lang. The theme (colour, font, light or dark) is set in Settings, and the firm website can follow it.

Administration

API

A REST API serves the client app and can be used by your own tools. The full list of calls is in mobile_app/client_app/android_app/docs/client-api.md.

  • Base address https://your-server/api/v1; answers are JSON {"data": ...} or {"message", "code"}.
  • Bearer-token authentication (Laravel Sanctum). POST auth/login with the email, password and company code returns a token valid for 90 days.
  • Public calls: GET company/{code} (a firm's look) and GET platform (maintenance, minimum version, store links).
  • A client's own data under /client/...: dashboard, cases, hearings, invoices, documents, messages and signatures. Each section can be hidden by the firm.
  • Every call checks the platform rules: 426 app too old, 503 maintenance, 403 firm switched off or account inactive.
  • Files are opened through ten-minute signed links; an invoice page opens through a one-time sign-in link.
Administration

SaaS administration

What the super admin does to run the platform.

  • Customers – every firm, with its plan and status. Impersonate logs you in as an owner to help.
  • Pricing → Packages – monthly, quarterly or yearly plans with limits for users, advocates and clients, and features: logged history, AI providers and monthly AI limit, website and mobile app. Transactions lists payments and lets you approve bank transfers.
  • Coupons – discount codes with usage limits, and the history of who used them.
  • Referrals – switch the programme on and set the bonus days. See below.
  • Mobile Apps – store links, minimum version, maintenance and the per-firm switch (see Client app).
  • Landing Site → CMS – edit the public landing page, custom pages, FAQ and footer. The landing page, the register page, pricing and owner email verification can each be switched on or off.
The Referrals page of the super admin

Referral programme: give a month, get a month

  1. Switch it onSuper admin: Customers & Billing → Referrals, tick Referral programme is on and set the bonus days (default 30).
  2. Owners share a linkEach owner finds a personal link under Account → Refer & Earn, like /register?ref=ABCD2345.
  3. A new firm signs up through itThe code is remembered on the register page and the new owner is recorded as referred by that firm. Unknown codes and a firm referring itself are ignored.
  4. The first paid plan pays outWhen the new firm is put on a plan that costs money, both firms get the bonus days added to their subscription – once per referred firm. Free plans pay nothing.
Operations

Upgrading

Always back up first.

  1. Back upDownload your .env file, .htaccess and the storage folder, and export the database.
  2. Replace the filesUpload and replace everything with the contents of main_file from the new version.
  3. RestorePut your .env, .htaccess and storage back.
  4. Run the updateRun php artisan migrate --force on the command line (or follow the update wizard if your version has one).
  5. Clear cachesRun php artisan optimize:clear (or delete the files in bootstrap/cache and storage/framework/views).
Language files
Upgrading overwrites the language files in resources/lang. Keep a copy of any translation you changed. Changes to core files are also lost, so keep your own customisations separate.
Disclaimer
We cannot recover data lost during a manual update. Follow the backup steps carefully.
Operations

Going live checklist

Before real customers use it.

  • APP_ENV=production, APP_DEBUG=false and the correct APP_URL (with https).
  • Change all default passwords and turn on two-factor for owners.
  • Use QUEUE_CONNECTION=database with a queue worker and the cron line so emails and reminders are sent in the background.
  • Set up SMTP and send a test email; set up the payment gateways in live mode.
  • Install an SSL certificate (also on every custom website domain).
  • Run the web server and the cron job as the same user, so cached files can be shared (see Troubleshooting).
  • Run php artisan migrate and php artisan optimize:clear after every update.
  • Take regular database and storage backups, including storage/upload.
  • Never copy a .env file or session files into a public code repository.
Operations

Troubleshooting and FAQ

Common problems and what to try.

ProblemTry this
A blank page or 500 errorCheck storage/logs/laravel.log. Make sure storage and bootstrap/cache are writable, then run php artisan optimize:clear.
"Failed to open stream" for a cache or view fileThe web server and the cron job (or a command you ran) run as different users, so one cannot overwrite the other's cached files. Run both as the same user, or make storage and bootstrap/cache writable by both, then clear the caches.
A new menu item or permission does not showPermissions are cached. Run php artisan optimize:clear; if it persists, log out and in.
Emails are not sentCheck Settings → Email SMTP and send a test. With a database queue, make sure the queue worker is running.
Hearing reminders do not arriveConfirm the cron line runs every minute, SMTP works, and (for SMS / WhatsApp) the Twilio details are right.
The client app says the company was not foundCheck the code, that the platform has the firm's app switched On under Mobile Apps, and that the app's server address points at this site.
The app asks to update, or says maintenanceThe minimum version or maintenance message is set under Mobile Apps. Clear it to let everyone in.
A custom domain shows the wrong siteCheck the A record, that your web server accepts the host name, and that the domain is saved in the website's Domain tab.
A client cannot sign in to the appThey must be a client with a verified email and an active account, and the company code must be their firm's. Staff cannot use the client app.
Uploads failRaise upload_max_filesize and post_max_size in php.ini.
Operations

Environment variables

Set in the .env file. Run php artisan optimize:clear after changing it.

KeyDefaultPurpose
APP_ENV / APP_DEBUG / APP_URL-Environment, debug output and the public address.
DB_*-Database host, name, user and password (set by the installer).
MAIL_*-Fallback mail server; each firm normally sets its own under Settings.
QUEUE_CONNECTIONsyncdatabase sends reminders and notices in the background (needs a queue worker).
SANCTUM_EXPIRATION_MINUTES129600How long an app sign-in lasts (90 days).
FCM_CREDENTIALS-Full path to the Firebase service-account key; turns on push notifications to the client app.
Operations

Change log

What changed, newest first.

Version 1.7 – 31 October 2026

  • Client app for Android and iPhone (Flutter, available as an add-on) with company code and QR sign-in, firm branding, a platform console and a client API.
  • Messages per case, e-signature with certificates, case team, client document upload and the file library.
  • A public website for every firm with a block editor, lawyer profiles, services, blog, enquiries, reviews and custom domains.
  • Time tracking, management reports, search, conflict check and the Jump-to palette, activity log and timelines.
  • Private calendar address for Google, Outlook and Apple Calendar.
  • Multiple AI services with each owner's own key, included by plan with a monthly limit.
  • Referral programme, email alerts for messages and signature requests, queued hearing reminders.
  • Stronger access control, bank transfer approval, two-factor recovery codes; menus regrouped and shortened for advocates and clients.

Version 1.6 – 4 June 2026

  • WhatsApp notifications, Razorpay, hearing reminders by cron, new UI and dashboards.

Version 1.5 – 18 February 2026

  • Twilio SMS and templates, reports, n8n and ChatGPT integration.

Earlier versions

  • 1.4 (23 Aug 2025) – AWS / Wasabi storage, categories, documents, calendar, client and advocate logins, feedback, Paystack.
  • 1.3 (29 Feb 2025) – landing page CMS, pricing switch, 2-factor, impersonate, custom colour.
  • 1.2 (16 Dec 2024) – email notification switch, owner email verification, templates.
  • 1.1 (21 Sep 2024) – Flutterwave.
  • 1.0 (30 Jul 2024) – initial release.
Operations

Support

Stuck? We are happy to help.

Open a ticket at support.smartwebinfotech.com. Please include your purchase code, the page you were on, what you expected and what happened, and, if you can, the last lines of storage/logs/laravel.log.