AI PRD is a comprehensive Product Requirements Document (PRD) management platform that combines AI-assisted content generation with stakeholder collaboration, feature prioritization, and seamless integration with popular project management tools.
- Overview
- Key Features
- Tech Stack
- Getting Started
- Usage
- Architecture
- API Documentation
- Development
- Deployment
- Contributing
- License
AI PRD is designed for product managers and teams who need to create, manage, and collaborate on Product Requirements Documents efficiently. The platform leverages Google's Gemini AI to assist in:
- π€ AI-Assisted Writing: Generate user stories, acceptance criteria, and requirements
- π RICE Prioritization: Systematic feature prioritization using Reach, Impact, Confidence, and Effort metrics
- π₯ Stakeholder Management: Collect feedback, track reviews, and manage alignment
- π Version Control: Snapshot system with full state versioning and burndown tracking
- π Integrations: Sync with Linear, Jira, and Notion
- π€ Export Options: PDF, HTML, and JSON exports with shareable links
- π Internationalization: Multi-language support (English, Spanish)
| Feature | Description |
|---|---|
| PRD Builder | Step-by-step editor with AI assistance and template selection |
| Command Palette | Cmd/Ctrl+K global shortcuts for quick navigation and actions |
| Feature Prioritization | RICE scoring matrix for data-driven decision making |
| Stakeholder Input | Structured feedback collection and review tracking |
| AI Assistant Panel | Real-time suggestions for user stories, requirements, and gap detection |
| Snapshot History | Version control with timestamps and restore capabilities |
| Survey Intake | Collect structured feedback from stakeholders and users |
| Theme Support | Light/dark mode with persistence |
| Offline Support | PWA with local-first data storage |
| Telemetry | Optional Sentry integration for error tracking and analytics |
| Smart Caching | AI response caching (1 min TTL) for instant suggestions |
| Secret Detection | Warns before committing sensitive data |
| Accessibility | ARIA labels, keyboard navigation, screen reader support |
| Feature | Description |
|---|---|
| PRD Management | Full CRUD operations for PRDs with validation |
| Snapshot System | Compressed version history with gzip support |
| Linear Integration | Create and sync issues to Linear |
| Jira Integration | Create and sync issues to Jira |
| Notion Export | Convert PRDs to Notion pages with markdown support |
| Custom Templates | Create and manage reusable PRD templates |
| Job Queue | Async processing for long-running sync operations |
| Data Security | Server-side redaction of sensitive information |
| Rate Limiting | Protection against API abuse |
| Health Checks | System health monitoring endpoint |
Core:
- βοΈ React 18.3.1 with TypeScript
- β‘ Vite 7.1.4 - Modern build tool with HMR
- π¨ Tailwind CSS 3.4.17 - Utility-first styling
- πΊ React Router 6.27.0 - Client-side routing
- π» Zustand 5.0.8 - Lightweight state management
AI & Services:
- π€ Google Generative AI - Gemini API integration
- π Clerk - Authentication and user management
- π Sentry - Error tracking and telemetry
- π jsPDF - PDF export functionality
Development:
- π§ͺ Vitest - Unit testing
- π§Ή ESLint + Prettier - Code quality and formatting
- β Zod - Schema validation
Core:
- π’ Node.js with TypeScript
- π Express.js 4.19.2 - REST API framework
- π MongoDB + Mongoose 8.6.0 - Database and ODM
Integrations:
- π Notion API - Export to Notion pages
- π― Linear API - GraphQL-based issue tracking
- π Jira API - REST-based issue tracking
Development:
- β‘ tsx - TypeScript execution with hot reload
- β Zod - Runtime schema validation
- π CORS - Cross-origin resource sharing
- Node.js >= 18.x
- npm >= 9.x
- MongoDB >= 6.x (local or cloud instance)
- Google Gemini API Key (for AI features)
- Optional: Linear, Jira, and Notion API keys (for integrations)
-
Clone the repository:
git clone https://github.com/devagarwal07/AIPRD.git cd AIPRD -
Install Frontend Dependencies:
cd Frontend npm install -
Install Backend Dependencies:
cd ../server npm install
Create a .env file in the Frontend directory:
# Required: Google Gemini API
VITE_GEMINI_API_KEY=your_gemini_api_key_here
VITE_GEMINI_MODEL=gemini-1.5-flash
# Optional: Backend API URL
VITE_API_BASE=http://localhost:4000
# Optional: Authentication (Clerk)
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_key_here
# Optional: Error Tracking (Sentry)
VITE_SENTRY_DSN=your_sentry_dsn_hereGetting API Keys:
- Gemini API: Visit Google AI Studio
- Clerk: Visit Clerk Dashboard
- Sentry: Visit Sentry.io
Create a .env file in the server directory:
# Required: Database
MONGODB_URI=mongodb://localhost:27017/pmcopilot
PORT=4000
# Optional: Linear Integration
LINEAR_API_KEY=your_linear_api_key
# Optional: Jira Integration
JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_EMAIL=your_email@example.com
JIRA_API_TOKEN=your_jira_token
# Optional: Notion Integration
NOTION_API_KEY=your_notion_integration_token
NOTION_PARENT_PAGE=your_parent_page_id
NOTION_PARENT_DB=your_parent_database_idGetting Integration Keys:
- Linear API: Settings β API β Personal API Keys
- Jira API: Account Settings β Security β API Tokens
- Notion API: Create an integration
Option 1: Run Frontend and Backend Separately
Terminal 1 (Backend):
cd server
npm run dev
# Server starts on http://localhost:4000Terminal 2 (Frontend):
cd Frontend
npm run dev
# App starts on http://localhost:5173Option 2: Run Both Together
cd Frontend
npm run dev:all
# Starts both frontend and backend concurrentlyFrontend:
cd Frontend
npm run build
npm run preview # Preview the production buildBackend:
cd server
npm run build
npm startFrontend Tests:
cd Frontend
npm run test # Watch mode
npm run test:run # Single runFrontend:
npm run lint # Check code quality
npm run format # Auto-format code
npm run analyze # Bundle size analysisβββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Frontend (React) β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββ β
β β PRD Builder β β Dashboard β β Snapshots β β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββ β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββ β
β βAI Assistant β βPrioritizationβ β Export β β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββ Google Gemini API (AI)
β
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Backend (Express + MongoDB) β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββ β
β β PRD Routes β β Sync Routes β βIntegrationsβ β
β ββββββββββββββββ ββββββββββββββββ βββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β MongoDB (Data Layer) β β
β β β’ PRDs β’ Snapshots β’ Templates β’ Config β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββΌβββββββββββββββββ
β β β
Linear API Jira API Notion API
State Management:
- Zustand store (
prdStore.ts) as single source of truth - LocalStorage persistence for offline support
- Snapshot system for version control
Component Structure:
App
βββ Router
β βββ Dashboard (PRD list, search, filters)
β βββ PRDBuilder
β β βββ StepEditor (Overview, Goals, Features, etc.)
β β βββ AssistantPanel (AI suggestions)
β β βββ SnapshotPanel (Version history)
β β βββ ExportPanel (PDF, HTML, JSON)
β βββ PrioritizationMatrix (RICE scoring)
β βββ StakeholderInput (Feedback collection)
β βββ ReadOnlyPRD (Shareable view)
βββ CommandPalette (Cmd/Ctrl+K shortcuts)
βββ ErrorBoundary (Error handling)
Route Structure:
/api
βββ /prds # PRD CRUD operations
βββ /snapshots # Version history
βββ /sync # Linear & Jira sync
β βββ /linear # Create Linear issues
β βββ /jira # Create Jira issues
β βββ /jobs # Job queue status
βββ /integrations # Config management
βββ /templates # Custom templates
βββ /notion # Notion export
βββ /health # Health check
Data Models:
- PRD: Core document with metadata, sections, features
- Snapshot: Compressed version history with timestamps
- IntegrationConfig: User-specific integration settings
- Template: Custom PRD templates
List all PRDs (50 most recent)
Response:
[
{
"_id": "...",
"title": "New Feature PRD",
"metadata": { "owner": "..." },
"createdAt": "2026-01-31T...",
"updatedAt": "2026-01-31T..."
}
]Create a new PRD
Request Body:
{
"title": "New Feature PRD",
"metadata": {
"owner": "John Doe",
"status": "draft"
},
"sections": {
"overview": "Product overview...",
"goals": ["Goal 1", "Goal 2"]
}
}Update an existing PRD
Delete a PRD
List snapshots for a specific PRD
Create a snapshot
Request Body:
{
"prdId": "...",
"snapshot": { "title": "...", "sections": {...} },
"version": "1.0.0",
"comment": "Initial version"
}Create issues in Linear
Request Body:
{
"teamId": "...",
"projectId": "...",
"features": [
{
"title": "Feature 1",
"description": "...",
"priority": 1
}
],
"async": false
}Create issues in Jira
Request Body:
{
"projectKey": "PROJ",
"features": [
{
"title": "Feature 1",
"description": "...",
"issueType": "Story"
}
]
}Get sync job status
Response:
{
"id": "...",
"status": "completed",
"result": {
"created": 5,
"failed": 0,
"issues": [...]
}
}Create a Notion page from markdown
Request Body:
{
"title": "PRD Title",
"markdown": "# Overview\nContent...",
"parentPageId": "..." // optional
}AIPRD/
βββ Frontend/ # React frontend application
β βββ src/
β β βββ components/ # React components
β β βββ store/ # Zustand state management
β β βββ utils/ # Utility functions
β β βββ hooks/ # Custom React hooks
β β βββ i18n/ # Internationalization
β β βββ types/ # TypeScript definitions
β βββ public/ # Static assets
β βββ vite.config.ts # Vite configuration
β βββ package.json
β
βββ server/ # Express backend application
β βββ src/
β β βββ models/ # MongoDB models
β β βββ routes/ # API route handlers
β β βββ index.ts # Express app entry
β βββ .env.example # Environment template
β βββ package.json
β
βββ README.md # This file
-
Feature Branch: Create a branch from
maingit checkout -b feature/your-feature-name
-
Make Changes: Implement your feature with tests
-
Code Quality: Run linters and formatters
npm run lint npm run format
-
Testing: Ensure all tests pass
npm run test -
Commit: Use conventional commits
git commit -m "feat: add new feature" -
Push: Push your changes
git push origin feature/your-feature-name
Frontend:
- Use React DevTools browser extension
- Zustand DevTools for state inspection
- Vite's built-in error overlay
Backend:
- Use
console.logor debugger with tsx - MongoDB Compass for database inspection
- Check logs in terminal for API errors
Frontend:
- Code splitting with React lazy loading
- Virtualized lists with react-window
- AI response caching (1 min TTL)
- Service worker for offline support
Backend:
- Gzip compression for large JSON payloads
- Rate limiting on sync endpoints
- MongoDB indexing on frequently queried fields
- Async job queue for long-running operations
Recommended Platforms:
- Vercel (recommended for Vite apps)
- Netlify
- AWS Amplify
- GitHub Pages
Vercel Example:
# Install Vercel CLI
npm i -g vercel
# Deploy
cd Frontend
vercel --prodBuild Command: npm run build
Output Directory: dist
Recommended Platforms:
- Railway
- Heroku
- AWS Elastic Beanstalk
- DigitalOcean App Platform
- Render
Environment Variables:
Ensure all required environment variables from .env.example are configured in your deployment platform.
Railway Example:
# Install Railway CLI
npm i -g @railway/cli
# Login and deploy
railway login
cd server
railway upMongoDB Options:
- MongoDB Atlas (recommended for production)
- Self-hosted MongoDB
- DigitalOcean Managed MongoDB
MongoDB Atlas Setup:
- Create a free cluster at mongodb.com/cloud/atlas
- Whitelist your deployment platform's IP addresses
- Update
MONGODB_URIwith connection string
- Set strong
MONGODB_URIwith authentication - Use environment variables for all secrets
- Enable CORS only for trusted domains
- Implement rate limiting in production
- Use HTTPS for all connections
- Rotate API keys regularly
- Enable MongoDB encryption at rest
- Set up monitoring and alerting
We welcome contributions! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'feat: add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
We use Conventional Commits:
feat:New featurefix:Bug fixdocs:Documentation changesstyle:Code style changes (formatting, etc.)refactor:Code refactoringtest:Adding or updating testschore:Maintenance tasks
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Gemini AI for powerful AI capabilities
- Clerk for seamless authentication
- MongoDB for flexible data storage
- React and Vite for excellent developer experience
- The open-source community for amazing tools and libraries
For questions and support:
- Open an issue on GitHub Issues
- Check existing documentation and README
- Review closed issues for similar problems
- Real-time collaboration with WebSockets
- GitHub integration for issue sync
- Advanced analytics and reporting
- Mobile app (React Native)
- AI-powered requirement conflict detection
- Integration with Figma for design specs
- Custom AI model training on organization data
- Advanced RBAC (Role-Based Access Control)
Built with β€οΈ by the AI PRD Team