Feature Requests
Feature Requests
WayPresenter includes a built-in feature request system that allows users to submit, vote on, and track feature requests directly from the application.
Overview
- User Submissions: Submit feature requests directly from the app
- Email Notifications: Admins receive email notifications for new requests
- Voting System: Users can vote on submitted requests
- Status Tracking: Track request status through completion
- Admin Controls: Admins can update request status
- Beautiful UI: Modern form design with validation
Features
1. Submit Feature Requests
Access: Feature Request button in the app
How to Use:
- Click the "Request a Feature" button
- Sign in with your WayPresenter account (required)
- Fill out the form:
- Title (required, min 5 characters): Brief description
- Category (optional): Presentation, Bible, Media, AI, or General
- Description (required, min 10 characters): Detailed explanation
- Click "Submit Request"
- Receive confirmation when successfully submitted
Form Features:
- Real-time character counts (title: 255 max, description: 5000 max)
- Form validation with helpful error messages
- Auto-categorization for better organization
- Success notification after submission
2. View Feature Requests
Access: Browse all feature requests from the app
Available Filters:
- By Status: Open, Under Review, Planned, In Progress, Completed, Declined
- By Category: Presentation, Bible, Media, AI, General
- By Popularity: Most voted requests first
- Pagination: Browse through requests
Request Information:
- Title and description
- Category badge
- Status badge (color-coded)
- Vote count
- Submission date
- Whether you've voted
3. Vote on Feature Requests
Access: Vote button on each feature request
How to Use:
- Sign in to your WayPresenter account
- Browse feature requests
- Click vote button on requests you want
- Button toggles your vote on/off
Voting Details:
- One vote per user per request
- Can change your vote by clicking again
- Vote count displays total votes
- Popular requests get priority
4. Admin Controls (Admins Only)
Access: Admin dropdown on feature requests
Available Actions:
- View All Requests: See all submitted requests
- Update Status: Change request status
- Review Details: Full request information with user data
Status Workflow:
- Open - New requests (default)
- Under Review - Being evaluated
- Planned - Approved for future release
- In Progress - Currently being developed
- Completed - Feature has been released
- Declined - Request not feasible
Email Notifications
Admin Notification
When: Immediately after a user submits a feature request
Recipients: Configured admin email addresses
Email Contents:
Subject: [WayPresenter] New Feature Request: [Title]
🚀 New Feature Request
A new feature request has been submitted by a user:
Title: [Request Title]
Category: [Category Badge]
Status: Open
Description:
[Full description]
Votes: 0
Submitted: [Date & Time]
Submitted by:
- Username: [username]
- Email: [user@email.com]
[View Feature Request button]
Configuration:
- Set admin email in
.env:FEATURE_REQUEST_ADMIN_EMAIL=admin@yourdomain.com - Multiple admins: Separate with commas
- Can be disabled: Set to empty or
FEATURE_REQUEST_NOTIFICATIONS_ENABLED=false
Notification Settings:
- Non-blocking (doesn't prevent request submission)
- Comprehensive error logging
- Graceful handling of email failures
API Endpoints
Public Endpoints
Create Feature Request
POST /api/v1/feature-requests
Authentication: Required (JWT token)
Request Body:
{
"title": "Dark mode support",
"description": "Please add dark mode to reduce eye strain",
"category": "general"
}
Response (201 Created):
{
"success": true,
"data": {
"id": 123,
"title": "Dark mode support",
"description": "Please add dark mode to reduce eye strain",
"category": "general",
"status": "open",
"votes_count": 0,
"created_at": "2026-04-05T12:00:00Z"
}
}
List Feature Requests
GET /api/v1/feature-requests
Query Parameters:
status(optional): Filter by statuscategory(optional): Filter by categorysort(optional): "latest" or "popular"page(optional): Page number
Response:
{
"success": true,
"data": {
"requests": [...],
"total": 42,
"page": 1,
"per_page": 20
}
}
Get Specific Feature Request
GET /api/v1/feature-requests/{id}
Response: Full request details with voting status
Vote on Feature Request
POST /api/v1/feature-requests/{id}/vote
Authentication: Required
Response:
{
"success": true,
"data": {
"voted": true,
"votes_count": 1
}
}
Admin Endpoints
Update Feature Request Status
PUT /api/v1/feature-requests/{id}/status
Authentication: Required + Admin role
Request Body:
{
"status": "planned"
}
Valid Status Values:
openunder-reviewplannedin-progresscompleteddeclined
Sync Users to Brevo Mailing List
POST /api/v1/auth/brevo/sync-users
Note: Brevo integration removed. Only SendGrid is active for email marketing.
Request Categories
Presentation
Features related to presentation creation, management, and display:
- Slide transitions
- Presentation templates
- Export options
- Multi-screen support
Bible
Features related to Bible content:
- Bible translations
- Scripture search
- Verse formatting
- Bible integration
Media
Features related to media handling:
- Video playback
- Image management
- Audio support
- Media library organization
AI Features
Features related to artificial intelligence:
- Speech recognition
- AI detection
- Smart suggestions
- Automation tools
General
Features that don't fit in other categories:
- User interface improvements
- Settings options
- Performance enhancements
- Documentation
Response Times
Typical response times for API calls:
| Operation | Time |
|---|---|
| Submit request | < 1 second |
| View requests | < 500ms |
| Cast vote | < 300ms |
| Update status | < 500ms |
| Email notification | < 2 seconds |
Rate Limits
API endpoints may have rate limits to prevent abuse:
- Submit requests: 5 per hour per user
- Vote: 60 per hour per user
- View requests: 120 per hour
- Status updates: 30 per hour (admin)
Guidelines for Submitting Requests
Best Practices
Do:
- ✅ Search existing requests first to avoid duplicates
- ✅ Be specific and descriptive
- ✅ Explain the use case and benefit
- ✅ Choose appropriate category
- ✅ Vote on existing requests you want
Don't:
- ❌ Submit vague requests like "Make it better"
- ❌ Submit the same request multiple times
- ❌ Use offensive or inappropriate language
- ❌ Submit requests for bugs (use issue tracker instead)
Request Title Tips
Good Titles:
- ✅ "Add dark mode theme support"
- ✅ "Export presentations to PDF"
- ✅ "Bible verse numbering options"
Poor Titles:
- ❌ "Feature request"
- ❌ "I have an idea"
- ❌ "Help me"
Description Tips
Good Descriptions:
Add a dark mode theme that reduces eye strain during evening
presentations. Should invert colors automatically based on
presentation theme and be toggleable from the toolbar.
When exporting presentations to PDF, preserve the original formatting
including custom fonts, background images, and text positioning. Add option
to include or exclude speaker notes.
Poor Descriptions:
- ❌ "Make it better"
- ❌ "Fix the thing"
- ❌ "Add feature X" (without explanation)
Request Lifecycle
1. Submission
- Status: Open
- Admins receive email notification
- Available for voting
2. Review
- Status: Under Review → Planned or Declined
- Admin team evaluates requests
- Based on votes, feasibility, and roadmap alignment
3. Development
- Status: In Progress → Completed
- Development work happens
- Users can track progress
4. Release
- Status: Completed
- Feature is released
- Users can use new functionality
5. Closure
- Status: Declined
- Request will not be implemented
- Reason may be provided
- No further action
Voting System
How Votes Work
- One vote per user per request
- Revocable: Click again to remove vote
- Anonymous to others: Only vote count is public
- Weight: Popular requests get priority
Vote Count Display
- Shows total votes from all users
- Updates in real-time
- Visible in list view and detail view
- Influences roadmap priorities
Vote Indicators
On Your Requests:
- Badge shows if you've voted
- Vote button shows current state (on/off)
On Others' Requests:
- Vote count shows total votes
- No indication of how you voted
Admin Tools
User Management
Admins can view all users:
GET /admin/users
Response:
{
"success": true,
"users": [
{
"id": 1,
"username": "john_doe",
"email": "john@example.com",
"role": "user",
"is_active": true,
"created_at": "2026-04-01T12:00:00Z"
}
]
}
Bulk Sync Operations
SendGrid Sync (Active):
POST /auth/sendgrid/sync-users
- Add all active users to mailing list
- Admin-only endpoint
- Non-blocking (email failures don't break sync)
Troubleshooting
Issue: Cannot Submit Feature Request
Check 1: Are you signed in?
- Feature requests require authentication
- Sign in via SSO to submit requests
Check 2: Validation errors?
- Title: Minimum 5 characters
- Description: Minimum 10 characters
- Both fields are required
Check 3: Network connection?
- Check internet connection
- Verify API URL is correct
- Check console for errors
Issue: Not Receiving Email Notifications
Check 1: Is admin email configured?
grep FEATURE_REQUEST_ADMIN_EMAIL .env
Check 2: Notifications enabled?
grep FEATURE_REQUEST_NOTIFICATIONS_ENABLED .env
Check 3: Email server status?
- Check logs:
storage/logs/laravel.log - Verify email configuration in
config/mail.php - Test mail configuration
Issue: Vote Not Registering
Check 1: Authentication status
- Must be signed in to vote
- Check if token is valid
Check 2: Already voted?
- Toggle button shows current state
- Orange = voted, gray slash = not voted
Check 3: Network error?
- Check console for errors
- Verify API connection
- Try refreshing the page
Security Considerations
User Privacy
- ✅ Email addresses not displayed publicly
- ✅ Only username shown to other users
- ✅ Admin-only access to user details
- ✅ Email addresses logged securely
Data Validation
- ✅ Input sanitization on all fields
- ✅ Length limits enforced
- ✅ Type checking for enum values
- ✅ SQL injection protection
Rate Limiting
- ✅ API endpoints rate-limited
- ✅ Prevents spam and abuse
- ✅ Fair resource allocation
Access Control
- ✅ Authentication required for most actions
- ✅ Admin endpoints require admin role
- ✅ JWT token validation
- ✅ Role-based permissions
Future Enhancements
Planned improvements to the feature request system:
-
Email Notifications for Users
- Notify when status changes
- Email when request is completed
- Digest emails of popular requests
-
Comment System
- Users can comment on requests
- Admin can respond
- Discussion threads
-
Duplicate Detection
- Automatic duplicate request detection
- Suggest existing similar requests
- Merge duplicate votes
-
Request Categories
- Add more granular categories
- Sub-categories within main categories
- Tag system for cross-category requests
-
Search & Filters
- Full-text search
- Advanced filtering options
- Save search queries
-
Request History
- View your past requests
- Track vote history
- See status changes over time
-
Email Preferences
- Opt-in for email notifications
- Choose notification types
- Frequency preferences
Related Features
- User Authentication: SSO-based login system
- User Profiles: Account management
- Admin Dashboard: User and content management
- Analytics: Track signup and usage metrics
- Email Marketing: SendGrid integration for user onboarding
API Documentation
For complete API documentation, see:
Summary
The feature request system provides:
- ✅ Easy user submission from within the app
- ✅ Community voting on feature priorities
- ✅ Email notifications for admins
- ✅ Status tracking through development
- ✅ Admin tools for request management
- ✅ Modern, user-friendly interface
This system helps shape the future of WayPresenter by gathering community feedback and prioritizing features that matter most to users.