create-bw-app 0.10.1 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/bin/bw.mjs +8 -0
- package/package.json +5 -2
- package/src/add.mjs +101 -0
- package/src/adopt.mjs +190 -0
- package/src/app-manifest.mjs +257 -0
- package/src/bw.mjs +55 -0
- package/src/constants.mjs +22 -10
- package/src/diff.mjs +85 -0
- package/src/doctor.mjs +113 -0
- package/src/generator.mjs +66 -8
- package/src/migrations.mjs +92 -0
- package/src/remove.mjs +100 -0
- package/src/scaffold-cmd.mjs +74 -0
- package/src/scaffold.mjs +90 -0
- package/src/update.mjs +51 -3
- package/src/upgrade.mjs +78 -0
- package/template/base/app/globals.css +1 -0
- package/template/base/config/bootstrap.ts +1 -1
- package/template/base/config/modules.ts +1 -1
- package/template/base/config/shell.overrides.ts +16 -0
- package/template/base/docs/ai/README.md +3 -2
- package/template/base/docs/ai/examples.md +2 -2
- package/template/base/public/brand/logo-dark.svg +2 -2
- package/template/base/public/brand/logo-light.svg +2 -2
- package/template/base/public/brand/logo-mark.svg +2 -2
- package/template/module-manifests/admin/brightweb.module.json +6 -0
- package/template/module-manifests/crm/brightweb.module.json +7 -0
- package/template/module-manifests/orgs/brightweb.module.json +6 -0
- package/template/module-manifests/projects/brightweb.module.json +6 -0
- package/template/modules/crm/app/api/crm/contacts/route.ts +10 -0
- package/template/modules/crm/app/api/crm/timeline/route.ts +8 -0
- package/template/modules/crm/app/crm/layout.tsx +5 -0
- package/template/modules/crm/app/crm/page.tsx +5 -0
- package/template/supabase/module-registry.json +9 -3
- package/template/supabase/modules/crm/migrations/20260316092000_crm_v1.sql +3 -253
- package/template/supabase/modules/crm/migrations/20260316092010_crm_org_integration.sql +66 -0
- package/template/supabase/modules/crm/migrations/20260421201523_portal_read_indexes.sql +0 -3
- package/template/supabase/modules/orgs/README.md +4 -0
- package/template/supabase/modules/orgs/migrations/20260316091500_orgs_v1.sql +216 -0
- package/template/modules/crm/app/playground/crm/page.tsx +0 -103
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
export const dynamic = "force-dynamic";
|
|
2
|
-
|
|
3
|
-
function formatError(error: unknown) {
|
|
4
|
-
if (error instanceof Error) {
|
|
5
|
-
return error.message;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
return "Unknown error";
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export default async function CrmPlaygroundPage() {
|
|
12
|
-
try {
|
|
13
|
-
const { getCrmDashboardData } = await import("@brightweblabs/module-crm");
|
|
14
|
-
const data = await getCrmDashboardData();
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<>
|
|
18
|
-
<article className="panel">
|
|
19
|
-
<div className="panel-inner">
|
|
20
|
-
<p className="eyebrow">CRM Module</p>
|
|
21
|
-
<h1>CRM server/data playground</h1>
|
|
22
|
-
<p className="muted">
|
|
23
|
-
This route calls the external `@brightweblabs/module-crm` package directly and shows a thin data summary.
|
|
24
|
-
</p>
|
|
25
|
-
</div>
|
|
26
|
-
</article>
|
|
27
|
-
|
|
28
|
-
<article className="grid">
|
|
29
|
-
<div className="panel">
|
|
30
|
-
<div className="panel-inner">
|
|
31
|
-
<p className="status ok">Connected</p>
|
|
32
|
-
<h2>Snapshot</h2>
|
|
33
|
-
<ul className="list">
|
|
34
|
-
<li>Total contacts: {data.stats.total}</li>
|
|
35
|
-
<li>Organizations loaded: {data.organizations.length}</li>
|
|
36
|
-
<li>Timeline events: {data.statusLog.length}</li>
|
|
37
|
-
<li>Owner options: {data.ownerOptions.length}</li>
|
|
38
|
-
</ul>
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
|
|
42
|
-
<div className="panel">
|
|
43
|
-
<div className="panel-inner">
|
|
44
|
-
<h2>Statuses</h2>
|
|
45
|
-
<div className="code-box">
|
|
46
|
-
<pre>{JSON.stringify(data.stats.byStatus, null, 2)}</pre>
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
|
49
|
-
</div>
|
|
50
|
-
</article>
|
|
51
|
-
|
|
52
|
-
<article className="panel">
|
|
53
|
-
<div className="panel-inner">
|
|
54
|
-
<h2>First records</h2>
|
|
55
|
-
<div className="code-box">
|
|
56
|
-
<pre>
|
|
57
|
-
{JSON.stringify(
|
|
58
|
-
{
|
|
59
|
-
organizations: data.organizations.slice(0, 2),
|
|
60
|
-
contacts: data.contacts.slice(0, 3),
|
|
61
|
-
statusLog: data.statusLog.slice(0, 3),
|
|
62
|
-
},
|
|
63
|
-
null,
|
|
64
|
-
2,
|
|
65
|
-
)}
|
|
66
|
-
</pre>
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
|
-
</article>
|
|
70
|
-
</>
|
|
71
|
-
);
|
|
72
|
-
} catch (error) {
|
|
73
|
-
return (
|
|
74
|
-
<>
|
|
75
|
-
<article className="panel">
|
|
76
|
-
<div className="panel-inner">
|
|
77
|
-
<p className="eyebrow">CRM Module</p>
|
|
78
|
-
<h1>CRM server/data playground</h1>
|
|
79
|
-
<p className="muted">
|
|
80
|
-
The package is wired, but this sandbox still needs valid environment variables and database access.
|
|
81
|
-
</p>
|
|
82
|
-
</div>
|
|
83
|
-
</article>
|
|
84
|
-
|
|
85
|
-
<article className="panel">
|
|
86
|
-
<div className="panel-inner stack">
|
|
87
|
-
<p className="status warn">Configuration required</p>
|
|
88
|
-
<div className="result-box">
|
|
89
|
-
<strong>Current error</strong>
|
|
90
|
-
<p>{formatError(error)}</p>
|
|
91
|
-
</div>
|
|
92
|
-
<ul className="list">
|
|
93
|
-
<li>Set `NEXT_PUBLIC_APP_URL`.</li>
|
|
94
|
-
<li>Set `NEXT_PUBLIC_SUPABASE_URL`.</li>
|
|
95
|
-
<li>Set `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_DEFAULT_KEY`.</li>
|
|
96
|
-
<li>If you need CRM writes or email flows, also set the server-only keys in the platform repo.</li>
|
|
97
|
-
</ul>
|
|
98
|
-
</div>
|
|
99
|
-
</article>
|
|
100
|
-
</>
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
}
|