docs: Add verification guides and summary
This commit is contained in:
46
DEPLOYMENT_VERIFICATION.md
Normal file
46
DEPLOYMENT_VERIFICATION.md
Normal 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.
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
@@ -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();
|
||||
@@ -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();
|
||||
@@ -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();
|
||||
Reference in New Issue
Block a user