π Website: AppReview.ai
A comprehensive web-based platform to collect and analyze app store feedback from Apple App Store and Google Play Store using advanced AI/LLM technology for sentiment analysis and feature extraction. Transform app store reviews into actionable insights to improve your app's success.
- π± Multi-Platform Support: Fetch reviews from both Apple App Store and Google Play Store
- π€ AI-Powered Analysis: Advanced OpenAI GPT models for sentiment analysis and insight extraction
- π Smart Categorization: Automatically categorize reviews into positive, negative, and neutral
- π Feature Extraction: Extract key features, user experiences, and improvement areas
- π Visual Analytics: Interactive charts and visualizations for comprehensive insights
- π€ User Authentication: Secure Supabase-powered authentication system
- πͺ Credit System: Pay-per-analysis credit system for authenticated users
- β‘ Real-time Updates: Live credit balance display in header
- πΎ Smart Caching: 24-hour analysis caching to prevent duplicate charges
- π¨ Modern UI: Beautiful, responsive React-based interface
- π Async Processing: Non-blocking job queue for large-scale analysis
- π± Mobile Responsive: Optimized for desktop, tablet, and mobile devices
- π High Performance: Efficient data processing and API optimization
- π Secure: JWT-based authentication and secure data handling
- Node.js (v18 or higher recommended)
- npm or yarn
- OpenAI API key (for AI analysis)
- Supabase account (for authentication and credit management)
- Supabase project URL
- Supabase anon/public key
- Supabase service role key (for backend)
- Supabase JWT secret
-
Clone the repository
git clone <repository-url> cd app-feedback-analysis
-
Install backend dependencies
npm install
-
Install frontend dependencies
cd client npm install cd ..
-
Set up environment variables
cp env.example .env
Edit
.env
and configure the required services:# OpenAI Configuration (Required) OPENAI_API_KEY=your_openai_api_key_here OPENAI_MODEL=gpt-4o # Optional: gpt-4o, gpt-4-turbo, gpt-4 # Supabase Configuration (Required for auth & credits) SUPABASE_URL=https://your-project.supabase.co SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key SUPABASE_JWT_SECRET=your_supabase_jwt_secret # Server Configuration PORT=8888 # Optional: default 8888
-
Set up Supabase database
Create the
user_credit
table in your Supabase database:CREATE TABLE user_credit ( user_id VARCHAR PRIMARY KEY, credit BIGINT DEFAULT 0, created_at TIMESTAMPTZ DEFAULT NOW() );
-
Set up frontend environment
cd client cp .env.example .env
Edit
client/.env
for React app:REACT_APP_SUPABASE_URL=https://your-project.supabase.co REACT_APP_SUPABASE_ANON_KEY=your_supabase_anon_key
Option A: Use the development script (Recommended)
chmod +x dev-start.sh
./dev-start.sh
Option B: Start manually
-
Start the backend server
node server.js
-
Start the frontend (in a new terminal)
cd client npm start
-
Access the application
- Backend API: http://localhost:8888
- Frontend: http://localhost:3000
- Proxy: The React app automatically proxies API requests to the backend
- CORS: Configured to allow React dev server connections
- Proxy: Frontend uses relative URLs that are proxied to backend
- Hot Reload: Both frontend and backend support hot reloading
-
Build the frontend
npm run build
-
Start the production server
npm start
-
Enter App ID or URL:
- Apple: numeric ID (e.g.,
284882215
) or App Store URL (e.g.,https://apps.apple.com/.../id284882215
) - Google: Android package (e.g.,
com.facebook.katana
) or Play Store URL (e.g.,https://play.google.com/store/apps/details?id=com.facebook.katana
) - The UI auto-detects the store and normalizes the ID.
- Apple: numeric ID (e.g.,
-
(Optional) Store Type: The UI switches automatically based on input; you can still choose manually.
-
Start Analysis: Click "Start Analysis". The backend triggers an async job to fetch reviews (paginated) and run AI analysis.
-
View Results: The analysis will show:
- Summary statistics (total reviews, average rating, sentiment distribution)
- Charts and visualizations
- Positive insights (features, user experiences)
- Improvement areas (issues, suggested fixes)
POST /api/jobs/analyze
- Submit analysis job (supports both authenticated & anonymous users)- Authentication: Optional (JWT Bearer token in Authorization header)
- Credit Cost: 1 credit for authenticated users, free for anonymous
- Caching: 24-hour cache prevents duplicate charges
- Request body fields:
appId
(string): Apple ID, Android package, or official store URLstoreType
(string, optional):apple
|google
|auto
(default:auto
)usePagination
(boolean, optional): defaulttrue
pageSize
(number, optional): Google per-page size (default100
)country
(string, optional): defaultus
- Note: Apple pagination is inherently capped by the source to 10 pages max.
GET /api/jobs/status/:jobId
- Check job status and progressGET /api/jobs/result/:jobId
- Get completed analysis resultsGET /api/jobs/app/:appId
- Get all jobs for an app
GET /api/credit/balance
- Get current user's credit balancePOST /api/credit/add
- Add credits to user account- Body:
{ "amount": number }
- Body:
POST /api/credit/subtract
- Subtract credits from user account- Body:
{ "amount": number }
- Body:
POST /api/credit/set
- Set user's credit to specific amount- Body:
{ "amount": number, "userId": "optional" }
- Body:
POST /api/credit/check
- Check if user has sufficient credits- Body:
{ "requiredAmount": number }
- Body:
GET /api/credit/all
- Get all users' credit balances (admin)- Query params:
?limit=50&offset=0
- Query params:
POST /api/appstore/fetch-apple
- Fetch Apple App Store reviewsPOST /api/appstore/fetch-google
- Fetch Google Play Store reviews
POST /api/analysis/analyze
- Analyze reviews using LLM (synchronous)GET /api/analysis/summary/:appId
- Get analysis summary
app-feedback-analysis/
βββ server.js # Main Express server
βββ routes/ # API route handlers
β βββ appStore.js # App store data (direct)
β βββ analysis.js # Legacy LLM analysis endpoints
β βββ jobs.js # Async job submission & status APIs
β βββ credit.js # Credit management APIs
βββ services/ # Business logic
β βββ appStoreService.js # Apple & Google review fetchers
β βββ jobService.js # In-memory job queue & processing
β βββ analysisService.js # OpenAI integration (GPT-4 configurable)
β βββ creditService.js # Credit management & Supabase integration
β βββ supabase.js # Supabase backend client
β βββ storeDetector.js # Auto-detect store from raw input/URL
β βββ db.js # SQLite database (local storage)
βββ middleware/ # Express middleware
β βββ auth.js # JWT authentication middleware
βββ data/ # Local data storage
βββ client/ # React frontend
β βββ src/
β β βββ components/ # React components
β β β βββ Header.js # Navigation with credit balance
β β β βββ Home.js # Analysis submission form
β β β βββ Analysis.js # Results visualization
β β β βββ Auth.js # Login/signup forms
β β β βββ Footer.js # Site footer
β β β βββ Privacy.js # Privacy policy
β β β βββ Terms.js # Terms of service
β β βββ lib/ # Frontend utilities
β β β βββ supabase.js # Supabase frontend client
β β β βββ creditService.js # Frontend credit API calls
β β β βββ analytics.js # Google Analytics integration
β β β βββ logger.js # Frontend logging utilities
β β βββ App.js # Main React app component
β β βββ index.js # React app entry point
β βββ public/ # Static assets
βββ env.example # Environment variables template
βββ dev-start.sh # Development startup script
βββ restart-dev.sh # Development restart script
βββ package.json # Dependencies and scripts
- Top Features: Most mentioned features users love
- User Experiences: Positive user experiences and satisfaction points
- Strength Highlights: What makes the app stand out
- Top Issues: Most common problems users face
- Critical Problems: Issues that need immediate attention
- Suggested Improvements: Actionable solutions with priority levels
- Apple reviews via
app-store-scraper
(paginated, up to 10 pages; ~50 reviews per page) - Google reviews via
google-play-scraper
withnextPaginationToken
- Saves each page to
/data/{appId}_{store}_reviews_page_{n}.json
and an aggregated/data/{appId}_{store}_reviews_all.json
- Uses OpenAI GPT models (default: GPTβ4o)
- Configure via
OPENAI_MODEL
env var (e.g.,gpt-4o
,gpt-4-turbo
,gpt-4
) - Structured prompts return strict JSON for easy parsing
- Saves reviews and analysis results locally in JSON format
- Organized by app ID and store type
- Persistent storage for historical analysis
-
Puppeteer Installation
# If you encounter Puppeteer issues on macOS npm install puppeteer --unsafe-perm=true
-
OpenAI API Errors
- Ensure your API key is valid and has sufficient credits
- Check the API rate limits
-
App Store Access Issues
- Some apps may have limited review access
- Try different app IDs for testing
- Apple caps pages to 10; plan accordingly (β up to ~500 recent reviews)
- Google supports deeper pagination via tokens; adjust
pageSize
as needed - Keep
OPENAI_MODEL
choice in mind for cost/latency tradeoffs
- Free Tier: Anonymous users can perform free analysis with basic features
- Authenticated Users: Pay-per-analysis credit system (1 credit = 1 analysis)
- Smart Caching: Analyses are cached for 24 hours to prevent duplicate charges
- Credit Management: Full API for adding, subtracting, and managing credits
- Supabase Integration: Secure, scalable authentication system
- JWT Tokens: Industry-standard authentication tokens
- User Profiles: Email-based user accounts with secure password handling
- Session Management: Persistent sessions with automatic token refresh
- Transparent: 1 credit per analysis for authenticated users
- Fair Usage: Anonymous users can test the platform for free
- No Hidden Costs: Clear credit deduction before analysis starts
- Cache Optimization: Repeated analysis within 24 hours uses cache (no charge)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Add tests if applicable
- Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Submit a pull request
MIT License - see LICENSE file for details
- π Website: AppReview.ai
- π§ Issues: For technical issues, please open an issue on the GitHub repository
- π Documentation: This README contains comprehensive setup and usage instructions
- π Feature Requests: Submit feature requests through GitHub issues
Built with β€οΈ by the AppReview.ai Team
Transform your app store reviews into actionable insights with the power of AI.