@pinkpixel/promptzy 1.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,108 @@
1
+ # Changelog
2
+
3
+ All notable changes to Promptzy will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [1.2.0] - 2025-05-26
11
+
12
+ ### Added
13
+ - **🎯 Rebranded to Promptzy:** Complete rebrand from "AI Prompt Dashboard" to "Promptzy"
14
+ - **✨ New Cute Logo:** Added adorable mascot-style logo for better brand recognition
15
+ - **🚀 Enhanced CLI:** Primary CLI command is now `promptzy` (legacy commands still work)
16
+ - **📦 New Package Name:** Published as `@pinkpixel/promptzy` on npm
17
+
18
+ ### Changed
19
+ - Updated all documentation to reflect Promptzy branding
20
+ - Enhanced package.json with new repository URLs and package name
21
+ - Improved CLI banner with Promptzy branding
22
+ - Updated README with new installation instructions
23
+
24
+ ### Fixed
25
+ - All references to old package name updated
26
+ - Repository URLs updated to new GitHub location
27
+
28
+ ## [1.1.0] - 2025-05-26
29
+
30
+ ### Added
31
+ - System prompt configuration for the AI Assistant
32
+ - Option to use default or custom system prompt in settings
33
+ - Enhanced Supabase integration with user-configurable credentials
34
+ - Better connection testing and error handling for Supabase
35
+ - Comprehensive manual table setup guide with SQL code
36
+ - Direct link to Supabase SQL Editor based on project URL
37
+ - Step-by-step instructions for database setup
38
+ - Copy-to-clipboard functionality for SQL setup code
39
+ - Automatic synchronization when switching storage types
40
+ - Integration with vector embeddings search
41
+ - Workspace context in prompts
42
+ - Delete confirmation dialog for prompt deletions, with "Don't show this again" option
43
+ - Cloudflare Pages deployment configuration with wrangler.toml
44
+ - GitHub Actions workflow for automated deployment
45
+ - Comprehensive deployment guide (DEPLOYMENT.md)
46
+ - SPA routing configuration for Cloudflare Pages with _routes.json
47
+ - Improved bidirectional sync between local storage and Supabase
48
+ - Better logging for troubleshooting sync issues
49
+ - Detailed documentation on synchronization behavior in README
50
+ - Updated OVERVIEW.md with latest project information and deployment details
51
+ - Browser refresh notification for new Supabase connections
52
+ - Enhanced AI system prompt with detailed category-specific guidelines
53
+ - Auto-update mechanism for outdated AI system prompts in settings
54
+ - Global CLI installation support with `prompt-dashboard` and `ai-prompt-dashboard` commands
55
+ - Beautiful ASCII banner and colored output for CLI
56
+ - NPX support for running without installation
57
+
58
+ ### Changed
59
+ - Improved Supabase client to dynamically use user-provided credentials
60
+ - More robust error handling for cloud storage operations
61
+ - Better fallback to local storage when cloud operations fail
62
+ - Enhanced feedback during connection testing and table setup
63
+ - Updated table creation flow to focus on manual setup via SQL Editor
64
+ - Prompt card list switched from CSS grid to responsive Masonry-style flex columns to isolate vertical expansion
65
+ - Updated _routes.json to properly handle SPA routing in Cloudflare Pages
66
+ - Enhanced storage type persistence between sessions
67
+ - Improved authentication detection for anonymous Supabase usage
68
+ - Verified Cloudflare Pages deployment configuration with proper SPA routing
69
+ - "Test Connection" button renamed to "Connect" for better UX
70
+ - AI system prompt completely rewritten for better prompt generation quality
71
+ - Removed non-functional "Create Table" button and improved manual setup flow
72
+
73
+ ### Fixed
74
+ - Table access error handling for Supabase environments
75
+ - Permissions issues with automatic table creation
76
+ - `.btn-hover-effect` overlay no longer blocks pointer events on card controls
77
+ - Expand/collapse toggle now only affects individual cards, not all cards
78
+ - Cloudflare Pages SPA routing issues by adding proper "serve" configuration
79
+ - Storage preference not persisting between page reloads
80
+ - Supabase synchronization not working correctly between devices
81
+ - Fixed bugs in prompt import/export between storage types
82
+ - Improved handling of Supabase connection failures
83
+ - User-specific data filtering to prevent mixing prompts between users
84
+ - Misleading "Create Table" button that couldn't actually create tables
85
+ - Better error handling and messaging for Supabase connection failures
86
+ - Automatic update of outdated AI system prompts for existing users
87
+
88
+ ## [0.1.0] - 2025-05-19
89
+
90
+ ### Added
91
+ - Initial release of the Prompt Dashboard
92
+ - Create, edit, and delete AI prompts
93
+ - Organize prompts with custom tags
94
+ - Search functionality with text and tag filtering
95
+ - Dual storage options (local and Supabase)
96
+ - AI Assistant for generating prompt ideas
97
+ - User authentication with Supabase
98
+ - Responsive UI with Shadcn/UI components and Tailwind CSS
99
+
100
+ ### Changed
101
+ - Enhanced UI with improved styling
102
+ - Icon-based send button
103
+ - Automatic API key configuration
104
+
105
+ ### Fixed
106
+ - Storage synchronization issues
107
+ - Tag management bugs
108
+ - Form validation errors
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Pink Pixel
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,187 @@
1
+ # ✨ Promptzy 🎯
2
+
3
+ <p align="center">
4
+ <img src="./public/promptzy-logo.png" alt="Promptzy Logo" width="200" />
5
+ </p>
6
+
7
+ **Promptzy** - A modern, cute web application for managing and organizing your AI prompts, with tagging, search, and cloud storage.
8
+
9
+ <div align="center">
10
+
11
+ ![License](https://img.shields.io/badge/license-MIT-blue.svg)
12
+ ![Version](https://img.shields.io/badge/version-1.2.0-green.svg)
13
+ ![NPM](https://img.shields.io/npm/v/@pinkpixel/promptzy?color=red)
14
+ ![React](https://img.shields.io/badge/React-19.1.0-61DAFB?logo=react)
15
+ ![TypeScript](https://img.shields.io/badge/TypeScript-5.8.3-3178C6?logo=typescript)
16
+ ![Vite](https://img.shields.io/badge/Vite-5.4.19-646CFF?logo=vite)
17
+ ![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-3.4.11-38B2AC?logo=tailwind-css)
18
+ ![Supabase](https://img.shields.io/badge/Supabase-2.49.7-3ECF8E?logo=supabase)
19
+ ![Build Status](https://img.shields.io/badge/build-passing-brightgreen)
20
+ ![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)
21
+ ![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)
22
+
23
+ </div>
24
+
25
+ ## ✨ Features
26
+
27
+ - **Organize AI Prompts**: Store, edit, and categorize prompts for various AI models
28
+ - **Custom Tagging**: Organize prompts with custom tags for easy retrieval
29
+ - **Powerful Search**: Find the perfect prompt with full-text search and tag filtering
30
+ - **Dual Storage**:
31
+ - Store prompts locally in your browser
32
+ - Cloud sync with Supabase for cross-device access
33
+ - Optional hybrid mode to sync between both
34
+ - **AI Assistant**: Generate new prompt ideas with AI help
35
+ - **Modern UI**: Clean, responsive interface built with Shadcn/UI and Tailwind
36
+
37
+ ## 🖥️ Screenshots
38
+
39
+ *Coming soon*
40
+
41
+ ## 🛠️ Installation
42
+
43
+ ### Quick Start (Global Installation)
44
+
45
+ Install globally from npm and run with a single command:
46
+
47
+ ```bash
48
+ # Install globally
49
+ npm install -g @pinkpixel/promptzy
50
+
51
+ # Run Promptzy
52
+ promptzy
53
+ ```
54
+
55
+ Promptzy will start on `http://localhost:4173` and open automatically in your browser!
56
+
57
+ **Alternative commands:**
58
+ ```bash
59
+ # Legacy commands still work
60
+ prompt-dashboard
61
+ ai-prompt-dashboard
62
+
63
+ # Or run directly with npx (no installation needed)
64
+ npx @pinkpixel/promptzy
65
+ ```
66
+
67
+ ### Local Development
68
+
69
+ ```bash
70
+ # Clone the repository
71
+ git clone https://github.com/pinkpixel-dev/promptzy.git
72
+
73
+ # Navigate to the project directory
74
+ cd promptzy
75
+
76
+ # Install dependencies (choose one)
77
+ npm install
78
+ # or
79
+ bun install
80
+ # or
81
+ yarn install
82
+
83
+ # Start the development server
84
+ npm run dev
85
+ # or
86
+ bun run dev
87
+ # or
88
+ yarn dev
89
+ ```
90
+
91
+ ### Deployment
92
+
93
+ For deploying to Cloudflare Pages or other platforms, see the [DEPLOYMENT.md](DEPLOYMENT.md) guide.
94
+
95
+ ## 🔧 Configuration
96
+
97
+ ### Local Storage
98
+
99
+ By default, the application uses browser localStorage - no configuration needed!
100
+
101
+ ### Supabase Configuration
102
+
103
+ To use cloud storage features:
104
+
105
+ 1. Create a Supabase account and project at [supabase.com](https://supabase.com)
106
+ 2. Configure your Supabase credentials:
107
+
108
+ - Open Promptzy
109
+ - Go to Settings (gear icon)
110
+ - Select "Supabase" as your storage option
111
+ - Enter your Supabase Project URL and API Key
112
+ - Find these in your Supabase dashboard under Project Settings → API
113
+ - Click "Connect" to verify your credentials
114
+ 3. Create the required database table:
115
+
116
+ - After connecting, you'll need to set up the prompts table manually
117
+ - Click the "Open SQL Editor" button in the settings
118
+ - Copy the SQL code provided in the settings (or use the SQL from `supabase-setup.sql`)
119
+ - Paste and run it in the Supabase SQL Editor
120
+ 4. Return to Promptzy and click "Connect" again to verify the table setup
121
+ 5. Save your settings
122
+
123
+ **Note:** Automatic table creation isn't supported by Supabase for security reasons, so this one-time manual setup is required.
124
+
125
+ The application will now use your Supabase instance for cloud storage!
126
+
127
+ #### Synchronization Details
128
+
129
+ When using the "Both" storage option:
130
+
131
+ - New prompts are saved to both local storage and Supabase
132
+ - When you open the application, it will:
133
+ 1. Load local prompts first
134
+ 2. Fetch prompts from Supabase
135
+ 3. Merge them, preferring Supabase versions for duplicate IDs
136
+ 4. Sync any unique local prompts to Supabase
137
+ 5. Save any unique Supabase prompts to local storage
138
+
139
+ This bidirectional sync ensures your prompts are available across devices and you always have a local backup.
140
+
141
+ > **Note:** Cloud sync requires opening the application with the same Supabase configuration on all devices. Your storage preference is saved in your browser's localStorage.
142
+
143
+ ## 📖 Usage
144
+
145
+ 1. Launch the application
146
+ 2. Choose your storage preference (local, Supabase, or both)
147
+ 3. Add prompts with the "+" button
148
+ 4. Assign tags to organize your prompts
149
+ 5. Use the search box and tag filters to find prompts
150
+ 6. Select a prompt to copy it or edit its details
151
+
152
+ ## 🧩 Tech Stack
153
+
154
+ - React 18.3 with TypeScript
155
+ - Vite for fast builds
156
+ - Tailwind CSS
157
+ - Shadcn/UI components
158
+ - TanStack Query
159
+ - React Hook Form with Zod
160
+ - Supabase for auth and storage
161
+ - Cloudflare Pages for deployment
162
+
163
+ ## 📋 Roadmap
164
+
165
+ - [ ] Prompt version history
166
+ - [ ] AI prompt templates
167
+ - [ ] Shared prompt libraries
168
+ - [ ] Additional storage backends
169
+ - [ ] Advanced tagging with hierarchies
170
+
171
+ ## 🤝 Contributing
172
+
173
+ Contributions are welcome! See the [CONTRIBUTING.md](CONTRIBUTING.md) file for details.
174
+
175
+ ## 📜 License
176
+
177
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
178
+
179
+ ## 🙏 Acknowledgments
180
+
181
+ - [Shadcn/UI](https://ui.shadcn.com/) for the beautiful UI components
182
+ - [Tailwind CSS](https://tailwindcss.com/) for styling
183
+ - [Supabase](https://supabase.com/) for authentication and cloud storage
184
+
185
+ ---
186
+
187
+ Made with ❤️ by [Pink Pixel](https://pinkpixel.dev)
@@ -0,0 +1,79 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { spawn } from 'child_process';
4
+ import { fileURLToPath } from 'url';
5
+ import { dirname, join } from 'path';
6
+ import { existsSync } from 'fs';
7
+
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = dirname(__filename);
10
+
11
+ // ASCII Art Banner
12
+ const banner = `
13
+ \x1b[35m╔═══════════════════════════════════════════════════════════════╗\x1b[0m
14
+ \x1b[35m║\x1b[0m \x1b[36m✨ Promptzy\x1b[0m \x1b[35m║\x1b[0m
15
+ \x1b[35m║\x1b[0m \x1b[32mManage and organize your AI prompts with style!\x1b[0m \x1b[35m║\x1b[0m
16
+ \x1b[35m║\x1b[0m \x1b[35m║\x1b[0m
17
+ \x1b[35m║\x1b[0m \x1b[33mMade with ❤️ by Pink Pixel\x1b[0m \x1b[35m║\x1b[0m
18
+ \x1b[35m╚═══════════════════════════════════════════════════════════════╝\x1b[0m
19
+ `;
20
+
21
+ console.log(banner);
22
+
23
+ // Find the package root directory
24
+ const packageRoot = join(__dirname, '..');
25
+
26
+ // Check if we're in development or installed globally
27
+ const distPath = join(packageRoot, 'dist');
28
+ const isBuilt = existsSync(distPath);
29
+
30
+ if (!isBuilt) {
31
+ console.log('\x1b[31m❌ Error: Built files not found!\x1b[0m');
32
+ console.log('\x1b[33m💡 This package needs to be built before running.\x1b[0m');
33
+ console.log('\x1b[36mℹ️ If you\'re developing locally, run: npm run build\x1b[0m');
34
+ process.exit(1);
35
+ }
36
+
37
+ console.log('\x1b[32m🎯 Starting Promptzy...\x1b[0m');
38
+ console.log('\x1b[36m📂 Serving from:\x1b[0m', distPath);
39
+
40
+ // Start the preview server
41
+ const vitePreview = spawn('npx', ['vite', 'preview', '--host', '0.0.0.0', '--port', '4173'], {
42
+ cwd: packageRoot,
43
+ stdio: 'inherit',
44
+ shell: true
45
+ });
46
+
47
+ // Handle process termination
48
+ process.on('SIGINT', () => {
49
+ console.log('\n\x1b[33m🛑 Shutting down Promptzy...\x1b[0m');
50
+ vitePreview.kill('SIGINT');
51
+ process.exit(0);
52
+ });
53
+
54
+ process.on('SIGTERM', () => {
55
+ console.log('\n\x1b[33m🛑 Shutting down Promptzy...\x1b[0m');
56
+ vitePreview.kill('SIGTERM');
57
+ process.exit(0);
58
+ });
59
+
60
+ vitePreview.on('error', (error) => {
61
+ console.error('\x1b[31m❌ Error starting server:\x1b[0m', error.message);
62
+ process.exit(1);
63
+ });
64
+
65
+ vitePreview.on('close', (code) => {
66
+ if (code !== 0) {
67
+ console.log(`\x1b[31m❌ Server exited with code ${code}\x1b[0m`);
68
+ } else {
69
+ console.log('\x1b[32m✅ Promptzy stopped successfully\x1b[0m');
70
+ }
71
+ process.exit(code);
72
+ });
73
+
74
+ // Show startup info
75
+ setTimeout(() => {
76
+ console.log('\n\x1b[32m🎉 Promptzy is running!\x1b[0m');
77
+ console.log('\x1b[36m🌐 Open your browser to:\x1b[0m \x1b[4mhttp://localhost:4173\x1b[0m');
78
+ console.log('\x1b[33m⚡ Press Ctrl+C to stop the server\x1b[0m\n');
79
+ }, 2000);
package/dist/_headers ADDED
@@ -0,0 +1,23 @@
1
+ # Cache settings for static assets
2
+ /assets/*
3
+ Cache-Control: public, max-age=31536000, immutable
4
+
5
+ /*.png
6
+ Cache-Control: public, max-age=31536000, immutable
7
+
8
+ /*.svg
9
+ Cache-Control: public, max-age=31536000, immutable
10
+
11
+ /*.jpg
12
+ Cache-Control: public, max-age=31536000, immutable
13
+
14
+ /*.ico
15
+ Cache-Control: public, max-age=31536000, immutable
16
+
17
+ # Security headers for all pages
18
+ /*
19
+ X-Frame-Options: DENY
20
+ X-Content-Type-Options: nosniff
21
+ Referrer-Policy: strict-origin-when-cross-origin
22
+ Permissions-Policy: camera=(), microphone=(), geolocation=()
23
+ Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.gpteng.co https://text.pollinations.ai; connect-src 'self' https://text.pollinations.ai https://*.supabase.co; img-src 'self' data: blob:; style-src 'self' 'unsafe-inline'; font-src 'self'; frame-src 'none'; object-src 'none';
@@ -0,0 +1,18 @@
1
+ {
2
+ "version": 1,
3
+ "include": ["/*"],
4
+ "exclude": [
5
+ "/assets/*",
6
+ "/*.png",
7
+ "/*.svg",
8
+ "/*.jpg",
9
+ "/*.ico",
10
+ "/*.js",
11
+ "/*.css"
12
+ ],
13
+ "serve": {
14
+ "/*.html": "/index.html",
15
+ "/": "/index.html",
16
+ "/*": "/index.html"
17
+ }
18
+ }
@@ -0,0 +1 @@
1
+ import{g as e}from"./index-CAWOSBxH.js";var o=function(){throw new Error("ws does not work in the browser. Browser clients must use the native WebSocket object")};const r=e(o),s=Object.freeze(Object.defineProperty({__proto__:null,default:r},Symbol.toStringTag,{value:"Module"}));export{s as b};