-
Notifications
You must be signed in to change notification settings - Fork 2
FEATURE_REQUEST
github-actions[bot] edited this page Jun 2, 2026
·
1 revision
This document has moved. See docs/user-tickets/README.md for the current documentation. See docs/user-tickets/SETUP.md for the integration guide.
com.mobilebytesensei:kmptoolkit:1.0.0
A complete feature request and wishlist system. Users can submit feature requests, browse existing requests, upvote ideas, and see implemented features with resolution notes.
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Feature Wishlist + │ │ Request a Feature │ │ Feature │
│ │ │ │ │ │
│ [Requested][Implement]│ │ What's your idea? │ │ 💡 New app icons │
│ │ │ ┌──────────────────┐ │ │ ▲ │
│ ┌───────────────────┐ │ │ │ │ │ │ [Requested] 3 │
│ │ Download queue │ │ │ └──────────────────┘ │ │ ─────────────────── │
│ │ [Requested] ▲2 │ │ │ │ │ │
│ └───────────────────┘ │ │ Tell us more │ │ Feature details │
│ ┌───────────────────┐ │ │ ┌──────────────────┐ │ │ │
│ │ Dark mode │ │ │ │ │ │ │ I would love to... │
│ │ [Planned] ▲5 │ │ │ │ │ │ │ │
│ └───────────────────┘ │ │ └──────────────────┘ │ │ │
│ │ │ │ │ [ Close ] │
│ [+ Submit Request] │ │ [ Submit Request ] │ │ │
└──────────────────────┘ └──────────────────────┘ └──────────────────────┘
Wishlist Screen Submit Form Detail + Upvote
- Feature Wishlist — Two tabs: Requested & Implemented
- Submit Request — Title, description, category chips (💡 New Feature, 🎨 UI/Design, ⚡ Performance, ⬇️ Download, 🐛 Bug Fix), optional email
- Feature Detail — Full description with upvote button
- Upvote — Atomic increment via Supabase RPC
-
Multi-app —
productTypefilter lets all apps share one table - Status badges — Requested, In Review, Planned, Shipped
- Resolution — Shows how implemented features were resolved
// gradle/libs.versions.toml
[versions]
kmptoolkit = "1.0.0"
[libraries]
kmptoolkit = { module = "com.mobilebytesensei:kmptoolkit", version.ref = "kmptoolkit" }// build.gradle.kts
commonMain.dependencies {
implementation(libs.kmptoolkit)
}Run in your shared Supabase project's SQL Editor:
CREATE TABLE feature_requests (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
product_type TEXT NOT NULL,
title TEXT NOT NULL,
description TEXT NOT NULL,
category TEXT DEFAULT 'general',
status TEXT DEFAULT 'pending',
resolution TEXT,
user_email TEXT,
device_info TEXT,
upvotes INT DEFAULT 0,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX idx_feature_requests_product ON feature_requests(product_type);
ALTER TABLE feature_requests ENABLE ROW LEVEL SECURITY;
CREATE POLICY "Anyone can submit" ON feature_requests FOR INSERT WITH CHECK (true);
CREATE POLICY "Anyone can read" ON feature_requests FOR SELECT USING (true);
-- Upvote RPC (atomic increment)
CREATE OR REPLACE FUNCTION upvote_feature(feature_id UUID)
RETURNS void LANGUAGE plpgsql SECURITY DEFINER AS $$
BEGIN
UPDATE feature_requests SET upvotes = upvotes + 1, updated_at = NOW() WHERE id = feature_id;
END;
$$;// App startup (Application.onCreate or Koin module)
FeatureRequestConfig.init(
supabaseUrl = "https://your-project.supabase.co",
supabaseAnonKey = "your-anon-key",
productType = "your_app_name",
)import com.mobilebytesensei.featurerequest.di.featureRequestModule
modules(featureRequestModule)import com.mobilebytesensei.featurerequest.ui.featureWishlistDestination
import com.mobilebytesensei.featurerequest.ui.navigateToFeatureWishlist
// In NavHost
featureWishlistDestination(onBackClick = navController::popBackStack)
// Navigate from anywhere
navController.navigateToFeatureWishlist()All apps write to the same feature_requests table, filtered by product_type:
| App | productType |
|---|---|
| Reels Downloader | reels_downloader |
| Byte Wallpaper | wallpaper |
| Mood Movies | mood_movies |
com.mobilebytesensei.featurerequest/
├── FeatureRequestConfig.kt # Configuration
├── model/
│ └── FeatureRequest.kt # Data classes
├── network/
│ ├── FeatureRequestClient.kt # Supabase client
│ └── FeatureRequestService.kt # Submit, list, upvote
├── data/
│ └── FeatureRequestRepository.kt # Business logic
├── di/
│ └── FeatureRequestModule.kt # Koin DI
└── ui/
├── FeatureWishlistScreen.kt # Main screen (tabs + list + detail)
├── FeatureWishlistViewModel.kt # State management
├── FeatureWishlistNavigation.kt # Nav destination
└── RequestFeatureScreen.kt # Submit form
** Partials**
App Intents
Bubble
Clipboard
Cookbook
- Clipboard Copy Text
- Clipboard Read Text
- Consumer Anon Key Setup
- Crashlytics Attribution Per Library
- Ifonline Block
- Index
- Index
- Index
- Index
- Open Url Compose
- Pick And Share Image
- React To Offline
- Register Firebase Hooks
- Share Pdf Android
- Share Text
- Wifi Vs Cellular
Firebase Analytics
In App Update
Intent Launcher
Inter App Comms
Modules
- Cmp App Intents
- Cmp App Intents Compose
- Cmp Bubble
- Cmp Clipboard
- Cmp Deep Link
- Cmp Firebase Analytics
- Cmp In App Update
- Cmp Intent Launcher
- Cmp Intent Launcher Compose
- Cmp Library
- Cmp Network Monitor
- Cmp Network Monitor Compose
- Cmp Observe
- Cmp Observe Koin
- Cmp Open Url
- Cmp Pdf Generator
- Cmp Product Tickets
- Cmp Remote Config
- Cmp Share
- Cmp Share Compose
- Cmp Toast
Network Monitor
Open Url
Pdf Generator
Remote Config
Share
Toast
User Tickets
General