create-feedbax 0.1.0 → 0.2.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.
Files changed (210) hide show
  1. package/LICENSE +201 -21
  2. package/README.md +11 -1
  3. package/dist/cli.js +1261 -26
  4. package/dist/index.js +1402 -160
  5. package/package.json +40 -14
  6. package/template/.feedbax-template.sha256 +1 -0
  7. package/template/.gitignore.template +6 -0
  8. package/template/.npmignore.template +5 -0
  9. package/template/.prettierignore.template +4 -0
  10. package/template/LICENSE +201 -0
  11. package/template/components.json +25 -0
  12. package/template/eslint.config.mjs +25 -0
  13. package/template/package.json +70 -14
  14. package/template/public/feedbax-mark.svg +4 -0
  15. package/template/public/robots.txt +3 -0
  16. package/template/src/authorized-draft-post.test.tsx +212 -0
  17. package/template/src/authorized-draft-post.tsx +204 -0
  18. package/template/src/authorized-draft-query.ts +74 -0
  19. package/template/src/browser-post-state.test.ts +120 -0
  20. package/template/src/browser-post-state.ts +134 -0
  21. package/template/src/browser-vote-state.test.ts +14 -0
  22. package/template/src/browser-vote-state.ts +27 -0
  23. package/template/src/capability-authorization-error.ts +3 -0
  24. package/template/src/changelog-page.test.tsx +139 -0
  25. package/template/src/changelog-page.tsx +219 -0
  26. package/template/src/changelog-query.ts +13 -0
  27. package/template/src/changelog-runtime.ts +27 -0
  28. package/template/src/cloudflare-turnstile.ts +31 -0
  29. package/template/src/cloudflare-workers-test.ts +3 -0
  30. package/template/src/cloudflare-workers.d.ts +18 -0
  31. package/template/src/comment-creation.test.tsx +270 -0
  32. package/template/src/comment-profile.ts +5 -0
  33. package/template/src/comment-thread-page.ts +18 -0
  34. package/template/src/components/command-palette-context.tsx +71 -0
  35. package/template/src/components/command-palette.tsx +246 -0
  36. package/template/src/components/create-post-trigger.tsx +44 -0
  37. package/template/src/components/device-profile-provider.tsx +309 -0
  38. package/template/src/components/header.tsx +95 -0
  39. package/template/src/components/loader.tsx +10 -0
  40. package/template/src/components/profile-menu.tsx +89 -0
  41. package/template/src/components/ui/components/alert-dialog.tsx +185 -0
  42. package/template/src/components/ui/components/attachment.tsx +207 -0
  43. package/template/src/components/ui/components/avatar.tsx +107 -0
  44. package/template/src/components/ui/components/badge.tsx +52 -0
  45. package/template/src/components/ui/components/bubble.tsx +128 -0
  46. package/template/src/components/ui/components/button-group.tsx +87 -0
  47. package/template/src/components/ui/components/button.tsx +56 -0
  48. package/template/src/components/ui/components/card.tsx +103 -0
  49. package/template/src/components/ui/components/checkbox.tsx +26 -0
  50. package/template/src/components/ui/components/command.tsx +194 -0
  51. package/template/src/components/ui/components/dialog.tsx +154 -0
  52. package/template/src/components/ui/components/drawer.tsx +229 -0
  53. package/template/src/components/ui/components/dropdown-menu.tsx +270 -0
  54. package/template/src/components/ui/components/empty.tsx +101 -0
  55. package/template/src/components/ui/components/field.tsx +236 -0
  56. package/template/src/components/ui/components/input-group.tsx +155 -0
  57. package/template/src/components/ui/components/input.tsx +20 -0
  58. package/template/src/components/ui/components/item.tsx +201 -0
  59. package/template/src/components/ui/components/kbd.tsx +26 -0
  60. package/template/src/components/ui/components/label.tsx +18 -0
  61. package/template/src/components/ui/components/marker.tsx +71 -0
  62. package/template/src/components/ui/components/message-scroller.tsx +128 -0
  63. package/template/src/components/ui/components/message.tsx +92 -0
  64. package/template/src/components/ui/components/native-select.tsx +65 -0
  65. package/template/src/components/ui/components/popover.tsx +88 -0
  66. package/template/src/components/ui/components/portal-primitives.test.tsx +85 -0
  67. package/template/src/components/ui/components/radio-group.tsx +36 -0
  68. package/template/src/components/ui/components/scroll-area.tsx +52 -0
  69. package/template/src/components/ui/components/secondary-form-actions.test.tsx +23 -0
  70. package/template/src/components/ui/components/select.tsx +199 -0
  71. package/template/src/components/ui/components/separator.tsx +23 -0
  72. package/template/src/components/ui/components/sheet.tsx +135 -0
  73. package/template/src/components/ui/components/skeleton.tsx +13 -0
  74. package/template/src/components/ui/components/sonner.tsx +43 -0
  75. package/template/src/components/ui/components/spinner.tsx +16 -0
  76. package/template/src/components/ui/components/tabs.tsx +80 -0
  77. package/template/src/components/ui/components/textarea.tsx +18 -0
  78. package/template/src/components/ui/components/tooltip.tsx +64 -0
  79. package/template/src/components/ui/hooks/.gitkeep +0 -0
  80. package/template/src/components/ui/lib/utils.ts +6 -0
  81. package/template/src/components/ui/styles/globals.css +151 -0
  82. package/template/src/create-post-overlay.tsx +82 -0
  83. package/template/src/draft-post-list.tsx +39 -0
  84. package/template/src/feedback-cache-invalidation.test.ts +185 -0
  85. package/template/src/feedback-cache-invalidation.ts +97 -0
  86. package/template/src/feedback-runtime.ts +38 -0
  87. package/template/src/feedbax/changelog/index.test.ts +156 -0
  88. package/template/src/feedbax/changelog/index.ts +206 -0
  89. package/template/src/feedbax/changelog/notion-changelog.test.ts +395 -0
  90. package/template/src/feedbax/changelog/notion-changelog.ts +400 -0
  91. package/template/src/feedbax/config/index.test.ts +111 -0
  92. package/template/src/feedbax/config/index.ts +271 -0
  93. package/template/src/feedbax/feedback/feedback-storage.ts +43 -0
  94. package/template/src/feedbax/feedback/index.test.ts +900 -0
  95. package/template/src/feedbax/feedback/index.ts +942 -0
  96. package/template/src/feedbax/feedback/notion-comments.test.ts +171 -0
  97. package/template/src/feedbax/feedback/notion-comments.ts +231 -0
  98. package/template/src/feedbax/feedback/notion-data-source.test.ts +364 -0
  99. package/template/src/feedbax/feedback/notion-data-source.ts +458 -0
  100. package/template/src/feedbax/feedback/notion-feedback.test.ts +998 -0
  101. package/template/src/feedbax/feedback/notion-feedback.ts +651 -0
  102. package/template/src/feedbax/feedback/notion-request.ts +74 -0
  103. package/template/src/feedbax.test-fixture.ts +64 -0
  104. package/template/src/feedbax.ts +69 -0
  105. package/template/src/index.css +2138 -0
  106. package/template/src/lazy-create-post-overlay.tsx +6 -0
  107. package/template/src/lazy-post-detail-overlay.tsx +10 -0
  108. package/template/src/masked-post-link.tsx +27 -0
  109. package/template/src/overlay-post-detail.test.tsx +130 -0
  110. package/template/src/overlay-post-detail.tsx +92 -0
  111. package/template/src/portal-comments.test.ts +375 -0
  112. package/template/src/portal-comments.ts +384 -0
  113. package/template/src/portal-features.test.tsx +150 -0
  114. package/template/src/portal-feedback-form.tsx +515 -0
  115. package/template/src/portal-feedback-runtime.test.ts +32 -0
  116. package/template/src/portal-feedback-runtime.ts +55 -0
  117. package/template/src/portal-feedback-server-function.ts +93 -0
  118. package/template/src/portal-feedback-submission.test.ts +307 -0
  119. package/template/src/portal-feedback-submission.ts +214 -0
  120. package/template/src/portal-head.ts +58 -0
  121. package/template/src/portal-server-entry.ts +64 -0
  122. package/template/src/portal-voting.test.ts +106 -0
  123. package/template/src/portal-voting.ts +149 -0
  124. package/template/src/post-badges.tsx +27 -0
  125. package/template/src/post-creation-flow.test.tsx +230 -0
  126. package/template/src/post-creation-flow.tsx +88 -0
  127. package/template/src/post-detail-overlay.test.tsx +114 -0
  128. package/template/src/post-detail-overlay.tsx +67 -0
  129. package/template/src/post-feed-controls.test.tsx +239 -0
  130. package/template/src/post-feed-controls.tsx +298 -0
  131. package/template/src/post-presentation.ts +37 -0
  132. package/template/src/post-queries.test.ts +158 -0
  133. package/template/src/post-queries.ts +26 -0
  134. package/template/src/post-results.tsx +165 -0
  135. package/template/src/public-cache-policy.test.ts +141 -0
  136. package/template/src/public-cache-policy.ts +119 -0
  137. package/template/src/public-cache-tags.ts +7 -0
  138. package/template/src/public-changelog-page.ts +15 -0
  139. package/template/src/public-changelog-server-function.ts +27 -0
  140. package/template/src/public-date.ts +11 -0
  141. package/template/src/public-failure-state.test.tsx +69 -0
  142. package/template/src/public-feedback-index.tsx +124 -0
  143. package/template/src/public-feedback-page.test.tsx +290 -0
  144. package/template/src/public-feedback-page.ts +75 -0
  145. package/template/src/public-feedback-server-function.ts +22 -0
  146. package/template/src/public-portal-error.tsx +27 -0
  147. package/template/src/public-post-detail.tsx +682 -0
  148. package/template/src/public-post-page.test.tsx +173 -0
  149. package/template/src/public-post-page.ts +15 -0
  150. package/template/src/public-post-route.test.tsx +214 -0
  151. package/template/src/public-post-route.tsx +171 -0
  152. package/template/src/public-post-server-function.ts +48 -0
  153. package/template/src/public-post-unavailable.tsx +10 -0
  154. package/template/src/public-roadmap-page.test.tsx +139 -0
  155. package/template/src/public-roadmap-page.ts +24 -0
  156. package/template/src/public-roadmap-route.test.tsx +218 -0
  157. package/template/src/public-roadmap-route.tsx +50 -0
  158. package/template/src/public-roadmap-server-function.ts +44 -0
  159. package/template/src/public-roadmap-view.tsx +378 -0
  160. package/template/src/public-shell.test.tsx +518 -0
  161. package/template/src/roadmap-query.ts +21 -0
  162. package/template/src/root-branding.test.ts +53 -0
  163. package/template/src/routeTree.gen.ts +131 -0
  164. package/template/src/routed-post-creation-form.tsx +28 -0
  165. package/template/src/router.tsx +25 -0
  166. package/template/src/routes/__root.tsx +116 -0
  167. package/template/src/routes/changelog.tsx +39 -0
  168. package/template/src/routes/index.tsx +61 -0
  169. package/template/src/routes/p.$slug.tsx +16 -0
  170. package/template/src/routes/roadmap.tsx +11 -0
  171. package/template/src/routes/submit.tsx +28 -0
  172. package/template/src/safe-public-failure.ts +45 -0
  173. package/template/src/server.ts +111 -0
  174. package/template/src/similar-posts.tsx +45 -0
  175. package/template/src/submit-route.test.tsx +134 -0
  176. package/template/src/trusted-feedback-handler.test.ts +425 -0
  177. package/template/src/trusted-feedback-handler.ts +181 -0
  178. package/template/src/trusted-feedback-runtime.ts +17 -0
  179. package/template/src/turnstile-configuration.test.ts +37 -0
  180. package/template/src/turnstile-configuration.ts +19 -0
  181. package/template/src/use-media-query.ts +17 -0
  182. package/template/src/vote-toggle.test.tsx +171 -0
  183. package/template/src/vote-toggle.tsx +211 -0
  184. package/template/tsconfig.json +45 -0
  185. package/template/vite.config.ts +20 -0
  186. package/template/vitest.config.ts +4 -0
  187. package/template/vitest.setup.ts +3 -0
  188. package/template/wrangler.jsonc +35 -0
  189. package/dist/cli.d.ts +0 -3
  190. package/dist/cli.d.ts.map +0 -1
  191. package/dist/cli.js.map +0 -1
  192. package/dist/index.d.ts +0 -21
  193. package/dist/index.d.ts.map +0 -1
  194. package/dist/index.js.map +0 -1
  195. package/template/.env.example +0 -4
  196. package/template/README.md +0 -7
  197. package/template/apps/portal/components.json +0 -20
  198. package/template/apps/portal/package.json +0 -31
  199. package/template/apps/portal/src/lib/utils.ts +0 -6
  200. package/template/apps/portal/src/routeTree.gen.ts +0 -59
  201. package/template/apps/portal/src/router.tsx +0 -10
  202. package/template/apps/portal/src/routes/__root.tsx +0 -31
  203. package/template/apps/portal/src/routes/index.tsx +0 -35
  204. package/template/apps/portal/src/styles.css +0 -91
  205. package/template/apps/portal/tsconfig.json +0 -15
  206. package/template/apps/portal/vite.config.ts +0 -13
  207. package/template/feedbax.config.ts +0 -13
  208. package/template/feedbax.jsonc +0 -11
  209. package/template/pnpm-workspace.yaml +0 -3
  210. package/template/turbo.json +0 -8
@@ -0,0 +1,20 @@
1
+ import { cloudflare } from "@cloudflare/vite-plugin";
2
+ import tailwindcss from "@tailwindcss/vite";
3
+ import { tanstackStart } from "@tanstack/react-start/plugin/vite";
4
+ import viteReact from "@vitejs/plugin-react";
5
+ import { defineConfig } from "vite";
6
+
7
+ export default defineConfig({
8
+ server: {
9
+ port: 3001,
10
+ },
11
+ resolve: {
12
+ tsconfigPaths: true,
13
+ },
14
+ plugins: [
15
+ cloudflare({ viteEnvironment: { name: "ssr" } }),
16
+ tailwindcss(),
17
+ tanstackStart({ server: { entry: "./server.ts" } }),
18
+ viteReact(),
19
+ ],
20
+ });
@@ -0,0 +1,4 @@
1
+ import { fileURLToPath } from "node:url";
2
+ import { defineConfig } from "vitest/config";
3
+ const src = fileURLToPath(new URL("./src/", import.meta.url));
4
+ export default defineConfig({ test: { setupFiles: ["./vitest.setup.ts"] }, resolve: { alias: [{ find: "@feedbax/feedback", replacement: `${src}feedbax/feedback/index.ts` }, { find: "@feedbax/changelog", replacement: `${src}feedbax/changelog/index.ts` }, { find: "@feedbax/config", replacement: `${src}feedbax/config/index.ts` }, { find: "cloudflare:workers", replacement: `${src}cloudflare-workers-test.ts` }, { find: /^@feedbax\/ui\/(.*)$/, replacement: `${src}components/ui/$1` }] } });
@@ -0,0 +1,3 @@
1
+ import { vi } from "vitest";
2
+
3
+ vi.mock("./src/feedbax", () => import("./src/feedbax.test-fixture"));
@@ -0,0 +1,35 @@
1
+ {
2
+ "$schema": "node_modules/wrangler/config-schema.json",
3
+ "name": "feedbax-installation",
4
+ "compatibility_date": "2026-08-20",
5
+ "compatibility_flags": [
6
+ "nodejs_compat"
7
+ ],
8
+ "main": "./src/server.ts",
9
+ "workers_dev": true,
10
+ "preview_urls": true,
11
+ "cache": {
12
+ "enabled": true
13
+ },
14
+ "ratelimits": [
15
+ {
16
+ "name": "TRUSTED_SUBMISSIONS_RATE_LIMITER",
17
+ "namespace_id": "1001",
18
+ "simple": {
19
+ "limit": 60,
20
+ "period": 60
21
+ }
22
+ },
23
+ {
24
+ "name": "PORTAL_SUBMISSIONS_RATE_LIMITER",
25
+ "namespace_id": "1002",
26
+ "simple": {
27
+ "limit": 5,
28
+ "period": 60
29
+ }
30
+ }
31
+ ],
32
+ "observability": {
33
+ "enabled": true
34
+ }
35
+ }
package/dist/cli.d.ts DELETED
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,+BAA+B,GAChC,MAAM,YAAY,CAAA;AAEnB,IAAI,CAAC;IACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAA;IAC/D,MAAM,OAAO,GAAG,WAAW;QACzB,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAChB,MAAM,QAAQ,GAAG,eAAe,CAAC;gBAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAA;YACF,IAAI,CAAC;gBACH,OAAO,MAAM,+BAA+B,CAC1C,IAAI,EACJ,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,CAC/B,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,YAAY,KAAK,CAAC,CACvD,CAAA;YACH,CAAC;oBAAS,CAAC;gBACT,QAAQ,CAAC,KAAK,EAAE,CAAA;YAClB,CAAC;QACH,CAAC,CAAC,EAAE;QACN,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sBAAsB,MAAM,CAAC,WAAW,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/E,CAAA;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAC9D,CAAA;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;AACtB,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,21 +0,0 @@
1
- type IdentityMode = 'anonymous' | 'email' | 'handoff';
2
- export type Deployment = 'cloudflare' | 'vercel' | 'node';
3
- export type PackageManager = 'npm' | 'pnpm';
4
- export interface CreateOptions {
5
- readonly directory: string;
6
- readonly identity: IdentityMode;
7
- readonly deploy: Deployment;
8
- readonly packageManager: PackageManager;
9
- readonly preset: string;
10
- readonly install: boolean;
11
- readonly git: boolean;
12
- }
13
- export declare function resolveCreateOptions(argv: readonly string[]): CreateOptions;
14
- export type CreatePrompt = (question: string, defaultValue: string) => Promise<string>;
15
- export declare function resolveInteractiveCreateOptions(argv: readonly string[], prompt: CreatePrompt): Promise<CreateOptions>;
16
- export declare function createProject(options: CreateOptions): Promise<{
17
- destination: string;
18
- nextSteps: string[];
19
- }>;
20
- export {};
21
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,KAAK,YAAY,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAA;AACzD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,MAAM,CAAA;AAC3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAA;CACtB;AAoBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,aAAa,CA6C3E;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,MAAM,CAAC,CAAA;AAEpB,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,aAAa,CAAC,CAaxB;AAyCD,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa;;;GA8DzD"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- # Server-only Notion integration token. Never expose this to browser code.
2
- NOTION_TOKEN=
3
- # At least 32 random bytes used to sign opaque visitor sessions.
4
- FEEDBAX_SESSION_SECRET=
@@ -1,7 +0,0 @@
1
- # Feedbax portal
2
-
3
- 1. Copy `.env.example` to `.env` and configure the server-only values.
4
- 2. Run `npx feedbax doctor`.
5
- 3. Run `pnpm dev` (or `npm run dev`).
6
-
7
- Email identity is capture-only and does not verify ownership. Notion-backed interaction uniqueness is best effort.
@@ -1,20 +0,0 @@
1
- {
2
- "$schema": "https://ui.shadcn.com/schema.json",
3
- "style": "new-york",
4
- "rsc": false,
5
- "tsx": true,
6
- "tailwind": {
7
- "config": "",
8
- "css": "src/styles.css",
9
- "baseColor": "zinc",
10
- "cssVariables": true
11
- },
12
- "iconLibrary": "lucide",
13
- "aliases": {
14
- "components": "@/components",
15
- "utils": "@/lib/utils",
16
- "ui": "@/components/ui",
17
- "lib": "@/lib",
18
- "hooks": "@/hooks"
19
- }
20
- }
@@ -1,31 +0,0 @@
1
- {
2
- "name": "@feedbax/portal",
3
- "private": true,
4
- "type": "module",
5
- "scripts": {
6
- "dev": "vite dev --port 3000",
7
- "build": "vite build",
8
- "type-check": "tsc --noEmit"
9
- },
10
- "dependencies": {
11
- "@feedbax/core": "^0.1.0",
12
- "@feedbax/notion": "^0.1.0",
13
- "@tanstack/react-router": "1.170.18",
14
- "@tanstack/react-start": "1.168.20",
15
- "class-variance-authority": "0.7.1",
16
- "clsx": "2.1.1",
17
- "react": "^19.2.4",
18
- "react-dom": "^19.2.4",
19
- "tailwind-merge": "3.5.0"
20
- },
21
- "devDependencies": {
22
- "@tailwindcss/vite": "4.1.18",
23
- "@tanstack/router-plugin": "1.168.20",
24
- "@types/react": "^19.2.14",
25
- "@types/react-dom": "^19.2.3",
26
- "@vitejs/plugin-react": "5.1.4",
27
- "nitro": "3.0.260610-beta",
28
- "tailwindcss": "4.1.18",
29
- "vite": "7.3.6"
30
- }
31
- }
@@ -1,6 +0,0 @@
1
- import { clsx, type ClassValue } from 'clsx'
2
- import { twMerge } from 'tailwind-merge'
3
-
4
- export function cn(...inputs: ClassValue[]) {
5
- return twMerge(clsx(inputs))
6
- }
@@ -1,59 +0,0 @@
1
- /* eslint-disable */
2
- // @ts-nocheck
3
- // Generated by TanStack Router. It is refreshed by the Vite router plugin.
4
-
5
- import { Route as rootRouteImport } from './routes/__root'
6
- import { Route as IndexRouteImport } from './routes/index'
7
-
8
- const IndexRoute = IndexRouteImport.update({
9
- id: '/',
10
- path: '/',
11
- getParentRoute: () => rootRouteImport,
12
- } as any)
13
-
14
- export interface FileRoutesByFullPath {
15
- '/': typeof IndexRoute
16
- }
17
- export interface FileRoutesByTo {
18
- '/': typeof IndexRoute
19
- }
20
- export interface FileRoutesById {
21
- __root__: typeof rootRouteImport
22
- '/': typeof IndexRoute
23
- }
24
- export interface FileRouteTypes {
25
- fileRoutesByFullPath: FileRoutesByFullPath
26
- fullPaths: '/'
27
- fileRoutesByTo: FileRoutesByTo
28
- to: '/'
29
- id: '__root__' | '/'
30
- fileRoutesById: FileRoutesById
31
- }
32
- export interface RootRouteChildren {
33
- IndexRoute: typeof IndexRoute
34
- }
35
-
36
- declare module '@tanstack/react-router' {
37
- interface FileRoutesByPath {
38
- '/': {
39
- id: '/'
40
- path: '/'
41
- fullPath: '/'
42
- preLoaderRoute: typeof IndexRouteImport
43
- parentRoute: typeof rootRouteImport
44
- }
45
- }
46
- }
47
-
48
- const rootRouteChildren: RootRouteChildren = { IndexRoute }
49
- export const routeTree = rootRouteImport
50
- ._addFileChildren(rootRouteChildren)
51
- ._addFileTypes<FileRouteTypes>()
52
-
53
- import type { getRouter } from './router.tsx'
54
- declare module '@tanstack/react-start' {
55
- interface Register {
56
- ssr: true
57
- router: Awaited<ReturnType<typeof getRouter>>
58
- }
59
- }
@@ -1,10 +0,0 @@
1
- import { createRouter } from '@tanstack/react-router'
2
- import { routeTree } from './routeTree.gen'
3
- export function getRouter() {
4
- return createRouter({ routeTree, scrollRestoration: true })
5
- }
6
- declare module '@tanstack/react-router' {
7
- interface Register {
8
- router: ReturnType<typeof getRouter>
9
- }
10
- }
@@ -1,31 +0,0 @@
1
- import {
2
- createRootRoute,
3
- HeadContent,
4
- Outlet,
5
- Scripts,
6
- } from '@tanstack/react-router'
7
- import styles from '../styles.css?url'
8
- export const Route = createRootRoute({
9
- head: () => ({
10
- meta: [
11
- { charSet: 'utf-8' },
12
- { name: 'viewport', content: 'width=device-width, initial-scale=1' },
13
- { title: 'Feedbax' },
14
- ],
15
- links: [{ rel: 'stylesheet', href: styles }],
16
- }),
17
- component: Root,
18
- })
19
- function Root() {
20
- return (
21
- <html lang="en">
22
- <head>
23
- <HeadContent />
24
- </head>
25
- <body>
26
- <Outlet />
27
- <Scripts />
28
- </body>
29
- </html>
30
- )
31
- }
@@ -1,35 +0,0 @@
1
- import { createFileRoute } from '@tanstack/react-router'
2
- export const Route = createFileRoute('/')({ component: Portal })
3
- function Portal() {
4
- return (
5
- <main>
6
- <header>
7
- <strong>Feedbax</strong>
8
- <nav>
9
- <a href="/">Feedback</a>
10
- <a href="/roadmap">Roadmap</a>
11
- <a href="/changelog">Changelog</a>
12
- </nav>
13
- </header>
14
- <section>
15
- <p className="eyebrow">PUBLIC FEEDBACK</p>
16
- <h1>What should we build next?</h1>
17
- <p>
18
- Browse ideas, vote on priorities, and share feedback with the team.
19
- </p>
20
- <button type="button">Submit feedback</button>
21
- </section>
22
- <section aria-label="Feedback">
23
- <div className="toolbar">
24
- <input aria-label="Search feedback" placeholder="Search feedback" />
25
- <select aria-label="Status">
26
- <option>All statuses</option>
27
- </select>
28
- </div>
29
- <p className="empty">
30
- Connect Notion and run <code>feedbax doctor</code> to load your board.
31
- </p>
32
- </section>
33
- </main>
34
- )
35
- }
@@ -1,91 +0,0 @@
1
- @import 'tailwindcss';
2
-
3
- :root {
4
- font-family: Inter, ui-sans-serif, system-ui, sans-serif;
5
- color-scheme: light dark;
6
- --background: #f6f5f1;
7
- --foreground: #171815;
8
- --primary: #315d42;
9
- --border: #d7d7cf;
10
- --radius: 0.65rem;
11
- }
12
- * {
13
- box-sizing: border-box;
14
- }
15
- body {
16
- margin: 0;
17
- background: var(--background);
18
- color: var(--foreground);
19
- }
20
- main {
21
- max-width: 72rem;
22
- margin: auto;
23
- padding: 0 2rem;
24
- }
25
- header {
26
- height: 4.5rem;
27
- display: flex;
28
- align-items: center;
29
- justify-content: space-between;
30
- border-bottom: 1px solid var(--border);
31
- }
32
- nav {
33
- display: flex;
34
- gap: 1.5rem;
35
- }
36
- a {
37
- color: inherit;
38
- text-decoration: none;
39
- }
40
- section {
41
- padding: 5rem 0;
42
- border-bottom: 1px solid var(--border);
43
- }
44
- h1 {
45
- max-width: 14ch;
46
- font-size: clamp(2.8rem, 7vw, 6rem);
47
- line-height: 0.95;
48
- letter-spacing: -0.06em;
49
- margin: 0.4rem 0 1.5rem;
50
- }
51
- .eyebrow {
52
- font-size: 0.75rem;
53
- letter-spacing: 0.18em;
54
- }
55
- .toolbar {
56
- display: flex;
57
- gap: 1rem;
58
- }
59
- input,
60
- select,
61
- button {
62
- font: inherit;
63
- border: 1px solid var(--border);
64
- border-radius: var(--radius);
65
- padding: 0.8rem 1rem;
66
- background: transparent;
67
- }
68
- button {
69
- background: var(--primary);
70
- color: white;
71
- border-color: var(--primary);
72
- }
73
- .empty {
74
- padding: 4rem 0;
75
- color: #666;
76
- }
77
- @media (max-width: 640px) {
78
- main {
79
- padding: 0 1.1rem;
80
- }
81
- nav {
82
- gap: 0.75rem;
83
- font-size: 0.85rem;
84
- }
85
- section {
86
- padding: 3rem 0;
87
- }
88
- .toolbar {
89
- flex-direction: column;
90
- }
91
- }
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "ESNext",
5
- "moduleResolution": "Bundler",
6
- "jsx": "react-jsx",
7
- "strict": true,
8
- "skipLibCheck": true,
9
- "noEmit": true,
10
- "baseUrl": ".",
11
- "paths": { "@/*": ["./src/*"] },
12
- "types": ["vite/client"]
13
- },
14
- "include": ["src", "vite.config.ts"]
15
- }
@@ -1,13 +0,0 @@
1
- import { tanstackStart } from '@tanstack/react-start/plugin/vite'
2
- import react from '@vitejs/plugin-react'
3
- import { nitro } from 'nitro/vite'
4
- import tailwindcss from '@tailwindcss/vite'
5
- import { defineConfig } from 'vite'
6
- export default defineConfig({
7
- plugins: [
8
- tailwindcss(),
9
- tanstackStart(),
10
- nitro({ preset: '__NITRO_PRESET__' }),
11
- react(),
12
- ],
13
- })
@@ -1,13 +0,0 @@
1
- import { defineConfig } from '@feedbax/core'
2
- export default defineConfig({
3
- branding: {
4
- name: 'My Feedback',
5
- description: 'Help us decide what to build next',
6
- },
7
- features: { comments: true, roadmap: true, changelog: true },
8
- statuses: [
9
- { id: 'new', label: 'New' },
10
- { id: 'planned', label: 'Planned' },
11
- { id: 'shipped', label: 'Shipped', terminal: true },
12
- ],
13
- })
@@ -1,11 +0,0 @@
1
- {
2
- "$schema": "https://feedbax.dev/schema/project.json",
3
- "version": 1,
4
- "generatorVersion": "__GENERATOR_VERSION__",
5
- "connector": "notion",
6
- "identity": "__IDENTITY__",
7
- "interactionStore": "notion",
8
- "deployment": "__DEPLOYMENT__",
9
- "packageManager": "__PACKAGE_MANAGER__",
10
- "shadcn": { "preset": "__PRESET__", "workspace": "apps/portal" },
11
- }
@@ -1,3 +0,0 @@
1
- packages:
2
- - apps/*
3
- - packages/*
@@ -1,8 +0,0 @@
1
- {
2
- "$schema": "https://turbo.build/schema.json",
3
- "tasks": {
4
- "build": { "dependsOn": ["^build"], "outputs": ["dist/**", ".output/**"] },
5
- "type-check": { "dependsOn": ["^build"], "outputs": [] },
6
- "dev": { "cache": false, "persistent": true }
7
- }
8
- }