Getting Started

Introduction

Welcome to Acois — a complete Laravel SaaS platform for invoicing, ERP, and CRM. This documentation covers everything from uploading files to publishing the mobile app on the App Store.

Read this documentation top to bottom on your first install. Each section builds on the previous one. If you get stuck, see Troubleshooting or contact support.

What is Acois?

Acois is an AI-powered, multi-company SaaS script built on Laravel (PHP). One installation supports unlimited companies — each with full data isolation, their own roles, staff, invoices, and CRM pipeline.

Invoicing & BillingProfessional invoices, quotes, sale & purchase orders with 10 PDF templates.
CRM & Lead PipelineKanban board, followup timeline, meetings calendar, convert-to-client in one click.
HR & PayrollAttendance, salary generation, advance payments, PDF payslips, Excel export.
AI FeaturesAI chat assistant, email writer, report analysis — powered by OpenAI GPT-4o-mini.
15 Business ReportsSales, P&L, GST (GSTR-1), Invoice Aging, Year-on-Year, Client Statement & more.
Email CampaignsBulk email campaigns to CRM leads with AI-written content and delivery logs.
Social Media PostingPost to Facebook, Instagram, LinkedIn, Twitter, YouTube & Pinterest from one panel.
Staff Mobile AppReact Native app for Android & iOS — attendance, CRM, todos, meetings on the go.

SaaS Architecture

Every database query is automatically scoped to the logged-in user's company_id. Data is completely isolated between companies.

RoleAccess
Super AdminManages all companies, subscriptions, global SMTP, and platform settings via /admin
Company AdminOwns a company workspace — full access to all modules
StaffTeam members with Role & Permission-based access, added by the Company Admin

Tech Stack

LayerTechnology
Backend FrameworkLaravel (PHP 8.3+)
FrontendBlade Templates, Tailwind CSS
Mobile AppReact Native (Expo) — Android & iOS
DatabaseMySQL 5.7+ / MariaDB 10.4+
PDF EngineBarryvdh DomPDF
ChartsApexCharts
AIOpenAI GPT-4o-mini
Payment GatewaysStripe, Razorpay, PayPal, Flutterwave
Mobile AuthLaravel Sanctum (API tokens)
Getting Started

What's Included

Your purchase includes the full Laravel web application source code, the React Native mobile app source code, and this documentation.

Acois_CRM/ # Main Laravel web app ├── app/Http/Controllers/ # All feature controllers ├── app/Models/ # Eloquent models (company-scoped) ├── app/Http/Middleware/ # CheckInstalled, auth, subscription ├── database/ │ └── acois.sql # Full schema + seed data (133 KB) ├── resources/views/ # Blade templates ├── public/ # Web root — point your domain here ├── routes/web.php # Web routes (includes /install) ├── routes/api.php # Mobile API routes ├── storage/ # Uploads, logs, cache (writable) ├── .env.example # Environment config template └── composer.json Mobile_App/ # React Native (Expo) source ├── src/screens/ # App screens ├── src/components/ # Reusable components ├── src/constants/api.ts # ← Set your API base URL here ├── app.json # App name, icons, bundle ID └── assets/ # Icon (1024×1024) + splash screen Docs/ # This documentation
The vendor/ folder is pre-included — you do not need to run composer install on your server. Just upload and run the web installer.
Getting Started

Server Requirements

Verify your hosting environment meets these requirements before uploading. The web installer checks all of these and shows a requirements report screen.

RequirementMinimumNotes
PHP8.3+8.3 or 8.4 recommended
MySQL / MariaDBMySQL 5.7 / MariaDB 10.4MySQL 8.0+ preferred
Web ServerApache or NginxApache: mod_rewrite must be enabled
PHP ExtensionsPDO, mbstring, openssl, curl, zip, GD, tokenizer, xml, ctype, json, bcmath, fileinfoAll checked by installer
Writable Pathsstorage/, bootstrap/cache/Set to 755 or 775
PHP Memory Limit256 MB512 MB recommended for PDF generation
Max Upload Size10 MBupload_max_filesize in php.ini

Apache .htaccess

Acois ships with a public/.htaccess for URL rewriting. Ensure AllowOverride All is set in your Apache VirtualHost.

Nginx Configuration

location / {
    try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
}
Your domain's Document Root must point to the public/ folder, not the Laravel root. This is standard for all Laravel applications.
Web App Installation

Upload Files

Upload the Acois web app files to your server via FTP/SFTP or your hosting file manager.

  1. Extract the downloaded ZIP on your local computer. You will find Acois_CRM/, Mobile_App/, and Docs/ folders inside.
  2. Connect to your server via FTP (FileZilla, Cyberduck) or use cPanel File Manager.
  3. Upload the entire contents of Acois_CRM/ to your server web root (e.g., public_html/ or your subdomain folder).
  4. Set folder permissions to 755 and file permissions to 644.
  5. Set storage/ and bootstrap/cache/ to 775:
chmod -R 775 storage bootstrap/cache
If you want Acois at a subdomain (e.g., crm.yourdomain.com), create the subdomain first in cPanel and upload to its root folder. Set the subdomain document root to point to the public/ subfolder.

cPanel File Manager Method

  1. Log in to cPanel → File Manager.
  2. Navigate to public_html/ (or your subdomain folder).
  3. Click Upload → upload the ZIP file directly to the server.
  4. Right-click the uploaded ZIP → Extract.
  5. Move the extracted files so they sit directly in the web root (not inside a subfolder).
Only upload the contents of Acois_CRM/. Do not upload Docs/ or Mobile_App/ to your web server.
Web App Installation

Run the Installer

Acois has a built-in multi-step web installer. After uploading, visit https://yourdomain.com/install in your browser.

The installer is protected by a CheckInstalled middleware. Once complete, visiting /install again automatically redirects to the login page.

Installer Steps

  1. Welcome — Overview of the installation process.
  2. Purchase Verification — Enter your CodeCanyon purchase code.
  3. Requirements Check — Automatically checks PHP version, extensions, and folder permissions. Shows pass/fail for each item.
  4. Database Configuration — Enter DB host, name, username, and password.
  5. Import Database — Automatically imports database/acois.sql (133 KB schema + seed data).
  6. Admin Account — Set the Super Admin email, name, and password.
  7. Install — Writes .env, generates APP_KEY, writes storage/installed.lock.
  8. Done — Redirects to /admin login page.
If the installer fails, the error message tells you exactly what went wrong. Common issues: wrong database credentials or unwritable storage folder. See Troubleshooting.
Web App Installation

Purchase Verification

Acois verifies your CodeCanyon purchase code during installation. Each license is tied to one domain.

Where to Find Your Purchase Code

  1. Log in to your Envato / CodeCanyon account.
  2. Go to Downloads → find Acois in your purchase list.
  3. Click Download → License certificate & purchase code.
  4. Open the certificate — copy the Item Purchase Code (a UUID like xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Each purchase code is tied to one domain. For an additional domain, purchase an additional license from CodeCanyon.

How Verification Works

The installer POSTs your purchase code and domain name to our verification server. If valid, installation proceeds and the code is locked to your domain. Your server must be able to make outbound HTTPS requests (curl extension required).

Web App Installation

Database Setup

Create a MySQL database before running the installer. The installer imports the full schema automatically.

Create a Database in cPanel

  1. Log in to cPanel → MySQL Databases.
  2. Create a new database (e.g., youraccount_acois).
  3. Create a new MySQL user with a strong password.
  4. Add the user to the database with All Privileges.
  5. Note down: database name, username, password, host (usually localhost).
Installer FieldTypical Value
DB Hostlocalhost
DB Port3306
DB NameThe database you created
DB UsernameThe user you created
DB PasswordThe password for that user
Always use a fresh, empty database. The installer imports the full SQL dump — existing tables will be overwritten.
Web App Installation

Admin Account Setup

The final installer step creates the Super Admin account that controls the entire platform.

FieldDescription
Admin NameYour full name — displayed in the admin panel
Admin EmailUsed to log in — must be a valid email
Admin PasswordChoose a strong password (min. 8 characters)
App NamePlatform name shown in emails and the browser title
After installation, the installer writes storage/installed.lock to block re-installation. You'll be automatically redirected to /admin to log in.
Web App Installation

Post-Install Steps

After successful installation, complete these steps to get Acois fully production-ready.

  1. Log in to Super Admin — visit https://yourdomain.com/admin and sign in with your installer credentials.
  2. Configure Global SMTP — go to Admin → Email Settings and enter SMTP credentials so the platform can send emails (invoices, password resets, welcome emails).
  3. Create Subscription Plans — go to Admin → Subscription Plans and create pricing plans for your companies.
  4. Configure Payment Gateway — go to Admin → Payment Settings and enable Stripe, Razorpay, PayPal, or Flutterwave.
  5. Create First Company — go to Admin → Companies → Add Company, or enable self-registration from the landing page.
  6. Set Up Cron Job — add the Laravel scheduler cron entry on your server. See Cron Jobs.
  7. Verify App URL — in Admin → General Settings, confirm the App URL matches your domain exactly (including https://).
Test your install: create a company, log in as Company Admin, create a client, generate an invoice, and download the PDF. This validates SMTP, PDF generation, and database — all in one flow.
Configuration

Company Setup

Each company has its own profile, branding, and settings — configured by the Company Admin after first login.

Company Profile

Go to Settings → Company Profile inside the company panel.

SettingDescription
Company NamePrinted on all invoices, quotes, and PDF documents
LogoAppears in navbar, invoices, and email footers
AddressFull address printed on PDFs
GST / Tax NumberVAT/GST registration number on invoices
CurrencyDefault currency (changeable per invoice)
TimezoneAll timestamps shown in this timezone
Invoice Prefixe.g., INV- → invoices numbered INV-0001, INV-0002
Fiscal Year StartUsed in yearly reports and tax summaries

Roles & Permissions

Go to Settings → Roles & Permissions. Acois ships with 8 pre-built roles (Admin, Sales, Accounts, HR Manager, etc.). You can create custom roles and toggle module-level access for each.

Permission changes take effect immediately — no re-login required for staff members.
Configuration

SMTP / Email Configuration

Configure SMTP at two levels: globally (Super Admin) and per-company. Per-company settings override global for outgoing company emails.

Global SMTP — Admin Panel → Email Settings

FieldExample
MAIL_HOSTsmtp.gmail.com
MAIL_PORT587 (TLS) or 465 (SSL)
MAIL_USERNAMEYour email address
MAIL_PASSWORDApp password (see Gmail note below)
MAIL_ENCRYPTIONtls or ssl
MAIL_FROM_ADDRESSSender address for all platform emails
MAIL_FROM_NAMESender name (e.g., Acois Platform)
For Gmail, enable 2-Step Verification and generate an App Password at myaccount.google.com/apppasswords. Use the App Password — not your regular Gmail password.

Popular SMTP Providers

ProviderHostPortEncryption
Gmailsmtp.gmail.com587tls
Outlook / Office365smtp.office365.com587starttls
SendGridsmtp.sendgrid.net587tls
Mailgunsmtp.mailgun.org587tls
Amazon SESregion-specific587tls
cPanel Mailmail.yourdomain.com465ssl
Configuration

Payment Gateways

Acois supports four payment gateways for subscription billing. Configure from Admin Panel → Payment Settings. You can enable multiple gateways simultaneously.

Stripe

  1. Log in to stripe.comDevelopers → API Keys.
  2. Copy your Publishable key and Secret key.
  3. Paste both into Admin → Payment Settings → Stripe and toggle Stripe enabled.

Razorpay (India)

  1. Log in to razorpay.comSettings → API Keys → Generate Key.
  2. Copy the Key ID and Key Secret.
  3. Paste into Admin → Payment Settings → Razorpay.

PayPal

  1. Log in to developer.paypal.comMy Apps & Credentials → Create App.
  2. Copy the Client ID and Secret.
  3. Set mode to live (use sandbox for testing).
  4. Paste into Admin → Payment Settings → PayPal.

Flutterwave (Africa)

  1. Log in to flutterwave.comSettings → API Keys.
  2. Copy the Public Key and Secret Key.
  3. Paste into Admin → Payment Settings → Flutterwave.
Configuration

AI / OpenAI Setup

Acois uses OpenAI GPT-4o-mini for its AI chat assistant, email writer, campaign content, and report analysis.

Get Your OpenAI API Key

  1. Create or sign in at platform.openai.com.
  2. Go to API Keys → Create new secret key. Copy it — shown only once.
  3. Add billing credits to your OpenAI account (GPT-4o-mini is very cost-effective — fractions of a cent per request).

Configure in Acois

Go to Admin Panel → AI Settings and paste your key. Each company can also enter their own key at Settings → AI Settings — company key takes priority over global key.

AI Features

Acois Chat Assistant
AI Email Writer
AI Report Analysis
AI Campaign Content
AI Invoice Notes
AI Lead Suggestions
If no OpenAI key is configured, AI features are hidden from the UI. All other platform features work fully without OpenAI.
Configuration

WhatsApp Business

Send invoice PDFs, payment reminders, and notifications directly to clients via WhatsApp Business API.

Setup Steps

  1. Go to developers.facebook.comMy Apps → Create App → Business.
  2. Add the WhatsApp product to your app.
  3. Connect a WhatsApp Business phone number and verify it.
  4. Get your Permanent Access Token (from Business Manager) and Phone Number ID.
  5. Enter both in Acois → Settings → WhatsApp Settings and enable "Send via WhatsApp".
WhatsApp Business API is free up to 1,000 conversations/month. Outgoing notifications require approved message templates from Meta's Business Manager.

Usage

Once configured, a Send via WhatsApp button appears on Invoice and Quote pages. The client's WhatsApp number must be saved in their contact profile.

Configuration

Social Media Posting

Post to Facebook, Instagram, LinkedIn, Twitter/X, YouTube, and Pinterest from a single panel inside Acois. Each platform requires a one-time API app setup.

All API credentials are entered in Admin Panel → Social Media API Settings. Each company then connects their own account via Settings → Social Media Accounts → Connect.

Facebook & Instagram

Facebook and Instagram share the same Meta Developer App. You need a Facebook Page and an Instagram Business/Creator Account connected to it.

1
Go to developers.facebook.com and log in with your Facebook account.
2
Click My Apps → Create App. Select type Business, enter a name, and click Create App.
3
Click Add Product → find Facebook Login → click Set Up.
4
Go to App Settings → Basic. Copy your App ID and App Secret.
5
Go to Facebook Login → Settings. Add this under Valid OAuth Redirect URIs:
https://yourdomain.com/social/facebook/callback
6
Go to App Review → Permissions and Features. Request these permissions:
pages_manage_posts pages_read_engagement instagram_basic instagram_content_publish
7
Toggle the app to Live mode at the top of the dashboard.
8
Paste the App ID and App Secret into Admin → Social Media API Settings → Facebook.
Instagram requires a Professional Account (Business or Creator) connected to a Facebook Page. Personal Instagram accounts are not supported by the API.

LinkedIn

Requires a LinkedIn Developer App connected to your LinkedIn Company Page.

1
Go to developer.linkedin.comMy Apps → Create App.
2
Fill in App Name, your LinkedIn Company Page, and App Logo. Click Create App.
3
Go to the Auth tab. Copy the Client ID and Client Secret.
4
Under OAuth 2.0 Settings → Authorized Redirect URLs, add:
https://yourdomain.com/social/linkedin/callback
5
Go to the Products tab and request access to Share on LinkedIn and Marketing Developer Platform.
6
Paste the Client ID and Client Secret into Admin → Social Media API Settings → LinkedIn.
LinkedIn API access for company pages requires manual approval. Personal profile posting is approved instantly.

Twitter / X

Requires a Twitter Developer account and an OAuth 2.0 app with Read & Write permissions.

1
Go to developer.twitter.comDeveloper Portal and sign in.
2
Apply for a developer account if prompted — fill in the use-case form (usually approved instantly).
3
Go to Projects & Apps → New App, give it a name.
4
Go to App Settings → User authentication settings → Set Up. Set:
App permissions: Read and Write  |  Type: Web App
Callback URI: https://yourdomain.com/social/twitter/callback
5
Go to Keys and Tokens. Copy the API Key and API Key Secret.
6
Paste both into Admin → Social Media API Settings → Twitter.
Twitter/X free developer tier allows 1,500 tweets/month. For higher limits upgrade to Basic ($100/month) in the developer portal.

YouTube

Uses Google Cloud Console with YouTube Data API v3 enabled.

1
Go to console.cloud.google.com and log in with the Google account linked to your YouTube channel.
2
Click Select Project → New Project, give it a name, click Create.
3
Go to APIs & Services → Library, search for YouTube Data API v3, and click Enable.
4
Go to APIs & Services → Credentials → Create Credentials → OAuth 2.0 Client ID. Set type to Web application.
5
Under Authorized redirect URIs, add:
https://yourdomain.com/social/youtube/callback
6
Click Create. Copy the Client ID and Client Secret.
7
Go to OAuth consent screen. Fill in App name, support email, and add your domain to Authorized domains.
8
Paste the Client ID and Client Secret into Admin → Social Media API Settings → YouTube.
While the app is in Testing mode, only Test Users you add can connect. Click Publish App on the OAuth consent screen to allow all users.

Pinterest

Requires a Pinterest Developer App with boards and pins write access.

1
Go to developers.pinterest.comMy Apps → Connect App.
2
Fill in App name, description, and your website URL. Click Connect.
3
Under Configure → Redirect URIs, add:
https://yourdomain.com/social/pinterest/callback
4
Go to the Overview tab. Copy the App ID and App Secret Key.
5
Under Permissions, enable boards:read, boards:write, and pins:write scopes.
6
Paste the App ID and App Secret Key into Admin → Social Media API Settings → Pinterest.

Creating a Post

Once API credentials are saved and at least one account is connected by a company:

1
Go to Social Media → New Post.
2
Write your content — or click AI Write to generate it from a brief.
3
Upload an image (required for Instagram and Pinterest).
4
Select one or more connected platforms using the platform toggles.
5
Choose Post Now or pick a future date/time to schedule. Click Publish.
Configuration

Cron Jobs

Acois uses URL-based cron jobs — each cron hits a specific URL on your server. You need to add each one to your server's crontab or cPanel Cron Jobs panel.

Replace https://yourdomain.com with your actual Acois installation URL in every cron command below.

All Cron Jobs

Social Media — Publish Scheduled Posts
Every Minute

Checks for social media posts (Facebook, Instagram, LinkedIn, YouTube, Twitter, Pinterest) that are scheduled and due — dispatches them to the queue.

* * * * * curl -s https://yourdomain.com/social-publish-cron > /dev/null 2>&1
Social Media — Sync DMs & Messages
Every 15 Minutes

Fetches new direct messages and inbox conversations from connected social accounts.

0,15,30,45 * * * * curl -s https://yourdomain.com/social-messages-cron > /dev/null 2>&1
Social Media — Sync Comments
Every 30 Minutes

Pulls new comments on published posts from Facebook, Instagram, LinkedIn, YouTube, and Twitter.

0,30 * * * * curl -s https://yourdomain.com/social-comments-cron > /dev/null 2>&1
Social Media — Sync Stats (Likes, Views)
Every 6 Hours

Refreshes engagement metrics (likes, views, shares, impressions) for all published posts.

0 0,6,12,18 * * * curl -s https://yourdomain.com/social-sync-cron > /dev/null 2>&1
Invoice & Quote Reminders
Daily

Sends payment reminder emails for overdue invoices and follow-up reminders for quotes with a due follow-up date.

0 8 * * * curl -s https://yourdomain.com/reminder-cron > /dev/null 2>&1
Subscription Expiry & Grace Period
Daily

Checks active subscriptions past their end date. Day 1: sends payment failure notification. Day 2: cancels the subscription on the gateway and marks it expired.

0 1 * * * curl -s https://yourdomain.com/subscription-cron > /dev/null 2>&1
Salary Generation
Daily

Auto-generates salary for employees whose configured salary date matches today. Calculates net pay including allowances, deductions, advance repayments, and leave deductions for the previous month.

0 0 * * * curl -s https://yourdomain.com/salary-cron > /dev/null 2>&1
Social Media — Refresh OAuth Tokens
Daily at 2 AM

Refreshes expiring OAuth access tokens for all connected social accounts. Sends an alert email if a token refresh fails so you can reconnect the account.

0 2 * * * curl -s https://yourdomain.com/social-token-cron > /dev/null 2>&1

Quick Reference — All Cron Commands

Copy and paste all 8 cron jobs at once. Replace https://yourdomain.com with your URL:

# Social: publish scheduled posts — every minute
* * * * * curl -s https://yourdomain.com/social-publish-cron > /dev/null 2>&1

# Social: sync DMs & messages — every 15 minutes
0,15,30,45 * * * * curl -s https://yourdomain.com/social-messages-cron > /dev/null 2>&1

# Social: sync comments — every 30 minutes
0,30 * * * * curl -s https://yourdomain.com/social-comments-cron > /dev/null 2>&1

# Social: sync stats (likes, views) — every 6 hours
0 0,6,12,18 * * * curl -s https://yourdomain.com/social-sync-cron > /dev/null 2>&1

# Invoice & quote reminders — daily at 8 AM
0 8 * * * curl -s https://yourdomain.com/reminder-cron > /dev/null 2>&1

# Subscription expiry & grace period — daily at 1 AM
0 1 * * * curl -s https://yourdomain.com/subscription-cron > /dev/null 2>&1

# Salary generation — daily at midnight
0 0 * * * curl -s https://yourdomain.com/salary-cron > /dev/null 2>&1

# Social: refresh OAuth tokens — daily at 2 AM
0 2 * * * curl -s https://yourdomain.com/social-token-cron > /dev/null 2>&1
In cPanel → Cron Jobs, add each line as a separate cron entry. Use the time fields provided (minute, hour, day, month, weekday) to match the schedule shown above.
All cron URLs return a JSON or text response confirming how many records were processed. You can test any cron manually by visiting the URL directly in your browser.
Configuration

Multi-Currency

Each company can use multiple currencies on invoices. Set exchange rates manually in settings.

Adding Currencies

Go to Settings → Currencies → Add Currency. Select from the currency list and set the exchange rate.

FieldDescription
Currency CodeUSD, EUR, INR, etc.
Symbol$, , , etc.
Exchange RateRelative to your company's base currency
PositionSymbol before or after the amount
Decimal PlacesTypically 2
Dashboard totals and reports always convert values to the company's base currency using saved exchange rates.
Mobile App

Mobile App Overview

Acois includes a React Native (Expo) staff mobile app that connects to your Acois web server via the REST API.

Attendance Check-InStaff clock in/out with GPS location stamp from the mobile app.
CRM & LeadsView, add, and update leads on the go. Log calls and meetings.
Tasks & TodosCreate and complete personal tasks. View team assignments.
MeetingsView upcoming meetings, get reminders, join online calls.
Expense ClaimsSubmit claims with receipt photo upload from phone camera.
Push NotificationsReal-time alerts for assignments, approvals, and reminders.
Staff log in with the same email/password they use on the web. Authentication is handled via Laravel Sanctum API tokens. The Super Admin panel has no mobile equivalent.
Mobile App

Prerequisites

To build and customize the mobile app you need Node.js, Expo CLI, and EAS CLI installed on your development machine.

ToolVersionHow to Install
Node.js18 LTS or 20 LTSnodejs.org
npm9+ (bundled with Node)Bundled with Node
Expo CLILatestnpm install -g @expo/cli
EAS CLILatestnpm install -g eas-cli
Expo Go (optional)LatestInstall on your phone for instant preview

Install Dependencies

cd Mobile_App
npm install
Preview the app on your phone instantly: run npx expo start, then scan the QR code with the Expo Go app. No build required — changes appear live.
Mobile App

Configure API URL

The only required change before building is pointing the mobile app to your Acois server URL.

Edit src/constants/api.ts

// src/constants/api.ts
export const API_BASE_URL = 'https://yourdomain.com'; // ← change this
export const API_URL = `${API_BASE_URL}/api`;

Replace with your actual Acois URL (no trailing slash). Example:

export const API_BASE_URL = 'https://crm.mycompany.com';
Your server must use HTTPS. iOS apps refuse HTTP connections by default. Get a free SSL certificate via cPanel → Let's Encrypt.

Customize App Name & Icons

Edit app.json to change the app name, icons, and bundle IDs:

{
  "expo": {
    "name": "Your App Name",
    "slug": "your-app-slug",
    "icon": "./assets/icon.png",         // 1024×1024 PNG
    "splash": { "image": "./assets/splash.png" },
    "android": { "package": "com.yourcompany.app" },
    "ios": { "bundleIdentifier": "com.yourcompany.app" }
  }
}
Mobile App

Build Android APK

Use Expo EAS Build to generate a signed APK (for direct distribution) or AAB (for Google Play Store). Builds run in the cloud — no local Android SDK needed.

One-Time Setup

  1. Create a free account at expo.dev.
  2. Log in via CLI: eas login
  3. Initialize EAS in the project: eas build:configure

This creates eas.json. Set it up like this:

{
  "build": {
    "preview": {
      "android": { "buildType": "apk" }
    },
    "production": {
      "android": { "buildType": "app-bundle" }
    }
  }
}

Build APK for Direct Install / Testing

eas build --platform android --profile preview

EAS builds in ~5–10 min and gives a download link for the .apk. Share this link directly for side-loading.

Build AAB for Google Play

eas build --platform android --profile production
EAS manages the Android keystore automatically on the first build. Keep the keystore safe — you need the same one for all future app updates.
Mobile App

Google Play Store

Publish the Android app on Google Play for automatic updates and discoverability.

  1. Create a Google Play Developer account at play.google.com/console. One-time $25 fee.
  2. Create a new app — fill in name, language, type, and whether it's free or paid.
  3. Complete the store listing — short/full description, screenshots (phone + tablet), feature graphic (1024×500), icon (512×512).
  4. Complete content rating — fill the IARC questionnaire.
  5. Set distribution — choose countries and confirm free pricing.
  6. Build the AAB — run eas build --platform android --profile production.
  7. Upload AAB — go to Production → Releases → Create release and upload the .aab file.
  8. Submit for review — click Start rollout to Production. New app review takes 1–3 days.
Mobile App

Build iOS App (Expo EAS)

Building for iOS requires an Apple Developer account ($99/year). EAS handles code signing and provisioning automatically.

Requirements

Register App in App Store Connect

  1. Go to appstoreconnect.apple.comApps → New App.
  2. Fill in: Platform (iOS), Name, Primary Language, Bundle ID (must match app.json ios.bundleIdentifier), SKU.
  3. Click Create.

Build

Update eas.json to add iOS:

{
  "build": {
    "production": {
      "android": { "buildType": "app-bundle" },
      "ios": { "distribution": "store" }
    }
  }
}
eas build --platform ios --profile production

EAS prompts you to log in to Apple and handles certificates automatically. Build takes ~10–15 min and produces a .ipa file.

Submit directly to App Store Connect with eas submit --platform ios after a successful build — skips the manual upload step.
Mobile App

Apple App Store Submission

Submit the iOS build for review and public distribution on the App Store.

  1. Complete app metadata in App Store Connect — description, keywords, support URL, Privacy Policy URL.
  2. Upload screenshots — iPhone 6.7" (required), 6.5", 5.5". Use a simulator or real device.
  3. Upload the build via eas submit --platform ios or Transporter app (Mac).
  4. Select the build in App Store Connect → iOS App → Build section.
  5. Answer export compliance — typically "No" for standard apps.
  6. Submit for Review. First-time review: 1–7 days.
Apple requires a public Privacy Policy URL for all apps. Host one before submitting.
Modules Guide

Invoicing & Quotes

Create professional invoices, quotes, and orders — with automated reminders, online payment links, and recurring billing.

Document Types

DocumentDescription
InvoiceBillable document sent to clients. Supports partial payments, tax lines, discounts.
Quote / EstimateNon-binding price proposal. Convert to invoice in one click.
Sale OrderConfirmed order before goods/services are delivered.
Purchase OrderOrder raised to your vendors/suppliers.
Credit NoteIssued against an existing invoice for returns or adjustments.
Recurring InvoiceAuto-generated daily/weekly/monthly/yearly via cron.
Proforma InvoicePreliminary invoice for customs or advance payment requests.

PDF Templates

10 professional PDF templates included. Select at Settings → Invoice Settings → PDF Template. All templates include company logo, address, client details, line items, tax breakdown, and payment instructions.

Online Payment Link

Every invoice has a unique public payment URL (e.g., yourdomain.com/pay/INV-0001). Email it to your client — they view the invoice and pay online via any enabled gateway, with no login required.

Automated Reminders

Configure reminder schedules at Settings → Invoice Reminders (e.g., 3 days before due, on due date, 7 days after due). The scheduler sends emails automatically.

Tax Setup

  1. Go to Settings → Taxes and create tax rates (e.g., GST 18%, VAT 20%).
  2. Assign a default tax to each product/service.
  3. Taxes apply automatically and appear as separate line items on each invoice.
Modules Guide

CRM & Enquiries

Manage your entire sales pipeline from first contact to closed deal — with a Kanban board, meeting scheduler, and AI-powered follow-ups.

CRM Pipeline (Kanban)

Go to CRM → Pipeline. Leads move through configurable stages (New → Contacted → Proposal → Won / Lost). Drag and drop cards between columns to update stage.

Lead Sources

Manual Entry
Web Enquiry Form
CSV Import
Email Campaign
Converted Client
Mobile App

Lead Timeline

Each lead has a full activity timeline — calls, emails, notes, meetings, and status changes — all timestamped and attributed to the staff member who logged the activity.

Convert Lead to Client

When a lead is won, click Convert to Client. This creates a client record and optionally generates an invoice or quote, preserving all lead data.

Meetings

Schedule meetings from a CRM lead or from CRM → Meetings. Each meeting supports multiple attendees. The calendar view shows all upcoming meetings with color coding by status.

Modules Guide

HR, Attendance & Payroll

Manage the full HR lifecycle — from onboarding to monthly payroll — with automated attendance and one-click salary generation.

Attendance Tracking

Staff mark attendance from the web panel or mobile app. Each check-in records timestamp and GPS location. Admins can view daily/monthly reports, edit entries, and approve/reject leave requests.

Leave Management

  1. Admin sets up leave types (Annual, Sick, Casual) and allowances under HR → Leave Types.
  2. Staff apply for leave from their dashboard or mobile app.
  3. HR Manager approves or rejects — staff notified by email.
  4. Approved leaves are deducted from attendance and factored into salary calculation.

Payroll & Salary

Go to HR → Payroll → Generate Salary.

ComponentDescription
Basic SalarySet per-employee in their profile
AllowancesHRA, Travel, Medical — configurable per employee
DeductionsPF, TDS, ESI, or custom deductions
Advance DeductionOutstanding advances auto-deducted from net salary
Leave DeductionUnpaid leaves reduce net salary proportionally
Net SalaryBasic + Allowances − Deductions − Leave − Advance

Download payslips as PDF or export all as Excel. Staff view their own payslip from the profile dashboard or mobile app.

Advance Payments

Record salary advances under HR → Advance Payments. Outstanding advances are tracked per employee and automatically deducted in the next salary cycle.

Modules Guide

Reports

15 business reports covering sales, taxes, P&L, HR, and CRM analytics. All support date-range filters and Excel/PDF export.

ReportDescription
Sales ReportTotal sales by period, product, or client
Profit & LossRevenue vs expenses summary by month/year
GST Report (GSTR-1)Invoice-wise GST summary for Indian tax filing
Invoice AgingOverdue invoices grouped by 0–30, 31–60, 60+ days
Year-on-Year SalesMonth-by-month comparison across years
Client StatementFull ledger for a client — all invoices and payments
Product-wise SalesRevenue breakdown by product or service
Expense ReportCompany expenses by category and period
Payment ReportAll payments received, grouped by method
Tax SummaryTotal tax collected vs paid for a period
Staff Attendance ReportMonthly attendance summary per employee
Payroll ReportMonth-wise salary summary for all employees
CRM Pipeline ReportLead conversion rate by stage, source, and staff member
Campaign PerformanceOpen rates, click rates, conversions per campaign
Subscription ReportActive/expired subscriptions and revenue (Super Admin)
On any report page, click AI Analysis to get a GPT-powered plain-English summary of the data — highlighting trends, anomalies, and actionable insights.
Modules Guide

Email Campaigns

Send bulk emails to CRM leads and clients. Track opens and clicks per recipient with per-lead delivery logs.

Creating a Campaign

  1. Go to CRM → Campaigns → New Campaign.
  2. Enter a subject line (or click AI Suggest for AI-generated subject options).
  3. Write the email body in the rich-text editor, or click AI Write to generate content from a brief.
  4. Select recipients — All Leads, Leads by Stage, Leads by Source, or specific tags.
  5. Set a Send Date/Time — send immediately or schedule for later.
  6. Click Save & Schedule. Emails send in batches every 5 minutes via cron.

Tracking & Analytics

The campaign detail page shows per-lead status: Pending, Sent, Opened, Clicked, or Failed. The summary card shows overall open rate and click-through rate.

Campaigns use your SMTP settings. For large lists (1,000+ emails), use a dedicated email service (SendGrid, Mailgun, Amazon SES) to avoid rate limits and spam flags.
Updating

How to Update

When a new version releases on CodeCanyon, follow these steps to update without losing data.

Always take a full backup (files + database) before updating.
  1. Backup database — cPanel → phpMyAdmin → select database → Export → Quick → SQL.
  2. Backup files — especially .env, storage/app/, and storage/installed.lock.
  3. Download the new version from CodeCanyon → Downloads.
  4. Extract the ZIP on your local computer.
  5. Upload new files to your server, overwriting everything except:
    • .env — keep your existing environment config
    • storage/ — keep your uploaded files and lock file
  6. Run database migrations via SSH:
php artisan migrate --force
  1. Clear caches:
php artisan optimize:clear
Without SSH access, run migrations and cache clearing from Admin Panel → System Tools.
Support

Troubleshooting

Common issues and solutions. Check this section before raising a support ticket.

White Screen / 500 Error After Upload

  1. Set storage/ and bootstrap/cache/ to permission 775.
  2. Confirm PHP 8.3+ is selected in your hosting control panel.
  3. Check storage/logs/laravel.log for the exact error message.
  4. Ensure document root points to public/, not the Laravel root folder.

Installer Stuck at Requirements Check

The installer shows which PHP extensions are missing. Install them via cPanel → MultiPHP Extensions Manager, or ask your host to enable them.

Purchase Code Verification Fails

  1. Confirm you're using the Item Purchase Code (UUID format), not the order number.
  2. Test outbound connections via SSH: curl https://google.com
  3. If the code is already used on another domain, you need a new CodeCanyon license.

Emails Not Sending

  1. Use Admin → Email Settings → Send Test Email to test SMTP.
  2. Gmail: use an App Password (not your regular password) — 2FA must be enabled.
  3. If port 587 is blocked, try your hosting provider's own mail server (port 465, SSL).
  4. Check storage/logs/laravel.log for SMTP error details.

PDF Generation Fails

  1. Confirm the GD PHP extension is enabled.
  2. Increase PHP memory limit to 256 MB or more in php.ini: memory_limit = 256M
  3. Ensure storage/app/ is writable (775).

Mobile App Can't Connect

  1. Confirm API_BASE_URL in src/constants/api.ts is correct — no trailing slash.
  2. Server must have a valid SSL certificate. Test at sslshopper.com/ssl-checker.html.
  3. Test the API endpoint directly: https://yourdomain.com/api/health should return {"status":"ok"}.

Cron Job Not Running

  1. Test manually via SSH: php artisan schedule:run
  2. Confirm the PHP binary path in the cron matches PHP 8.3 (run which php).
  3. The working directory in the cron must be the Acois root, not public/.

Clear All Caches

php artisan optimize:clear
php artisan config:clear
php artisan view:clear
Support

FAQ

Frequently asked questions about Acois.

Can I use Acois on multiple domains?

No — each purchase licenses use on one domain. Each additional domain needs a new CodeCanyon license. This follows Envato's Regular License policy.

How many companies can I create?

Unlimited. As Super Admin you can create as many workspaces as needed, or let companies self-register. Optionally control their access via Subscription Plans.

Can I white-label Acois?

With Envato's Extended License, yes — you can rebrand and offer Acois as a SaaS product to your own clients. The Regular License covers one end-product only.

Is the OpenAI key required?

No. AI features are hidden if no key is configured. All other features work fully without OpenAI.

Is the mobile app source code included?

Yes — the full React Native (Expo) source is in the Mobile_App/ folder of your purchase.

Which PHP version is required?

PHP 8.3 or 8.4. PHP 7.x and 8.0–8.2 are not supported.

Does it work on shared hosting?

Yes — most modern cPanel shared hosting with PHP 8.3 works fine. You must be able to set the document root to public/. VPS or cloud hosting is recommended for production SaaS use.

How do I get future updates?

Download from CodeCanyon → Your Downloads → Acois. Your purchase includes 6 months of free updates; extended support is available from CodeCanyon at checkout.

Can I get a refund?

Refunds follow Envato's refund policy. Installation issues are fully supported — please contact us before requesting a refund.

Support

Credits & Support

Thank you for purchasing Acois! Here's how to get help and the third-party libraries that power the platform.

Get Support

Support is available via the CodeCanyon item comments or support ticket system.

Supported: Questions about features, help with installation and configuration, bug fixes in the item.
Not included: Custom development, third-party plugin conflicts, server configuration beyond this documentation.

Third-Party Libraries

LibraryLicenseUsed For
Laravel FrameworkMITCore PHP framework
Tailwind CSSMITUI styling
Barryvdh DomPDFMITPDF invoice generation
ApexChartsMITDashboard & report charts
OpenAI PHP (orhanerday)MITAI/GPT integration
Laravel SanctumMITMobile API authentication
Intervention ImageMITImage processing
Maatwebsite ExcelMITExcel export for reports
React Native (Expo)MITMobile app framework
Stripe / Razorpay / PayPal SDKMITPayment processing

Changelog

VersionDateNotes
v1.0.0June 2026Initial release — full invoicing, CRM, HR, AI, social media, campaigns, and mobile app.
Support

Contact Us

Have a question, issue, or need help with installation? Reach out to us — we typically respond within 24 hours on business days.

Email Support
Send us an email
For technical questions, bug reports, and pre-sale inquiries.
sushilasaharan9988@gmail.com
WhatsApp
Chat with us on WhatsApp
Quick responses for urgent installation support and queries.
+91 18135 89935
Support Hours: Monday to Saturday, 10:00 AM – 7:00 PM IST (UTC +5:30). We aim to reply within 24 hours on business days.

Before Contacting Support

To help us resolve your issue faster, please include the following in your message:

Many common issues are already answered in the Troubleshooting and FAQ sections — check there first for the fastest solution.