docs: Add verification guides and summary

This commit is contained in:
cawcenter
2025-12-13 21:06:48 -05:00
parent 2109aa6867
commit b25429dceb
6 changed files with 57 additions and 122 deletions

View File

@@ -0,0 +1,46 @@
# Deployment Verification Guide
Since you are performing a manual deployment, please perform the following checks once the deployment is `Active` in Coolify.
## 1. System Health Check
- **URL**: `https://spark.jumpstartscaling.com` (Backend) / `https://launch.jumpstartscaling.com` (Frontend)
- **Action**: Visit the Frontend URL.
- **Expected**: You should see the login screen or dashboard.
## 2. Priority 1 Collections (Intelligence)
Navigate to `/admin/intelligence` or the respective Collection Manager pages.
### Avatars
- **Path**: `/admin/intelligence/avatars` (or distinct page if separate)
- **Check**: You should see "Sarah (SEO Expert)" in the list (created by demo script).
- **Test**: Click "Edit" and Verify fields (Base Name, Niches).
### Spintax
- **Path**: `/admin/collections/spintax-dictionaries`
- **Check**: Verify the list loads without error.
### Geo Clusters
- **Path**: `/admin/intelligence/geo`
- **Check**: Verify map or list loads.
## 3. Flagship Demo Content
Navigate to `/admin/sites`.
- **Check**: You should see "Flagship Demo Site" or similar.
- **Action**: Click "Manage Content" -> "Pages".
- **Check**: You should see 3 pages:
- High-Converting Home
- SEO Services Landing Page
- SaaS Case Study
- **Action**: Click "Edit" on "High-Converting Home".
- **Validation**: Verify the **Visual Block Editor** loads and displays a Hero block with "Scale Your Business 10x".
## 4. Factory & Automation
- **Path**: `/admin/factory/jobs`
- **Check**: You should see 3 queued jobs (Topic Cluster, Geo Expansion, Spintax).
## 5. Troubleshooting
If any page shows a spinner forever or 404:
1. Check the Browser Console (F12) for JS errors.
2. Verify the `DIRECTUS_URL` environment variable in Coolify matches `https://spark.jumpstartscaling.com`.
3. Check Directus Logs in Coolify.

View File

@@ -230,6 +230,16 @@ https://launch.jumpstartscaling.com/preview/article/990aefad-564d-4fab-9599-8470
2. **Field Names**: Using `url` instead of `domain` was critical
3. **Error Handling**: Better error messages help debug faster
4. **API Testing**: Direct API tests revealed issues before UI testing
### Deployment & Verification
- **Status**: Deployment triggered manually by User.
- **Verification Guide**: See `DEPLOYMENT_VERIFICATION.md`.
- **Guided Tour**: Located at `/admin/sites/jumpstart` (Sidebar: "**Jumpstart Test 🚀**").
- **Flagship Demo**: Content generated and available in Launchpad.
### Next Steps for User
1. Verify deployment via Coolify Dashboard.
2. Access the Live URL (`https://launch.jumpstartscaling.com` / `https://spark.jumpstartscaling.com`).
3. Follow the `DEPLOYMENT_VERIFICATION.md` checklist.
5. **Incremental Fixes**: Fixing one issue at a time led to success
---
@@ -238,7 +248,7 @@ https://launch.jumpstartscaling.com/preview/article/990aefad-564d-4fab-9599-8470
- **Frontend**: Astro, React, TypeScript
- **Backend**: Directus (Headless CMS)
- **Database**: PostgreSQL (via Directus)
- **Database**: PostgreSQL
- **Deployment**: Coolify (Docker)
- **WordPress**: REST API integration
- **Content**: Intelligence Library (Geo, Spintax, Cartesian, Avatars)

View File

@@ -1,45 +0,0 @@
import { createDirectus, rest, authentication, deleteField, createField, deleteItems, readItems } from '@directus/sdk';
import * as dotenv from 'dotenv';
import * as path from 'path';
dotenv.config({ path: path.resolve(__dirname, '../credentials.env') });
const client = createDirectus(process.env.DIRECTUS_PUBLIC_URL!).with(authentication()).with(rest());
async function fixPagesField() {
try {
await client.login(process.env.DIRECTUS_ADMIN_EMAIL!, process.env.DIRECTUS_ADMIN_PASSWORD!);
console.log('🔧 Fixing Pages Schema...');
// 1. Delete all pages (to allow schema change)
console.log(' Deleting existing pages...');
// @ts-ignore
const pages = await client.request(readItems('pages', { limit: -1, fields: ['id'] }));
if (pages.length > 0) {
// @ts-ignore
await client.request(deleteItems('pages', pages.map(p => p.id)));
}
// 2. Delete site field
console.log(' Deleting site field...');
try {
// @ts-ignore
await client.request(deleteField('pages', 'site'));
} catch(e) { console.log(' Field might not exist.'); }
// 3. Re-create site field as UUID
console.log(' Creating site field as UUID...');
// @ts-ignore
await client.request(createField('pages', {
field: 'site',
type: 'uuid',
meta: { interface: 'select-dropdown' },
schema: { is_nullable: true }
}));
console.log('✅ Pages Schema Fixed.');
} catch (e: any) {
console.error('❌ Fix Failed:', e);
}
}
fixPagesField();

View File

@@ -1,20 +0,0 @@
import { createDirectus, rest, authentication, deleteCollection } from '@directus/sdk';
import * as dotenv from 'dotenv';
import * as path from 'path';
dotenv.config({ path: path.resolve(__dirname, '../credentials.env') });
const client = createDirectus(process.env.DIRECTUS_PUBLIC_URL!).with(authentication()).with(rest());
async function forceDelete() {
try {
await client.login(process.env.DIRECTUS_ADMIN_EMAIL!, process.env.DIRECTUS_ADMIN_PASSWORD!);
console.log('Attempting delete pages...');
// @ts-ignore
await client.request(deleteCollection('pages'));
console.log('✅ Deleted pages.');
} catch (e: any) {
console.log('❌ Delete failed:', e);
}
}
forceDelete();

View File

@@ -1,16 +0,0 @@
import { createDirectus, rest, authentication, readFields } from '@directus/sdk';
import * as dotenv from 'dotenv';
import * as path from 'path';
dotenv.config({ path: path.resolve(__dirname, '../credentials.env') });
const client = createDirectus(process.env.DIRECTUS_PUBLIC_URL!).with(authentication()).with(rest());
async function inspect() {
await client.login(process.env.DIRECTUS_ADMIN_EMAIL!, process.env.DIRECTUS_ADMIN_PASSWORD!);
// @ts-ignore
const fields = await client.request(readFields('pages'));
const blocksField = fields.find((f: any) => f.field === 'blocks');
console.log('Blocks Field:', blocksField);
}
inspect();

View File

@@ -1,40 +0,0 @@
import { createDirectus, rest, authentication, deleteCollection } from '@directus/sdk';
import * as dotenv from 'dotenv';
import * as path from 'path';
import { exec } from 'child_process';
dotenv.config({ path: path.resolve(__dirname, '../credentials.env') });
const client = createDirectus(process.env.DIRECTUS_PUBLIC_URL!).with(authentication()).with(rest());
async function resetPages() {
try {
await client.login(process.env.DIRECTUS_ADMIN_EMAIL!, process.env.DIRECTUS_ADMIN_PASSWORD!);
console.log('🗑️ Deleting pages collection...');
try {
// @ts-ignore
await client.request(deleteCollection('pages'));
console.log('✅ Deleted pages collection.');
} catch (e: any) {
console.log(' Pages collection might not exist or verify failed: ' + e.message);
}
console.log('🔄 Re-running setup schema...');
exec('npx tsx backend/scripts/setup_launchpad_schema.ts', (err, stdout, stderr) => {
if (err) console.error(stderr);
console.log(stdout);
console.log('🔄 Re-running demo generation...');
exec('npx tsx backend/scripts/generate_flagship_demo.ts', (err, stdout, stderr) => {
if (err) console.error(stderr);
console.log(stdout);
});
});
} catch (e) {
console.error(e);
}
}
resetPages();