CRM | AstroBasic
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.
AstroBasic
CRM & Business Suite
OR
New here? Click Start Your Company if you're the business owner, or Join with Invite Code if your manager sent you a code.
A
AstroBasic
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
Invoices & Billing
| Invoice # | Client | Date | Due Date | Amount | Paid | Balance | Status | Actions |
|---|
CRM Analytics
Conversion Funnel
Leads by Source
Monthly Win/Loss Trend
🏆 Team Leaderboard
| Source | Total Leads | Won | Lost | In Progress | Conv. Rate | Avg Deal | Total Revenue |
|---|
CRM Pipeline
| Name | Company | Phone | Est. Sale | Status | Source | Owner | Next Action | Actions |
|---|
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
| Date | Description | Category | Amount | Added By | Actions |
|---|
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.
- Go to supabase.com → Sign up free
- Click "New Project" → Choose a name like "AstroBasic CRM"
- Set a strong database password (save it somewhere)
- Choose the region closest to India: ap-south-1 (Singapore)
- Wait ~2 minutes for the project to provision
| Username | Name | Role | Data Access | App Access | Created | Actions |
|---|
🔒 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