@undp/create-app 0.91.0 → 0.91.2

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.
Files changed (25) hide show
  1. package/README.md +5 -3
  2. package/bin/generateFiles/generateIndexHtml.js +13 -5
  3. package/bin/generateFiles/generatePackageJson.js +1 -0
  4. package/bin/generateFiles/generateStaticWebAppConfig.js +15 -5
  5. package/bin/generateFiles/generateViteConfig.js +6 -0
  6. package/bin/promptUser.js +146 -127
  7. package/bin/templates/next/auth/README.md +17 -0
  8. package/bin/templates/next/basic/README.md +17 -0
  9. package/bin/templates/vite/basic/.github/ISSUE_TEMPLATE/launch-checklist.md +73 -0
  10. package/bin/templates/vite/basic/README.md +40 -5
  11. package/bin/templates/vite/query/.github/ISSUE_TEMPLATE/launch-checklist.md +73 -0
  12. package/bin/templates/vite/query/README.md +39 -5
  13. package/bin/templates/vite/query+router/.github/ISSUE_TEMPLATE/launch-checklist.md +73 -0
  14. package/bin/templates/vite/query+router/README.md +17 -0
  15. package/bin/templates/vite/router/.github/ISSUE_TEMPLATE/launch-checklist.md +73 -0
  16. package/bin/templates/vite/router/README.md +17 -0
  17. package/bin/templates/viteWithLanguage/basic/.github/ISSUE_TEMPLATE/launch-checklist.md +73 -0
  18. package/bin/templates/viteWithLanguage/basic/README.md +52 -5
  19. package/bin/templates/viteWithLanguage/query/.github/ISSUE_TEMPLATE/launch-checklist.md +73 -0
  20. package/bin/templates/viteWithLanguage/query/README.md +53 -5
  21. package/bin/templates/viteWithLanguage/query+router/.github/ISSUE_TEMPLATE/launch-checklist.md +72 -0
  22. package/bin/templates/viteWithLanguage/query+router/README.md +17 -0
  23. package/bin/templates/viteWithLanguage/router/.github/ISSUE_TEMPLATE/launch-checklist.md +73 -0
  24. package/bin/templates/viteWithLanguage/router/README.md +17 -0
  25. package/package.json +1 -1
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: Launch checklist
3
+ about: Pre-launch checks to complete before going to production
4
+ title: "Launch checklist"
5
+ labels: launch
6
+ assignees: ''
7
+ ---
8
+
9
+ <!-- Tick items as you go. Don't close this issue until every box is checked or explicitly marked N/A with a reason. -->
10
+
11
+ ## Metadata & SEO
12
+
13
+ - [ ] Favicon added (`favicon.ico` + SVG).
14
+ - [ ] `<meta name="theme-color">` added.
15
+ - [ ] `<html lang="…">` is set correctly.
16
+ - [ ] Every route has a unique `<title>` and `<meta name="description">`.
17
+ - [ ] Every route has a canonical URL: `<link rel="canonical" href="…">`.
18
+ - [ ] Open Graph and Twitter tags are added (globally in `index.html` or per route). Use absolute URLs for `og:url` and `og:image`:
19
+
20
+ ```html
21
+ <meta property="og:type" content="website" />
22
+ <meta property="og:site_name" content="SITE_NAME" />
23
+ <meta property="og:title" content="TITLE" />
24
+ <meta property="og:description" content="DESCRIPTION" />
25
+ <meta property="og:url" content="https://example.com/page" />
26
+ <meta property="og:image" content="https://example.com/og-image.png" />
27
+ <meta property="og:image:width" content="1200" />
28
+ <meta property="og:image:height" content="630" />
29
+ <meta property="og:image:alt" content="IMAGE_ALT_TEXT" />
30
+ <meta name="twitter:card" content="summary_large_image" />
31
+ ```
32
+
33
+ - [ ] Social previews verified with a preview tool (e.g. opengraph.xyz, LinkedIn Post Inspector).
34
+ - [ ] `robots.txt` and `sitemap.xml` are in place.
35
+ - [ ] `<meta name="robots" content="noindex">` is added to routes that should not be indexed for search.
36
+ - [ ] Production is indexable (no leftover `noindex`), and staging is **not** indexable.
37
+ - [ ] `apple-touch-icon` (180×180) added - only needed for site which the users might "install".
38
+ - [ ] `site.webmanifest` added - only needed for site which the users might "install".
39
+
40
+ ## Functionality & QA
41
+
42
+ - [ ] All routes load, including on direct visit or refresh (host has SPA fallback routing).
43
+ - [ ] A custom 404 page exists, and React error boundaries catch runtime errors.
44
+ - [ ] No errors or warnings in the browser console.
45
+ - [ ] All forms, links and external integrations work in production.
46
+ - [ ] Design QA is complete and signed off.
47
+ - [ ] The layout works on all viewport widths from 360px up. At minimum, check 360, 768, 1024 and 1440px.
48
+ - [ ] Tested in the latest Chrome, Firefox, Edge and Safari.
49
+
50
+ ## Performance
51
+
52
+ - [ ] Initial JS on first page load is ≤ 175 KB gzipped.
53
+ - [ ] Main CSS file is ≤ 50 KB gzipped.
54
+ - [ ] Images are optimised (WebP/AVIF, correctly sized, ≤ 75 KB each, lazy-loaded below the fold).
55
+ - [ ] Lighthouse scores (run in incognito against production):
56
+
57
+ | Category | Desktop | Mobile |
58
+ |----------------|---------|--------|
59
+ | Performance | ≥ 90 | ≥ 70 |
60
+ | Accessibility | ≥ 90 | ≥ 90 |
61
+ | Best Practices | ≥ 90 | ≥ 90 |
62
+ | SEO | ≥ 90 | ≥ 90 |
63
+
64
+ ## Security & infrastructure
65
+
66
+ - [ ] `npm audit` shows no high or critical vulnerabilities.
67
+ - [ ] `npm audit --omit=dev` shows no vulnerabilities.
68
+ - [ ] No secrets or private API keys in the client bundle.
69
+
70
+ ## Analytics & privacy
71
+
72
+ - [ ] Google Analytics and/or Microsoft Clarity are installed and events are confirmed arriving from production.
@@ -120,6 +120,23 @@ __Please note: Language routing is done at in `src/main.tsx`__
120
120
 
121
121
  Data fetching is powered by [TanStack Query](https://tanstack.com/query) for efficient, declarative data fetching and caching.
122
122
 
123
+ ## ✅ Launch Checklist
124
+
125
+ Before deploying to production, complete the launch checklist. It covers metadata and SEO, analytics, QA, accessibility, performance, security headers and caching.
126
+
127
+ The checklist is set up as a GitHub issue template, so each launch gets its own tickable copy:
128
+
129
+ 1. Go to **Issues → New issue** in this repository.
130
+ 2. Select **Launch checklist**.
131
+ 3. Assign yourself, and click **Create**.
132
+ 4. Tick items off as you complete them. The issue list shows progress (e.g. "7 of 32 tasks").
133
+
134
+ Or open it directly: [Create launch checklist issue](../../issues/new?template=launch-checklist.md)
135
+
136
+ Don't close the issue until every item is checked, or marked N/A with a reason.
137
+
138
+ The template lives in `.github/ISSUE_TEMPLATE/launch-checklist.md`.
139
+
123
140
  ## 📬 Contact us
124
141
 
125
142
  For questions or feedback, contact us at [data@undp.org](mailto:data@undp.org).
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: Launch checklist
3
+ about: Pre-launch checks to complete before going to production
4
+ title: "Launch checklist"
5
+ labels: launch
6
+ assignees: ''
7
+ ---
8
+
9
+ <!-- Tick items as you go. Don't close this issue until every box is checked or explicitly marked N/A with a reason. -->
10
+
11
+ ## Metadata & SEO
12
+
13
+ - [ ] Favicon added (`favicon.ico` + SVG), plus `apple-touch-icon` (180×180).
14
+ - [ ] `<meta name="theme-color">` added.
15
+ - [ ] `<html lang="…">` is set correctly.
16
+ - [ ] Every route has a unique `<title>` and `<meta name="description">`.
17
+ - [ ] Every route has a canonical URL: `<link rel="canonical" href="…">`.
18
+ - [ ] Open Graph and Twitter tags are added (globally in `index.html` or per route). Use absolute URLs for `og:url` and `og:image`:
19
+
20
+ ```html
21
+ <meta property="og:type" content="website" />
22
+ <meta property="og:site_name" content="SITE_NAME" />
23
+ <meta property="og:title" content="TITLE" />
24
+ <meta property="og:description" content="DESCRIPTION" />
25
+ <meta property="og:url" content="https://example.com/page" />
26
+ <meta property="og:image" content="https://example.com/og-image.png" />
27
+ <meta property="og:image:width" content="1200" />
28
+ <meta property="og:image:height" content="630" />
29
+ <meta property="og:image:alt" content="IMAGE_ALT_TEXT" />
30
+ <meta name="twitter:card" content="summary_large_image" />
31
+ ```
32
+
33
+ - [ ] Social previews verified with a preview tool (e.g. opengraph.xyz, LinkedIn Post Inspector).
34
+ - [ ] `robots.txt` and `sitemap.xml` are in place.
35
+ - [ ] `<meta name="robots" content="noindex">` is added to routes that should not be indexed for search.
36
+ - [ ] Production is indexable (no leftover `noindex`), and staging is **not** indexable.
37
+ - [ ] `apple-touch-icon` (180×180) added - only needed for site which the users might "install".
38
+ - [ ] `site.webmanifest` added - only needed for site which the users might "install".
39
+
40
+ ## Functionality & QA
41
+
42
+ - [ ] All routes load, including on direct visit or refresh (host has SPA fallback routing).
43
+ - [ ] A custom 404 page exists, and React error boundaries catch runtime errors.
44
+ - [ ] No errors or warnings in the browser console.
45
+ - [ ] All forms, links and external integrations work in production.
46
+ - [ ] Design QA is complete and signed off.
47
+ - [ ] The layout works on all viewport widths from 360px up. At minimum, check 360, 768, 1024 and 1440px.
48
+ - [ ] Tested in the latest Chrome, Firefox, Edge and Safari.
49
+
50
+ ## Performance
51
+
52
+ - [ ] Initial JS on first page load is ≤ 175 KB gzipped.
53
+ - [ ] Main CSS file is ≤ 50 KB gzipped.
54
+ - [ ] Images are optimised (WebP/AVIF, correctly sized, ≤ 75 KB each, lazy-loaded below the fold).
55
+ - [ ] Fonts are subset and preloaded, with `font-display: swap`.
56
+ - [ ] Lighthouse scores (run in incognito against production):
57
+
58
+ | Category | Desktop | Mobile |
59
+ |----------------|---------|--------|
60
+ | Performance | ≥ 90 | ≥ 70 |
61
+ | Accessibility | ≥ 90 | ≥ 90 |
62
+ | Best Practices | ≥ 90 | ≥ 90 |
63
+ | SEO | ≥ 90 | ≥ 90 |
64
+
65
+ ## Security & infrastructure
66
+
67
+ - [ ] `npm audit` shows no high or critical vulnerabilities.
68
+ - [ ] `npm audit --omit=dev` shows no vulnerabilities.
69
+ - [ ] No secrets or private API keys in the client bundle.
70
+
71
+ ## Analytics & privacy
72
+
73
+ - [ ] Google Analytics and/or Microsoft Clarity are installed and events are confirmed arriving from production.
@@ -115,6 +115,23 @@ More info: [Link documentation](https://tanstack.com/router/v1/docs/framework/re
115
115
 
116
116
  __Please note: Language routing is done at in `src/main.tsx`__
117
117
 
118
+ ## ✅ Launch Checklist
119
+
120
+ Before deploying to production, complete the launch checklist. It covers metadata and SEO, analytics, QA, accessibility, performance, security headers and caching.
121
+
122
+ The checklist is set up as a GitHub issue template, so each launch gets its own tickable copy:
123
+
124
+ 1. Go to **Issues → New issue** in this repository.
125
+ 2. Select **Launch checklist**.
126
+ 3. Assign yourself, and click **Create**.
127
+ 4. Tick items off as you complete them. The issue list shows progress (e.g. "7 of 32 tasks").
128
+
129
+ Or open it directly: [Create launch checklist issue](../../issues/new?template=launch-checklist.md)
130
+
131
+ Don't close the issue until every item is checked, or marked N/A with a reason.
132
+
133
+ The template lives in `.github/ISSUE_TEMPLATE/launch-checklist.md`.
134
+
118
135
  ## 📬 Contact us
119
136
 
120
137
  For questions or feedback, contact us at [data@undp.org](mailto:data@undp.org).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@undp/create-app",
3
- "version": "0.91.0",
3
+ "version": "0.91.2",
4
4
  "description": "UNDP's project scaffolding tool",
5
5
  "bin": {
6
6
  "create-undp-app": "./bin/index.js"