@plutocms/supabase 0.0.1-alpha.1

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 (99) hide show
  1. package/.agents/skills/nuxt/GENERATION.md +5 -0
  2. package/.agents/skills/nuxt/SKILL.md +55 -0
  3. package/.agents/skills/nuxt/references/advanced-hooks.md +289 -0
  4. package/.agents/skills/nuxt/references/advanced-layers.md +299 -0
  5. package/.agents/skills/nuxt/references/advanced-module-authoring.md +554 -0
  6. package/.agents/skills/nuxt/references/best-practices-data-fetching.md +357 -0
  7. package/.agents/skills/nuxt/references/best-practices-ssr.md +355 -0
  8. package/.agents/skills/nuxt/references/core-cli.md +263 -0
  9. package/.agents/skills/nuxt/references/core-config.md +162 -0
  10. package/.agents/skills/nuxt/references/core-data-fetching.md +236 -0
  11. package/.agents/skills/nuxt/references/core-deployment.md +224 -0
  12. package/.agents/skills/nuxt/references/core-directory-structure.md +269 -0
  13. package/.agents/skills/nuxt/references/core-modules.md +292 -0
  14. package/.agents/skills/nuxt/references/core-routing.md +226 -0
  15. package/.agents/skills/nuxt/references/features-components-autoimport.md +328 -0
  16. package/.agents/skills/nuxt/references/features-components.md +264 -0
  17. package/.agents/skills/nuxt/references/features-composables.md +276 -0
  18. package/.agents/skills/nuxt/references/features-server.md +265 -0
  19. package/.agents/skills/nuxt/references/features-state.md +194 -0
  20. package/.agents/skills/nuxt/references/rendering-modes.md +237 -0
  21. package/.agents/skills/nuxt-ui/SKILL.md +334 -0
  22. package/.agents/skills/nuxt-ui/references/components.md +377 -0
  23. package/.agents/skills/nuxt-ui/references/composables.md +127 -0
  24. package/.agents/skills/nuxt-ui/references/layouts/chat.md +195 -0
  25. package/.agents/skills/nuxt-ui/references/layouts/dashboard.md +220 -0
  26. package/.agents/skills/nuxt-ui/references/layouts/docs.md +141 -0
  27. package/.agents/skills/nuxt-ui/references/layouts/editor.md +167 -0
  28. package/.agents/skills/nuxt-ui/references/layouts/page.md +260 -0
  29. package/.agents/skills/nuxt-ui/references/theming.md +427 -0
  30. package/.agents/skills/supabase-postgres-best-practices/AGENTS.md +68 -0
  31. package/.agents/skills/supabase-postgres-best-practices/CLAUDE.md +1 -0
  32. package/.agents/skills/supabase-postgres-best-practices/README.md +116 -0
  33. package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
  34. package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  35. package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  36. package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  37. package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  38. package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  39. package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  40. package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  41. package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  42. package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  43. package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  44. package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  45. package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  46. package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  47. package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  48. package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  49. package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  50. package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  51. package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  52. package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  53. package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  54. package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  55. package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  56. package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  57. package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  58. package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  59. package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  60. package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  61. package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  62. package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  63. package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  64. package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
  65. package/.editorconfig +12 -0
  66. package/.env.example +2 -0
  67. package/.eslintignore +1 -0
  68. package/.prettierrc +9 -0
  69. package/.vscode/extensions.json +10 -0
  70. package/.vscode/settings.json +61 -0
  71. package/README.md +62 -0
  72. package/app/components/navbar/NavbarAdmin.vue +169 -0
  73. package/app/composables/auth.ts +81 -0
  74. package/app/layouts/setup.vue +13 -0
  75. package/app/middleware/auth.ts +27 -0
  76. package/app/middleware/setup-check.ts +25 -0
  77. package/app/pages/admin/(auth)/login.vue +84 -0
  78. package/app/pages/admin/(auth)/signup.vue +128 -0
  79. package/app/pages/admin/settings.vue +116 -0
  80. package/app/pages/admin/setup.vue +300 -0
  81. package/app/pages/admin.vue +38 -0
  82. package/bun.lock +2685 -0
  83. package/eslint.config.mjs +88 -0
  84. package/nuxt.config.ts +55 -0
  85. package/package.json +44 -0
  86. package/public/schema.sql +103 -0
  87. package/scripts/supabase-typegen.ts +36 -0
  88. package/server/api/category/list.get.ts +9 -0
  89. package/server/api/category/new.post.ts +31 -0
  90. package/server/api/settings/first_setup.get.ts +39 -0
  91. package/server/api/settings/index.get.ts +27 -0
  92. package/server/api/settings/update.post.ts +36 -0
  93. package/server/api/setup/create.post.ts +58 -0
  94. package/server/api/signup.post.ts +28 -0
  95. package/server/api/users/[id].get.ts +21 -0
  96. package/server/api/users/index.get.ts +16 -0
  97. package/shared/types/supabase.ts +406 -0
  98. package/skills-lock.json +20 -0
  99. package/tsconfig.json +18 -0
@@ -0,0 +1,406 @@
1
+ export type Json =
2
+ | string
3
+ | number
4
+ | boolean
5
+ | null
6
+ | { [key: string]: Json | undefined }
7
+ | Json[]
8
+
9
+ export type Database = {
10
+ // Allows to automatically instantiate createClient with right options
11
+ // instead of createClient<Database, { PostgrestVersion: 'XX' }>(URL, KEY)
12
+ __InternalSupabase: {
13
+ PostgrestVersion: "12.2.12 (cd3cf9e)"
14
+ }
15
+ public: {
16
+ Tables: {
17
+ availability: {
18
+ Row: {
19
+ created_at: string
20
+ id: number
21
+ label: string | null
22
+ slug: string | null
23
+ }
24
+ Insert: {
25
+ created_at?: string
26
+ id?: number
27
+ label?: string | null
28
+ slug?: string | null
29
+ }
30
+ Update: {
31
+ created_at?: string
32
+ id?: number
33
+ label?: string | null
34
+ slug?: string | null
35
+ }
36
+ Relationships: []
37
+ }
38
+ categories: {
39
+ Row: {
40
+ description: string | null
41
+ id: number
42
+ label: string
43
+ slug: string
44
+ }
45
+ Insert: {
46
+ description?: string | null
47
+ id?: number
48
+ label: string
49
+ slug: string
50
+ }
51
+ Update: {
52
+ description?: string | null
53
+ id?: number
54
+ label?: string
55
+ slug?: string
56
+ }
57
+ Relationships: []
58
+ }
59
+ healthcheck: {
60
+ Row: {
61
+ config_name: Database["public"]["Enums"]["Healthcheck"]
62
+ config_value: string | null
63
+ id: number
64
+ }
65
+ Insert: {
66
+ config_name: Database["public"]["Enums"]["Healthcheck"]
67
+ config_value?: string | null
68
+ id?: number
69
+ }
70
+ Update: {
71
+ config_name?: Database["public"]["Enums"]["Healthcheck"]
72
+ config_value?: string | null
73
+ id?: number
74
+ }
75
+ Relationships: []
76
+ }
77
+ media: {
78
+ Row: {
79
+ alt: string | null
80
+ created_at: string
81
+ id: number
82
+ name: string | null
83
+ product_id: number | null
84
+ }
85
+ Insert: {
86
+ alt?: string | null
87
+ created_at?: string
88
+ id?: number
89
+ name?: string | null
90
+ product_id?: number | null
91
+ }
92
+ Update: {
93
+ alt?: string | null
94
+ created_at?: string
95
+ id?: number
96
+ name?: string | null
97
+ product_id?: number | null
98
+ }
99
+ Relationships: [
100
+ {
101
+ foreignKeyName: "media_product_id_fkey"
102
+ columns: ["product_id"]
103
+ isOneToOne: false
104
+ referencedRelation: "products"
105
+ referencedColumns: ["id"]
106
+ },
107
+ ]
108
+ }
109
+ posts: {
110
+ Row: {
111
+ author_id: string
112
+ content: string | null
113
+ created_at: string
114
+ deleted_at: string | null
115
+ excerpt: string | null
116
+ id: number
117
+ is_draft: boolean | null
118
+ published_at: string | null
119
+ slug: string
120
+ title: string | null
121
+ updated_at: string | null
122
+ }
123
+ Insert: {
124
+ author_id: string
125
+ content?: string | null
126
+ created_at?: string
127
+ deleted_at?: string | null
128
+ excerpt?: string | null
129
+ id?: number
130
+ is_draft?: boolean | null
131
+ published_at?: string | null
132
+ slug: string
133
+ title?: string | null
134
+ updated_at?: string | null
135
+ }
136
+ Update: {
137
+ author_id?: string
138
+ content?: string | null
139
+ created_at?: string
140
+ deleted_at?: string | null
141
+ excerpt?: string | null
142
+ id?: number
143
+ is_draft?: boolean | null
144
+ published_at?: string | null
145
+ slug?: string
146
+ title?: string | null
147
+ updated_at?: string | null
148
+ }
149
+ Relationships: [
150
+ {
151
+ foreignKeyName: "posts_author_id_fkey"
152
+ columns: ["author_id"]
153
+ isOneToOne: true
154
+ referencedRelation: "profiles"
155
+ referencedColumns: ["id"]
156
+ },
157
+ ]
158
+ }
159
+ products: {
160
+ Row: {
161
+ availability: number | null
162
+ category: number | null
163
+ created_at: string
164
+ description: string | null
165
+ id: number
166
+ is_custom: boolean
167
+ name: string
168
+ price: number
169
+ slug: string
170
+ stock_quantity: number | null
171
+ }
172
+ Insert: {
173
+ availability?: number | null
174
+ category?: number | null
175
+ created_at: string
176
+ description?: string | null
177
+ id?: number
178
+ is_custom?: boolean
179
+ name: string
180
+ price: number
181
+ slug: string
182
+ stock_quantity?: number | null
183
+ }
184
+ Update: {
185
+ availability?: number | null
186
+ category?: number | null
187
+ created_at?: string
188
+ description?: string | null
189
+ id?: number
190
+ is_custom?: boolean
191
+ name?: string
192
+ price?: number
193
+ slug?: string
194
+ stock_quantity?: number | null
195
+ }
196
+ Relationships: [
197
+ {
198
+ foreignKeyName: "products_availability_fkey"
199
+ columns: ["availability"]
200
+ isOneToOne: false
201
+ referencedRelation: "availability"
202
+ referencedColumns: ["id"]
203
+ },
204
+ {
205
+ foreignKeyName: "products_category_fkey"
206
+ columns: ["category"]
207
+ isOneToOne: false
208
+ referencedRelation: "categories"
209
+ referencedColumns: ["id"]
210
+ },
211
+ ]
212
+ }
213
+ profiles: {
214
+ Row: {
215
+ first_name: string | null
216
+ id: string
217
+ is_admin: boolean | null
218
+ last_name: string | null
219
+ }
220
+ Insert: {
221
+ first_name?: string | null
222
+ id: string
223
+ is_admin?: boolean | null
224
+ last_name?: string | null
225
+ }
226
+ Update: {
227
+ first_name?: string | null
228
+ id?: string
229
+ is_admin?: boolean | null
230
+ last_name?: string | null
231
+ }
232
+ Relationships: []
233
+ }
234
+ settings: {
235
+ Row: {
236
+ id: number
237
+ setting_name: Database["public"]["Enums"]["Settings"]
238
+ setting_value: string
239
+ }
240
+ Insert: {
241
+ id?: number
242
+ setting_name: Database["public"]["Enums"]["Settings"]
243
+ setting_value: string
244
+ }
245
+ Update: {
246
+ id?: number
247
+ setting_name?: Database["public"]["Enums"]["Settings"]
248
+ setting_value?: string
249
+ }
250
+ Relationships: []
251
+ }
252
+ }
253
+ Views: {
254
+ [_ in never]: never
255
+ }
256
+ Functions: {
257
+ [_ in never]: never
258
+ }
259
+ Enums: {
260
+ Availability: "preorder" | "in_stock"
261
+ Healthcheck: "first_setup"
262
+ Settings:
263
+ | "admin_email"
264
+ | "website_description"
265
+ | "website_title"
266
+ | "website_url"
267
+ | "users_can_register"
268
+ }
269
+ CompositeTypes: {
270
+ [_ in never]: never
271
+ }
272
+ }
273
+ }
274
+
275
+ type DatabaseWithoutInternals = Omit<Database, "__InternalSupabase">
276
+
277
+ type DefaultSchema = DatabaseWithoutInternals[Extract<keyof Database, "public">]
278
+
279
+ export type Tables<
280
+ DefaultSchemaTableNameOrOptions extends
281
+ | keyof (DefaultSchema["Tables"] & DefaultSchema["Views"])
282
+ | { schema: keyof DatabaseWithoutInternals },
283
+ TableName extends DefaultSchemaTableNameOrOptions extends {
284
+ schema: keyof DatabaseWithoutInternals
285
+ }
286
+ ? keyof (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
287
+ DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])
288
+ : never = never,
289
+ > = DefaultSchemaTableNameOrOptions extends {
290
+ schema: keyof DatabaseWithoutInternals
291
+ }
292
+ ? (DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
293
+ DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends {
294
+ Row: infer R
295
+ }
296
+ ? R
297
+ : never
298
+ : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] &
299
+ DefaultSchema["Views"])
300
+ ? (DefaultSchema["Tables"] &
301
+ DefaultSchema["Views"])[DefaultSchemaTableNameOrOptions] extends {
302
+ Row: infer R
303
+ }
304
+ ? R
305
+ : never
306
+ : never
307
+
308
+ export type TablesInsert<
309
+ DefaultSchemaTableNameOrOptions extends
310
+ | keyof DefaultSchema["Tables"]
311
+ | { schema: keyof DatabaseWithoutInternals },
312
+ TableName extends DefaultSchemaTableNameOrOptions extends {
313
+ schema: keyof DatabaseWithoutInternals
314
+ }
315
+ ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
316
+ : never = never,
317
+ > = DefaultSchemaTableNameOrOptions extends {
318
+ schema: keyof DatabaseWithoutInternals
319
+ }
320
+ ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
321
+ Insert: infer I
322
+ }
323
+ ? I
324
+ : never
325
+ : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
326
+ ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
327
+ Insert: infer I
328
+ }
329
+ ? I
330
+ : never
331
+ : never
332
+
333
+ export type TablesUpdate<
334
+ DefaultSchemaTableNameOrOptions extends
335
+ | keyof DefaultSchema["Tables"]
336
+ | { schema: keyof DatabaseWithoutInternals },
337
+ TableName extends DefaultSchemaTableNameOrOptions extends {
338
+ schema: keyof DatabaseWithoutInternals
339
+ }
340
+ ? keyof DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
341
+ : never = never,
342
+ > = DefaultSchemaTableNameOrOptions extends {
343
+ schema: keyof DatabaseWithoutInternals
344
+ }
345
+ ? DatabaseWithoutInternals[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
346
+ Update: infer U
347
+ }
348
+ ? U
349
+ : never
350
+ : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
351
+ ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
352
+ Update: infer U
353
+ }
354
+ ? U
355
+ : never
356
+ : never
357
+
358
+ export type Enums<
359
+ DefaultSchemaEnumNameOrOptions extends
360
+ | keyof DefaultSchema["Enums"]
361
+ | { schema: keyof DatabaseWithoutInternals },
362
+ EnumName extends DefaultSchemaEnumNameOrOptions extends {
363
+ schema: keyof DatabaseWithoutInternals
364
+ }
365
+ ? keyof DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"]
366
+ : never = never,
367
+ > = DefaultSchemaEnumNameOrOptions extends {
368
+ schema: keyof DatabaseWithoutInternals
369
+ }
370
+ ? DatabaseWithoutInternals[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName]
371
+ : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"]
372
+ ? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions]
373
+ : never
374
+
375
+ export type CompositeTypes<
376
+ PublicCompositeTypeNameOrOptions extends
377
+ | keyof DefaultSchema["CompositeTypes"]
378
+ | { schema: keyof DatabaseWithoutInternals },
379
+ CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
380
+ schema: keyof DatabaseWithoutInternals
381
+ }
382
+ ? keyof DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"]
383
+ : never = never,
384
+ > = PublicCompositeTypeNameOrOptions extends {
385
+ schema: keyof DatabaseWithoutInternals
386
+ }
387
+ ? DatabaseWithoutInternals[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName]
388
+ : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"]
389
+ ? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions]
390
+ : never
391
+
392
+ export const Constants = {
393
+ public: {
394
+ Enums: {
395
+ Availability: ["preorder", "in_stock"],
396
+ Healthcheck: ["first_setup"],
397
+ Settings: [
398
+ "admin_email",
399
+ "website_description",
400
+ "website_title",
401
+ "website_url",
402
+ "users_can_register",
403
+ ],
404
+ },
405
+ },
406
+ } as const
@@ -0,0 +1,20 @@
1
+ {
2
+ "version": 1,
3
+ "skills": {
4
+ "nuxt": {
5
+ "source": "antfu/skills",
6
+ "sourceType": "github",
7
+ "computedHash": "9e8237ec92083db9a6f4c77d5e5bf4b1d9873d670671235bc75455ee1ca39c74"
8
+ },
9
+ "nuxt-ui": {
10
+ "source": "nuxt/ui",
11
+ "sourceType": "github",
12
+ "computedHash": "51e570e2bfd4b74752a40ea0a102c9d186bfe3afbb8c34a51cb83e46195243d0"
13
+ },
14
+ "supabase-postgres-best-practices": {
15
+ "source": "supabase/agent-skills",
16
+ "sourceType": "github",
17
+ "computedHash": "aa2937f90818577991093fad010501252d6de56a20e9603ac50b39b7a39b430e"
18
+ }
19
+ }
20
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "references": [
3
+ {
4
+ "path": "./.nuxt/tsconfig.app.json"
5
+ },
6
+ {
7
+ "path": "./.nuxt/tsconfig.server.json"
8
+ },
9
+ {
10
+ "path": "./.nuxt/tsconfig.shared.json"
11
+ },
12
+ {
13
+ "path": "./.nuxt/tsconfig.node.json"
14
+ }
15
+ ],
16
+ // https://nuxt.com/docs/guide/concepts/typescript
17
+ "files": []
18
+ }