diff --git a/build-doc.md b/build-doc.md
index 76269d3..b0c58d7 100644
--- a/build-doc.md
+++ b/build-doc.md
@@ -23,6 +23,42 @@ Example Image
+
+
+
+
+
+Can we please now integrate an image upload function for the example images?
+
+
+
+There appears to be an issue with the folder drag and drop functionality. Whenever i try to drag a folder into another folder, it gives me the error:
+
+
+
+
+
+
+Can we please add a basic homepage that includes a hero section along with a list of the app/websites features. It should also include a signup and login button.
+
+Can we please modify the preview image field for prompts to allow the inclusion of a video. If a video URL is detected, it should be viewable within a video player on the page.
+
+Can we please create a bulk import/submit function that is not the JSON import function. I would like you to create a new page which allows users to quickly add multiple different prompts.
+
+Could you please implement a 'NSFW' tag function. This should be separate to the existing tag functionality and allow users to tag prompts as NSFW.
+
+The tag system on the prompt submit page is not working correctly. Users don't seem to be able to add new tags via the submit page. The search functionality for existing tags is also not working.
+
+When toggling the 'NSFW' option on a prompt page, the page no longer loads. I have attached the browser console error log to help you debug.
+
+Can we please add a new field for the prompts? I would like you to add a field for 'Image Generation Parameters'.
+
+Could we please change the 'prompt' field for prompts to say 'Positive Prompt', and add another field in the same format underneath called 'Negative Prompt'.
+
+
+It seems that the JSON overview in the version history modal is using a light theme. Please can you change it to match the syntax theme used elsewhere.
+
+
Can we now please implement a favorites function for prompts so that users can add, edit and delete favorites.
Can we change the signup process so that email confirmation is no longer required, but all signups have to be approved by an admin.
Can we please add a user import and export function, so that users can export their entire library as a JSON file? They should also be able to import this JSON file.
@@ -34,6 +70,106 @@ Can you please change the syntax theme for the workflow area to use the Dracula
+Can we please now integrate the following icon library: https://github.com/lobehub/lobe-icons
+
+I would like these icons to be assignable to the 'platforms' in the admin area. They should also show next to the prompts in the prompt list.
+
+
+
+
+
+
+Here are thoughtful, user-facing feature ideas, organized by theme, with quick notes on value, UX, and any important considerations.
+
+Discovery and sharing
+
+Public share links: Let users share read-only prompt pages externally. Add an explicit “Make public” toggle per prompt with a clear indicator in lists. Be cautious: this requires a separate public visibility flag and carefully scoped read policies.
+Collections: Curated sets of prompts users can assemble and share (e.g., “Image prompts for Marketing”). Useful for onboarding teammates or publishing guides.
+Recommended and trending: Surface recently popular prompts and personalized recommendations based on tags/favorites.
+Organization and navigation
+
+Saved filter presets (“Views”): Allow users to save common filter combinations (e.g., “Design prompts this quarter”) and access them from the sidebar.
+Smart folders: Dynamic folders defined by rules (tag + type + date range). They auto-populate without manual moving.
+Recently viewed: Quick access to the last N prompts for faster return.
+Bulk actions: Multi-select prompts to move folders, add/remove tags, or favorite/unfavorite.
+Authoring and quality
+
+Prompt versioning: Track changes with a diff viewer and the ability to roll back. Useful when iterating on content and workflows.
+Prompt variants: A single prompt with model-specific variations (e.g., “Claude version,” “GPT version”) under one parent, so users don’t duplicate context.
+Templates and blocks: Reusable prompt snippets or macros users can insert while authoring; improves speed and consistency.
+Workflow validation: Optional JSON schema validation for workflows with clear error messages; improves trust in shared workflows.
+Tagging and taxonomy
+
+Tag synonyms and aliases: Consolidate near-duplicate tags to keep filtering clean (e.g., “marketing” and “mktg”).
+Tag weights guidance: Lightweight helper that suggests weights based on usage history. Keeps tagging consistent across the team.
+Tag cleanup tools: Merge tags, rename, and deprecate with redirects, especially useful for admins.
+Favorites and engagement
+
+Ratings: 1–5 star rating on prompts to quickly surface quality. Combine with filters to find best-rated content.
+Comments and notes: Threaded discussions or personal notes on prompts for context, tips, and improvements.
+Bookmark folders: Allow favoriting folders separately from pinning, with distinct styling and sorting.
+Collaboration and access
+
+Team spaces: Shared workspaces with role-based access (viewer, editor, admin). Keep personal and team scopes separate but easy to switch.
+Sharing with individuals: Invite specific users to a prompt or folder with explicit permissions (view/edit).
+Approval flows: Optional review step before a prompt is published to a shared collection.
+Productivity and integrations
+
+Keyboard shortcuts: Global shortcuts for search, submit, favorite, and move actions to speed up power users.
+Import improvements: Bulk import with validation feedback and a dry-run preview; supports CSV, JSON.
+Export packs: Export collections or folders with assets and workflows bundled for easy sharing or backup.
+External integrations: Webhook or edge-function-based integrations to sync prompts with other tools (e.g., design systems, docs, or prompt runners).
+Insights and analytics
+
+Usage stats: Views, favorites, ratings, and recent activity on prompts and folders. Great for understanding what’s working.
+Search analytics: See top search queries and zero-result searches to identify gaps and improve tagging.
+Author dashboards: Personal stats for contributors—submissions, favorites received, ratings, and impact over time.
+UX polish
+
+Inline editing: Quick edits for titles, tags, and folder assignment directly from the list view.
+Empty state helpers: Guided content when lists are empty, with suggested actions (e.g., “Submit your first prompt”).
+Draft autosave: Preserve form state if users navigate away; reduces frustration on long submissions.
+Mobile optimizations: Focused layouts for small screens—sticky actions and simplified filter toggles.
+Admin and governance
+
+Moderation tools: Flag prompts for review, hide or archive content, and tag deprecation workflows.
+Audit log: Track who edited what and when, useful in team environments.
+Policy presets: Admin UI for managing who can create tags/categories/platforms (with clear RLS-aware messaging).
+Prioritization guide
+
+Quick wins:
+Saved filter presets (“Views”) in the sidebar
+Recently viewed
+Keyboard shortcuts
+Inline editing for common fields
+Medium effort:
+Collections
+Ratings
+Bulk actions
+Draft autosave
+Larger investments:
+Prompt versioning with diff
+Team spaces and invite-based sharing
+Smart folders
+Workflow validation with schema
+Security and data considerations
+
+For any new tables (ratings, comments, collections, shares), keep Row Level Security enabled with user-scoped policies.
+For public sharing, use a dedicated visibility flag and carefully constrained read policies; avoid accidental exposure.
+Maintain principle of least privilege and explicit opt-ins for anything public or shared beyond the owner.
+If you share which audience you’re prioritizing (solo creators, small teams, or larger orgs) and the biggest pain points today (finding, authoring, sharing), I can turn this into a focused roadmap with staged milestones.
+
+
+
+
+
+
+
+
+
+
+
+
Prompt version history: Track edits with timestamps, authors, and a “restore” option; show side-by-side diffs for content changes.
@@ -51,3 +187,69 @@ Import/export: JSON/CSV import wizard with validation; one-click export of selec
Admin tooling: Moderation queue for public prompts, abuse reports, soft delete/restore, and audit logs.
Notifications: Toasts plus optional in-app notifications for favorites, comments, shares, and edits on watched prompts.
Profile upgrades: Avatars, bio, social links; “My contributions” page with stats and badges.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Here are practical, high‑impact feature ideas tailored to your app. I grouped them by effort and described how you’d approach them with Supabase, React Router, and shadcn/ui, plus key considerations for UX, data, and RLS.
+
+Quick wins (fast to ship)
+
+Command palette and keyboard shortcuts: A global action launcher to jump to pages, search prompts/tags, and run actions like “Move to folder” or “Favorite.” Use the Command component, focus on accessibility and fuzzy matching.
+Saved filters and views: Let users save common filter sets (tags, platform, category, favorites, date range) and pin them in the sidebar. Persist per user with RLS so only owners see their saved views.
+Duplicate detection: Flag near‑duplicates using normalized content hashes (and optionally a similarity threshold). Show merge suggestions with a diff preview.
+Inline editing on list cards: Edit title, tags, folder, and pin status directly on prompt cards with optimistic updates and robust error toasts.
+Pinned prompts and tags: You already have pinned folders; extend pinning to prompts and tags and surface them in the sidebar and “Quick access” section.
+Core upgrades (medium effort, strong value)
+
+Version history with diffs: Track every prompt edit with timestamps, actor, and change set. Provide “restore version” and a side‑by‑side diff view for title/content/workflow. Add soft delete + restore for safety.
+Ratings and threaded comments: Star ratings and comments per prompt with mentions and notifications. Moderate via admin roles already present in profiles.
+Sharing and team spaces: Visibility controls (private, shared, public links). Team folders with role‑based access (viewer/editor/admin). Carefully design RLS policies for collaborative scenarios.
+Prompt templates with variables: Define prompts with {{placeholders}}, provide a fill‑in form, preview the rendered prompt, and save variable presets. Store variable schemas and instances; validate required fields.
+Playground + run logs: Test prompts against selected models and parameters, save “runs” with outputs and metadata, and link them to prompts. Use an edge function to call external APIs securely and log usage.
+Discovery and search (medium to advanced)
+
+Semantic search with embeddings: Add vector embeddings for prompt content and enable semantic search, “similar prompts,” and tag suggestion. Combine full‑text + vector search; paginate results efficiently.
+Tag taxonomy and synonyms: Curate tag groups (e.g., “image generation”/synonyms) and offer suggestions to normalize tags; show canonical tags and alternate labels on TagDetails pages.
+Collections and bundles: Curated sets of prompts (e.g., “Onboarding Pack,” “Marketing Toolkit”) with descriptions. Shareable and optionally versioned.
+Organization and workflows
+
+Smart folders (rule‑based): Auto‑populate folders based on rules (e.g., tag contains X, platform=Y, recently edited). Allow manual overrides and show rule provenance per item.
+Bulk actions: Multi‑select to tag, move, favorite/unfavorite, pin/unpin, and export. Emphasize clear selection state and undo toasts.
+Approvals and publishing flow: Draft → Review → Published lifecycle for public/shared prompts. Queue, assignments, and activity feed; enforce transitions via policies.
+Analytics and insights
+
+Dashboard: Favorites, ratings, views, edits, top tags, most active folders, and trendlines. Per‑user and team breakdowns with time filters.
+Prompt quality score: Heuristics combining length, clarity, structure, and usage outcomes (from run logs). Surface suggestions to improve prompts.
+Admin and safety
+
+Moderation queue: Flags, abuse reports, and admin actions with audit logs. Soft deletes, restores, and ban lists for public content.
+Audit log and activity feed: Track key actions (create/edit/delete, share, tag changes, folder moves). Expose filters and per‑item history.
+Integrations and automation
+
+Slack/Discord notifications: Notify on favorites, comments, approvals, and shares. Configure per user/team; send via edge functions with secret tokens.
+Notion/Docs export: Export selected prompts into documentation pages with structured sections. Schedule periodic exports and diff changes.
+Webhooks: Outbound webhooks for prompt events to integrate with other systems; secure via signed requests and retry logic.
+Quality and validation
+
+Prompt linter and guidelines: Validate structure (sections, placeholders, tone), estimate token count, and warn on common pitfalls. Provide a “fix suggestions” panel.
+Structured metadata validation: Enforce required fields and acceptable ranges for platform/model/usage, with clear inline feedback.
+Performance and UX polish
+
+Virtualized lists: Speed up large prompt lists, folders, and tag pages while preserving keyboard accessibility.
+Offline‑friendly editing: Cache drafts locally, warn before navigating away, and sync when back online.
+Theming and customization: Theme switcher with saved preference, custom accent colors, and per‑team branding.
diff --git a/features.md b/features.md
new file mode 100644
index 0000000..ceca1c9
--- /dev/null
+++ b/features.md
@@ -0,0 +1,125 @@
+Here’s a concise, user-focused feature summary:
+
+Organize prompts
+
+Create nested folders and pin favorites for quick access in the sidebar
+Drag-and-drop prompts into folders or use “Move to…” for precise placement
+Clear a prompt’s folder by dropping it on “Root”
+Tagging and metadata
+
+Add weighted tags for better relevance and filtering
+Browse tags, categories, and platforms to discover content
+Smooth tag picker with overlay suggestions (doesn’t break the layout)
+Powerful filtering
+
+Filter by search, type, tags, folder, category, platform, favorites-only, has image, and date range
+“Clear all” to reset filters in one click
+Prompt details
+
+Structured workflow viewer with line numbers
+Download workflow as a JSON file
+View example images and metadata at a glance
+Favorites
+
+Toggle hearts to favorite prompts, add notes, and manage your list
+Move a favorite’s underlying prompt to another folder directly
+Submission
+
+Prominent “Submit” button in the sidebar
+Create new prompts with weighted tags and get redirected to the new entry
+Navigation and UX
+
+Favorite folders section under primary nav, separated by a divider
+Expand/collapse folder tree for clarity
+Consistent, responsive interface throughout the app
+Optional (for admins)
+
+Manage global categories and platforms for everyone’s use
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Here’s a clear, high-level summary of the app and its features.
+
+What the app is
+
+A React + TypeScript application for organizing, authoring, and sharing AI prompts with structured metadata and workflows.
+Uses Supabase for authentication, database, and secure policies.
+Built with shadcn/ui and Tailwind CSS for a consistent, accessible UI.
+Core entities and data model
+
+Prompts: Include title, content, type, tags, workflow, platform/model, category, example image, and folder assignment.
+Folders: Nested hierarchy for organizing prompts; supports pinning (used as “favorites” for quick access).
+Tags: User-scoped tags; prompts can have weighted tags for better filtering and relevance.
+Favorites: User-scoped list of favorite prompts, optionally with notes.
+Categories and Platforms: Global taxonomies, managed by admins.
+Profiles: Per-user profile with optional admin flag.
+Navigation and structure
+
+Sidebar: Primary navigation plus a prominent “Submit” button at the top.
+Favorite Folders section: Pinned folders appear below primary links, separated by a horizontal rule for quick filtering.
+Routes: Prompts list, Prompt detail, Favorites, Folders, Tags and Tag details, Admin dashboard, Submit prompt, Import/Export, Login, and Not Found.
+Authentication and security
+
+Supabase authentication with session management and protected routes.
+Row Level Security on all tables: users can only access their own data (folders, favorites, prompt-tag links); admins have elevated access for global entities.
+Profile auto-creation on signup and admin-aware policies for prompts, categories, and platforms.
+Key features and workflows
+
+Prompt listing and filtering:
+Rich filters: search, type, tags, folder, category, platform, favorites-only, has-image-only, and date range.
+“Clear all” capability to reset all filters.
+Tag filter UX refined: collapses when not focused and shows suggestions as an overlay dropdown (prevents layout break).
+Prompt detail:
+Clean layout with overflow fixes.
+Workflow section displayed in a JSON-styled code block with line numbers.
+“Download workflow” button to export the workflow as a JSON file (valid even if the original text isn’t strictly JSON).
+Tagging:
+TagPicker with overlay suggestions; supports weighted tags on submission.
+Dedicated Tags page and per-tag detail view.
+Folders:
+Nested tree with expand/collapse controls; defaults to expanded for visibility.
+Pin/Unpin (favorites) and pinned-first sorting in lists.
+Drag-and-drop moving: prompts can be dropped into folders via a dock, including a “Root” zone to clear folder assignment.
+“Move to…” action on prompt cards and Favorites for precise folder changes.
+Favorites:
+Full favorites management: toggle hearts, add notes, delete favorites.
+Can move a favorite’s underlying prompt to a different folder directly from the Favorites page.
+Submission:
+Submit Prompt page for creating new prompts; saves weighted tags and navigates to the new prompt on success.
+Prominent “Submit” button in the sidebar for quick access.
+Admin tools:
+Admin-only management of categories, platforms, and tags.
+Admin privileges allow broader prompt visibility and edits per secure policies.
+Import/Export:
+Page for data portability, enabling backup/restore workflows.
+User experience highlights
+
+Consistent, accessible components via shadcn/ui and Radix.
+Tailwind CSS for responsive design and visual consistency.
+Pinned folders presented as “Favorite Folders” for quick navigation.
+Layout resilience: tag suggestions overlay fixes prevent filter grid from breaking.
+Under the hood
+
+React Router handles routes; pages live in src/pages and components in src/components.
+Supabase operations keep UI fresh via refetch/invalidation after changes (e.g., moving prompts).
+Profiles and RLS policies ensure data isolation, with admin exceptions where appropriate.
+If you’d like, I can tailor this summary to a product page version (marketing-style), a technical architecture overview, or a quick-start guide for new users on your team.
diff --git a/logs/console-export-2026-1-4_20-42-0.txt b/logs/console-export-2026-1-4_20-42-0.txt
new file mode 100644
index 0000000..e934f7f
--- /dev/null
+++ b/logs/console-export-2026-1-4_20-42-0.txt
@@ -0,0 +1,8 @@
+GET
+http://localhost:32100/src/globals.css
+NS_ERROR_CORRUPTED_CONTENT
+
+[vite] connecting... client:789:9
+Loading module from “http://localhost:32100/src/globals.css” was blocked because of a disallowed MIME type (“”). localhost:32100
+Loading failed for the module with source “http://localhost:32100/src/globals.css”. main.tsx
+[vite] connected. client:912:15
diff --git a/logs/console-export-2026-1-7_19-39-35.txt b/logs/console-export-2026-1-7_19-39-35.txt
new file mode 100644
index 0000000..f8ef633
--- /dev/null
+++ b/logs/console-export-2026-1-7_19-39-35.txt
@@ -0,0 +1,24 @@
+ReferenceError: props is not defined
+ Ju https://promptlib.og.codes/assets/index-VTOC2fPQ.js:312
+ jf https://promptlib.og.codes/assets/index-VTOC2fPQ.js:38
+ _y https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ wy https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ F2 https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ Zc https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ eh https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ my https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ $ https://promptlib.og.codes/assets/index-VTOC2fPQ.js:25
+ z https://promptlib.og.codes/assets/index-VTOC2fPQ.js:25
+index-VTOC2fPQ.js:40:161
+Uncaught ReferenceError: props is not defined
+ Ju https://promptlib.og.codes/assets/index-VTOC2fPQ.js:312
+ jf https://promptlib.og.codes/assets/index-VTOC2fPQ.js:38
+ _y https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ wy https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ F2 https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ Zc https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ eh https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ my https://promptlib.og.codes/assets/index-VTOC2fPQ.js:40
+ $ https://promptlib.og.codes/assets/index-VTOC2fPQ.js:25
+ z https://promptlib.og.codes/assets/index-VTOC2fPQ.js:25
+index-VTOC2fPQ.js:312:3263
diff --git a/logs/console-export-2026-1-7_22-51-10.txt b/logs/console-export-2026-1-7_22-51-10.txt
new file mode 100644
index 0000000..98119c0
--- /dev/null
+++ b/logs/console-export-2026-1-7_22-51-10.txt
@@ -0,0 +1,74 @@
+Layout was forced before the page was fully loaded. If stylesheets are not yet loaded this may cause a flash of unstyled content. node.js:409:1
+Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}. index-Plwaehl0.js:334:497
+Error: A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.
+ TS https://promptlib.og.codes/assets/index-Plwaehl0.js:330
+ Th https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ u0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ W0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ M0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ VC https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ zu https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ tp https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ D0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ qs https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ Lr https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ Lr https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ Rn https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ RC https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ D https://promptlib.og.codes/assets/index-Plwaehl0.js:368
+ onClick https://promptlib.og.codes/assets/index-Plwaehl0.js:368
+ n https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ Vn https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ pk https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ mk https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ dy https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ fy https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ nh https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ np https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ Tr https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ nh https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ Mf https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ Pk https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ hy https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ rh https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ ml https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ ml https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ createRoot https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ https://promptlib.og.codes/assets/index-Plwaehl0.js:382
+index-Plwaehl0.js:40:161
+Uncaught Error: A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.
+ TS https://promptlib.og.codes/assets/index-Plwaehl0.js:330
+ Th https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ u0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ W0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ M0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ VC https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ zu https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ tp https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ D0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ qs https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ Lr https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ Lr https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ Rn https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ RC https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ D https://promptlib.og.codes/assets/index-Plwaehl0.js:368
+ onClick https://promptlib.og.codes/assets/index-Plwaehl0.js:368
+ n https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ Vn https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ pk https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ mk https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ dy https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ fy https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ nh https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ np https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ Tr https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ nh https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ Mf https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ Pk https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ hy https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ rh https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ ml https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ ml https://promptlib.og.codes/assets/index-Plwaehl0.js:37
+ createRoot https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ https://promptlib.og.codes/assets/index-Plwaehl0.js:382
+index-Plwaehl0.js:330:15272
diff --git a/logs/console-export-2026-1-7_22-52-25.txt b/logs/console-export-2026-1-7_22-52-25.txt
new file mode 100644
index 0000000..c204798
--- /dev/null
+++ b/logs/console-export-2026-1-7_22-52-25.txt
@@ -0,0 +1,26 @@
+ReferenceError: AlertTriangle is not defined
+ i9 https://promptlib.og.codes/assets/index-Plwaehl0.js:362
+ Th https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ Mh https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ W0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ M0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ VC https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ zu https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ tp https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ D0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ qs https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ Lr https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+index-Plwaehl0.js:40:161
+Uncaught ReferenceError: AlertTriangle is not defined
+ i9 https://promptlib.og.codes/assets/index-Plwaehl0.js:362
+ Th https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ Mh https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ W0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ M0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ VC https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ zu https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ tp https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ D0 https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+ qs https://promptlib.og.codes/assets/index-Plwaehl0.js:38
+ Lr https://promptlib.og.codes/assets/index-Plwaehl0.js:40
+index-Plwaehl0.js:362:6582
diff --git a/logs/console-export-2026-1-7_22-59-26.txt b/logs/console-export-2026-1-7_22-59-26.txt
new file mode 100644
index 0000000..f394714
--- /dev/null
+++ b/logs/console-export-2026-1-7_22-59-26.txt
@@ -0,0 +1,27 @@
+Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}. index-YNBdzDgJ.js:334:497
+Error: A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.
+ RS https://promptlib.og.codes/assets/index-YNBdzDgJ.js:330
+ Th https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ u0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ W0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ M0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ HC https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ zu https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ tp https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ D0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ qs https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ Lr https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+index-YNBdzDgJ.js:40:161
+Uncaught Error: A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.
+ RS https://promptlib.og.codes/assets/index-YNBdzDgJ.js:330
+ Th https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ u0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ W0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ M0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ HC https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ zu https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ tp https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ D0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ qs https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ Lr https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+index-YNBdzDgJ.js:330:15272
diff --git a/logs/console-export-2026-1-7_23-3-8.txt b/logs/console-export-2026-1-7_23-3-8.txt
new file mode 100644
index 0000000..33805b2
--- /dev/null
+++ b/logs/console-export-2026-1-7_23-3-8.txt
@@ -0,0 +1,74 @@
+Layout was forced before the page was fully loaded. If stylesheets are not yet loaded this may cause a flash of unstyled content. node.js:409:1
+Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}. index-YNBdzDgJ.js:334:497
+Error: A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.
+ RS https://promptlib.og.codes/assets/index-YNBdzDgJ.js:330
+ Th https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ u0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ W0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ M0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ HC https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ zu https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ tp https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ D0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ qs https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ Lr https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ Lr https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ Rn https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ PC https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ D https://promptlib.og.codes/assets/index-YNBdzDgJ.js:368
+ onClick https://promptlib.og.codes/assets/index-YNBdzDgJ.js:368
+ n https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ Vn https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ mk https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ gk https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ dy https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ fy https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ nh https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ np https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ Tr https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ nh https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ Mf https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ Ak https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ hy https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ rh https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ ml https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ ml https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ createRoot https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ https://promptlib.og.codes/assets/index-YNBdzDgJ.js:382
+index-YNBdzDgJ.js:40:161
+Uncaught Error: A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.
+ RS https://promptlib.og.codes/assets/index-YNBdzDgJ.js:330
+ Th https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ u0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ W0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ M0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ HC https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ zu https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ tp https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ D0 https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ qs https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ Lr https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ Lr https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ Rn https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ PC https://promptlib.og.codes/assets/index-YNBdzDgJ.js:38
+ D https://promptlib.og.codes/assets/index-YNBdzDgJ.js:368
+ onClick https://promptlib.og.codes/assets/index-YNBdzDgJ.js:368
+ n https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ Vn https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ mk https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ gk https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ dy https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ fy https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ nh https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ np https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ Tr https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ nh https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ Mf https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ Ak https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ hy https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ rh https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ ml https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ ml https://promptlib.og.codes/assets/index-YNBdzDgJ.js:37
+ createRoot https://promptlib.og.codes/assets/index-YNBdzDgJ.js:40
+ https://promptlib.og.codes/assets/index-YNBdzDgJ.js:382
+index-YNBdzDgJ.js:330:15272
diff --git a/logs/console-export-2026-1-8_3-42-14.txt b/logs/console-export-2026-1-8_3-42-14.txt
new file mode 100644
index 0000000..96f4b4f
--- /dev/null
+++ b/logs/console-export-2026-1-8_3-42-14.txt
@@ -0,0 +1,61 @@
+GET
+https://promptlib.og.codes/submit/bulk
+[HTTP/2 200 337ms]
+
+GET
+https://promptlib.og.codes/assets/index-CKhSIYCY.js
+[HTTP/2 200 358ms]
+
+GET
+https://promptlib.og.codes/assets/index-BQJe2gR5.css
+[HTTP/2 200 271ms]
+
+GET
+https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap
+[HTTP/3 200 16ms]
+
+Layout was forced before the page was fully loaded. If stylesheets are not yet loaded this may cause a flash of unstyled content. node.js:409:1
+GET
+https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2
+[HTTP/3 200 31ms]
+
+GET
+https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2
+[HTTP/3 200 30ms]
+
+GET
+https://fonts.gstatic.com/s/inter/v20/UcC73FwrK3iLTeHuS_nVMrMxCp50SjIa1ZL7.woff2
+[HTTP/3 200 27ms]
+
+GET
+https://promptlib.og.codes/favicon.ico
+[HTTP/2 200 307ms]
+
+XHRGET
+https://pxlmqppccavjtfmtopcz.supabase.co/rest/v1/prompts?select=id,title&or=(ilike.title.%a%,ilike.content.%a%)&order=created_at.desc&limit=5
+[HTTP/3 400 36ms]
+
+XHRGET
+https://pxlmqppccavjtfmtopcz.supabase.co/rest/v1/prompts?select=id,title&or=(ilike.title.%a%,ilike.content.%a%)&order=created_at.desc&limit=5
+[HTTP/3 400 36ms]
+
+XHRGET
+https://pxlmqppccavjtfmtopcz.supabase.co/rest/v1/prompts?select=id,title&or=(ilike.title.%an%,ilike.content.%an%)&order=created_at.desc&limit=5
+[HTTP/3 400 39ms]
+
+XHRGET
+https://pxlmqppccavjtfmtopcz.supabase.co/rest/v1/prompts?select=id,title&or=(ilike.title.%ann%,ilike.content.%ann%)&order=created_at.desc&limit=5
+[HTTP/3 400 45ms]
+
+XHRGET
+https://pxlmqppccavjtfmtopcz.supabase.co/rest/v1/prompts?select=id,title&or=(ilike.title.%ann%,ilike.content.%ann%)&order=created_at.desc&limit=5
+[HTTP/3 400 40ms]
+
+XHRGET
+https://pxlmqppccavjtfmtopcz.supabase.co/rest/v1/prompts?select=id,title&or=(ilike.title.%ann%,ilike.content.%ann%)&order=created_at.desc&limit=5
+[HTTP/3 400 42ms]
+
+XHRGET
+https://pxlmqppccavjtfmtopcz.supabase.co/rest/v1/prompts?select=id,title&or=(ilike.title.%ann%,ilike.content.%ann%)&order=created_at.desc&limit=5
+[HTTP/3 400 50ms]
+
diff --git a/logs/vercel-build-log_02.txt b/logs/vercel-build-log_02.txt
new file mode 100644
index 0000000..7a5f693
--- /dev/null
+++ b/logs/vercel-build-log_02.txt
@@ -0,0 +1,29 @@
+22:41:37.667 [36mvite v6.3.4 [32mbuilding for production...[36m[39m
+22:41:38.059 transforming...
+22:41:38.090 Browserslist: browsers data (caniuse-lite) is 9 months old. Please run:
+22:41:38.090 npx update-browserslist-db@latest
+22:41:38.090 Why you should do it regularly: https://github.com/browserslist/update-db#readme
+22:41:56.722 [32m✓[39m 14830 modules transformed.
+22:41:56.725 [31m✗[39m Build failed in 19.03s
+22:41:56.725 [31merror during build:
+22:41:56.725 [31msrc/components/icons/LobeIcon.tsx (2:9): "Icon" is not exported by "node_modules/.pnpm/@lobehub+icons@4.0.2_@lobehub+ui@4.12.0_@types+react@18.3.20_antd@6.1.4_date-fns@3.6.0__06d8563898b36c099c547cc081179ef2/node_modules/@lobehub/icons/es/index.js", imported by "src/components/icons/LobeIcon.tsx".[31m
+22:41:56.726 file: [36m/vercel/path0/src/components/icons/LobeIcon.tsx:2:9[31m
+22:41:56.726 [33m
+22:41:56.726 1: import React from "react";
+22:41:56.726 2: import { Icon } from "@lobehub/icons";
+22:41:56.726 ^
+22:41:56.726 3:
+22:41:56.726 4: type Props = {
+22:41:56.726 [31m
+22:41:56.726 at getRollupError (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/parseAst.js:397:41)
+22:41:56.726 at error (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/parseAst.js:393:42)
+22:41:56.726 at Module.error (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/node-entry.js:16750:16)
+22:41:56.727 at Module.traceVariable (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/node-entry.js:17199:29)
+22:41:56.727 at ModuleScope.findVariable (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/node-entry.js:14855:39)
+22:41:56.727 at ReturnValueScope.findVariable (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/node-entry.js:5583:38)
+22:41:56.727 at FunctionBodyScope.findVariable (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/node-entry.js:5583:38)
+22:41:56.727 at Identifier.bind (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/node-entry.js:5357:40)
+22:41:56.727 at CallExpression.bind (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/node-entry.js:2780:28)
+22:41:56.727 at CallExpression.bind (file:///vercel/path0/node_modules/.pnpm/rollup@4.40.0/node_modules/rollup/dist/es/shared/node-entry.js:11935:15)[39m
+22:41:56.842 ELIFECYCLE Command failed with exit code 1.
+22:41:56.857 Error: Command "pnpm run build" exited with 1
diff --git a/name-ideas.md b/name-ideas.md
new file mode 100644
index 0000000..537295e
--- /dev/null
+++ b/name-ideas.md
@@ -0,0 +1,135 @@
+SHORTLIST:
+====================================================
+PromptShelf
+PromptFlow
+Prompta
+PromptCatalog
+PromptVault
+PromptDeck
+PromptHub
+PromptForge
+PromptLab
+PromptBase
+PromptPilot
+PromptHive
+PromptBuddy
+PromptKit
+PromptCatalog
+Promptr
+PromptStudio
+
+
+
+Descriptive and professional
+
+# PromptHub
+# PromptDeck
+# PromptStudio
+# PromptVault
+PromptAtlas
+PromptLibrary Pro
+PromptOrganizer
+PromptWorkspace
+# PromptCatalog
+PromptNavigator
+Brandable single-word
+
+# Promptr
+Promptly
+Promptus
+Prompton
+Promptrix
+Promptrise
+# Prompta
+Prompto
+Promptaic
+Workflow-leaning (reflects your “workflow” section)
+
+# PromptFlow
+FlowPrompt
+PromptChain
+PromptPipeline
+PromptLoom
+FlowForge
+FlowDeck
+FlowVault
+FlowAtlas
+WorkFlow
+Library/archive metaphors
+
+PromptArchive
+PromptIndex
+# PromptShelf
+PromptStack
+PromptBinder
+PromptRegistry
+PromptCodex
+# PromptCatalog
+PromptRepository
+PromptCard
+Creation/craft metaphors
+
+# PromptForge
+PromptWorkshop
+PromptFoundry
+# PromptLab
+PromptCraft
+PromptWorks
+PromptFactory
+PromptKitchen
+PromptPlaybook
+PromptPatterns
+Team/collaboration oriented
+
+PromptSpace
+PromptSync
+PromptCircle
+PromptCollab
+# PromptBase
+PromptBoard
+PromptRoom
+PromptShare
+PromptSuite
+PromptCollective
+Playful/modern
+
+# PromptPilot
+PromptNest
+# PromptHive
+PromptGarden
+PromptCanvas
+PromptCompass
+PromptSpark
+# PromptBuddy
+PromptPocket
+# PromptKit
+Top picks with quick rationale
+
+PromptDeck: Conveys organized, actionable collections; fits cards, tags, and favorites.
+PromptForge: Emphasizes creation and refinement; aligns with workflows and editing.
+PromptFlow: Directly ties to your workflow feature; suggests smooth processes.
+PromptVault: Signals safety and structure; great for folders, pins, and favorites.
+PromptAtlas: Feels expansive and navigable; fits filters and categories.
+PromptStudio: Professional, creative; matches submission, editing, and management.
+PromptLoom: Unique and memorable; suggests weaving tags and workflows together.
+PromptHub: Familiar and straightforward; central place for prompts and folders.
+Tagline ideas
+
+Organize, craft, and share prompts with flow
+Your complete workspace for prompt creation and curation
+From idea to workflow—prompts, organized
+Build, tag, and refine prompts across platforms
+The structured home for your best prompts
+Workflows, tags, folders—everything your prompts need
+Craft prompts faster with a smarter library
+Pin, tag, and flow—prompt management made easy
+A studio for prompts and the workflows behind them
+Turn prompt chaos into clarity
+Decision checklist
+
+Is it easy to say and spell?
+Does it hint at your key differentiator (workflows, organization, collaboration)?
+Can it scale from solo to team use?
+Is the domain and handle reasonably available (consider .app/.io/.dev/.ai)?
+Does it avoid overlap with major existing products or trademarks?
+Can you imagine a simple logo and icon for it?
diff --git a/ssh.md b/ssh.md
new file mode 100644
index 0000000..9071e40
--- /dev/null
+++ b/ssh.md
@@ -0,0 +1 @@
+OveruseFiddling5DeuceImmodest
\ No newline at end of file