A modern, secure web application for managing and organizing AI prompts with Firebase authentication and Firestore database integration.
π https://prompt-manager-2024.web.app
Try it now! Create an account and start managing your AI prompts in the cloud.
Want to build this app from scratch? Use these prompts with your AI assistant:
- PROTOTYPE_APP_PROMPT.md - Use this prompt to prototype the app
- SETUP_FIREBASE.md - Add this as AI rules/cursor rules in your IDE for Firebase setup
- SETUP_FIREBASE_PROMPT.md - Use this prompt to setup Firebase if the flow was interrupted
Perfect for learning Firebase, React, or building similar applications!
- Firebase Authentication with email/password and Google sign-in
- User-scoped data - each user can only access their own content
- Secure Firestore rules requiring authentication
- Beautiful login/signup UI with form validation
- Create, edit, and delete prompts with rich metadata
- Project-based organization with custom colors
- Category system for fine-grained organization
- Tagging system for flexible categorization
- Favorites for quick access to frequently used prompts
- Search functionality across titles, content, and tags
- Usage tracking to see which prompts are most popular
- Responsive design that works on all devices
- Dark mode support with system preference detection
- Real-time updates using Firestore listeners
- Intuitive sidebar navigation with project/category filtering
- Copy to clipboard functionality
- Keyboard shortcuts for power users
- Firestore database for cloud synchronization across devices
- Real-time sync - changes appear instantly across all sessions
- Offline support with automatic sync when reconnected
- Data export/import capabilities
- Automatic backups via Firebase
- Frontend: React 18 with TypeScript
- Styling: Tailwind CSS with custom design system
- Database: Firebase Firestore (NoSQL document database)
- Authentication: Firebase Auth
- Icons: Lucide React
- Build Tool: Create React App
- Deployment: Firebase Hosting (optional)
- Node.js 16+ and npm
- Firebase account (for cloud features)
- Setup Firebase MCP server based on this doc: https://firebase.google.com/docs/cli/mcp-server#before-you-begin
- AI IDE Setup: Add
SETUP_FIREBASE.mdas cursor rules/AI rules in your IDE (Cursor, Gemini CLI, etc.)
git clone https://github.com/charlotteliang/prompt-manager.git
cd prompt-manager
npm install- Create a Firebase project at Firebase Console
- Enable Authentication:
- Go to Authentication > Sign-in method
- Enable Email/Password and Google providers
- Create Firestore Database:
- Go to Firestore Database > Create database
- Start in production mode (rules are already configured)
- Choose a location close to your users
- Get your config:
- Go to Project Settings > General
- Add a web app and copy the config
- Copy the example environment file:
cp .env.example .env- Update
.envwith your Firebase project details:
REACT_APP_FIREBASE_API_KEY=your_api_key_here
REACT_APP_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
REACT_APP_FIREBASE_PROJECT_ID=your_project_id
REACT_APP_FIREBASE_STORAGE_BUCKET=your_project_id.firebasestorage.app
REACT_APP_FIREBASE_MESSAGING_SENDER_ID=your_sender_id
REACT_APP_FIREBASE_APP_ID=your_app_id.env file to version control. It's already added to .gitignore to prevent accidental commits.
firebase login
firebase use your-project-id
firebase deploy --only firestore:rulesnpm startVisit http://localhost:3000 and create an account to start managing your prompts!
No setup required! You can use the app right now at: π https://prompt-manager-2024.web.app
src/
βββ components/ # React components
β βββ LoginForm.tsx # Authentication UI
β βββ PromptCard.tsx # Individual prompt display
β βββ PromptForm.tsx # Create/edit prompt form
β βββ ProjectForm.tsx # Create/edit project form
β βββ CategoryForm.tsx# Create/edit category form
β βββ Sidebar.tsx # Navigation sidebar
βββ contexts/ # React contexts
β βββ AuthContext.tsx # Authentication state management
βββ services/ # Business logic
β βββ firebaseService.ts # Direct Firebase operations
β βββ dataService.ts # Unified data access layer
βββ types/ # TypeScript definitions
β βββ index.ts # All interface definitions
βββ utils/ # Utility functions
β βββ promptAnalysis.ts # AI prompt analysis
β βββ storage.ts # Local storage fallback
βββ config/ # Configuration
β βββ firebase.ts # Firebase initialization
βββ App.tsx # Main application component
users/{userId}/
βββ prompts/ # User's prompts
β βββ {promptId} # Individual prompt document
βββ projects/ # User's projects
β βββ {projectId} # Individual project document
βββ categories/ # User's categories
βββ {categoryId} # Individual category document
All data is automatically scoped to authenticated users:
rules_version = "2";
service cloud.firestore {
match /databases/{database}/documents {
match /prompts/{promptId} {
allow read, write: if request.auth != null
&& request.auth.uid == resource.data.userId;
}
// Similar rules for projects and categories
}
}- Authentication required - No anonymous access
- User data isolation - Each user can only access their own data
- Secure by default - All Firestore operations are protected
- Client-side validation - Form validation with error handling
- XSS protection - Safe rendering of user content
npm run build
firebase login
firebase init hosting
firebase deployThe app builds to static files and can be deployed to:
- Vercel, Netlify, or other static hosts
- GitHub Pages
- Your own server
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Firebase for backend infrastructure
- Tailwind CSS for styling system
- Lucide for beautiful icons
- React for the awesome framework
Made with β€οΈ for the AI community