AstroBasic CRM — Business Suite

Welcome to AstroBasic CRM 👋

This is a one-time setup. Enter your company name to get started.

Already set up? Connect Supabase from the Admin panel after logging in.

Create Your Google Sheet Backend

Open Google Sheets, create a new spreadsheet, then go to Extensions → Apps Script and paste this code. Deploy it as a Web App (execute as: Me, access: Anyone).

// AstroBasic CRM — Google Apps Script Backend // 1. Paste this in Extensions → Apps Script // 2. Save, then Deploy → New deployment → Web App // Execute as: Me | Who has access: Anyone // 3. Copy the Web App URL and paste it in the next step const SHEET_ID = SpreadsheetApp.getActiveSpreadsheet().getId(); function doPost(e) { try { const data = JSON.parse(e.postData.contents); const ss = SpreadsheetApp.openById(SHEET_ID); const action = data.action; if (action === 'add' || action === 'update') { let sheet = ss.getSheetByName(data.module); if (!sheet) { sheet = ss.insertSheet(data.module); sheet.appendRow(Object.keys(data.row)); } if (action === 'add') { sheet.appendRow(Object.values(data.row)); } else { const rows = sheet.getDataRange().getValues(); for (let i = 1; i < rows.length; i++) { if (rows[i][0] == data.row.id) { const headers = rows[0]; headers.forEach((h, j) => { if (data.row[h] !== undefined) sheet.getRange(i+1, j+1).setValue(data.row[h]); }); break; } } } } if (action === 'delete') { const sheet = ss.getSheetByName(data.module); if (sheet) { const rows = sheet.getDataRange().getValues(); for (let i = 1; i < rows.length; i++) { if (rows[i][0] == data.id) { sheet.deleteRow(i+1); break; } } } } return ContentService.createTextOutput( JSON.stringify({ok: true}) ).setMimeType(ContentService.MimeType.JSON); } catch(err) { return ContentService.createTextOutput( JSON.stringify({ok: false, error: err.message}) ).setMimeType(ContentService.MimeType.JSON); } } function doGet(e) { const ss = SpreadsheetApp.openById(SHEET_ID); const module = e.parameter.module; const sheet = ss.getSheetByName(module); if (!sheet) return ContentService.createTextOutput( JSON.stringify({ok: true, rows: []}) ).setMimeType(ContentService.MimeType.JSON); const data = sheet.getDataRange().getValues(); const headers = data[0]; const rows = data.slice(1).map(r => { const obj = {}; headers.forEach((h, i) => obj[h] = r[i]); return obj; }); return ContentService.createTextOutput( JSON.stringify({ok: true, rows}) ).setMimeType(ContentService.MimeType.JSON); }

Paste Your Web App URL

After deploying the Apps Script, copy the Web App URL and paste it below. This connects your CRM to Google Sheets.

⚠️ Running in local mode — data is saved in your browser only. Connect Google Sheets to enable multi-user sync.
A
CRM Suite
S
Sam
Good morning 👋
🔮 Today's Sessions
📅 Today's Follow-ups
No follow-ups due today
⚠️ Stalled Deals No contact in 7+ days
All deals are on track
📊 Pipeline Analytics
🕐 Recent Activity Last 7 days
No recent activity
🎯 Lead Source Performance
Session Scheduler
Contact Details
Deal Info
Interaction Timeline
Invoice Preview
Invoices & Billing
Invoice #ClientDateDue Date AmountPaidBalanceStatusActions
CRM Analytics
Conversion Funnel
Leads by Source
Monthly Win/Loss Trend
🏆 Team Leaderboard
Lead Source Performance
SourceTotal LeadsWonLostIn ProgressConv. RateAvg DealTotal Revenue
Deal Stage Value Breakdown
CRM Pipeline
NameCompanyEmailPhone Est. SaleStatusSourceOwner Next ActionActions
Financial Dashboard
Total Sales & Profit Over Time
Sales Profit/Loss
Annual Expenses by Category
3 Highest Sales Months
3 Lowest Sales Months
3 Most Profitable Months
3 Highest Expenses YTD
Profit & Loss
Transactions
DateDescriptionCategoryAmountAdded ByActions
Goal Tracker
Monthly Completion
0%
January
Admin Panel
Supabase Database Connection
Not connected — data saved locally only
1. Create Project
2. Run SQL
3. Connect
4. Migrate Data

First, create a free Supabase project — it takes about 2 minutes.

  1. Go to supabase.com → Sign up free
  2. Click "New Project" → Choose a name like "AstroBasic CRM"
  3. Set a strong database password (save it somewhere)
  4. Choose the region closest to India: ap-south-1 (Singapore)
  5. Wait ~2 minutes for the project to provision
Team Members Role controls what data users can see
UsernameNameRoleData Access App Access CreatedActions
🔑 Invite Codes
Share these codes so new team members can register and automatically join your company.
🔒 Security
Password is hashed with SHA-256 before storage — never stored in plain text.
Data Export
Session
Session Details
🔮 Birth Details
Session Notes
📱 WhatsApp Reminder
Click to copy → paste in WhatsApp