Activity

krvikrantsingh51

Shipped this project!

I have built a cross-platform tuition/coaching management app built with Expo and Firebase. It runs on Web, Android, and iOS and is designed for small coaching centers and independent tutors who need a straightforward way to manage their classes without heavy software.

I’ve been building this as a solo project for a while to simplify the everyday admin work that tutors usually handle through notebooks, spreadsheets, or scattered messages. It helps a teacher/admin manage students, attendance, fees, and parent communication from one place.

krvikrantsingh51

Implemented reviewer quick join feature with auto-approval and UI integration in both the login page and the Membership Manager Overlay with backend support so that flavourtown reviewers can easily test out the app

Attachment
0
krvikrantsingh51

Added wake lock for Android native push delivery ack + detailed logging
Implemented a true native client-ack path for Android terminated-app cases, without server-side guessing
added lightweight delivered-receipt telemetry counters and wired them into the retry pipeline
Added a reliability layer so delivered ticks no longer depend on a single immediate receipt call succeeding

Attachment
0
krvikrantsingh51

⁠Introduced AsyncStorage for persistent storage of pending receipts and telemetry data.
Implemented retry logic for syncing delivery receipts with exponential backoff
Added iOS-side native ack outcome logging plus persistent counters inside the notification service extension
Implemented the iOS native receipt path too, so iOS can ack delivery from a Notification Service Extension even when the app process is not running

Attachment
0
krvikrantsingh51

Added iOS notification service extension for chat delivery receipts

  • Implemented NotificationService to handle incoming notifications and send delivery acknowledgments.
  • Created Info.plist for the new XPC service.
  • Developed chatReceiptSync service to manage pending delivery receipts and telemetry.
  • Added notificationBackgroundTask service to process background notifications and confirm chat delivery.
Attachment
0
krvikrantsingh51

Enhanced the tick system in the chat page

  • Message will no longer double-tick immediately from stale online state.
  • Delivery tick will appear only after actual confirmation/receipt events happen.
  • Logging out now clears the full web-push footprint, including webPushVapidPublicKey and related web-push metadata, so logged-out devices are fully detached from web push delivery.
  • There was a issue and its fixed now. Signed-out devices no longer receive notifications on web or mobile
Attachment
0
krvikrantsingh51

Enhanced device tracking and notification delivery

  • Added new fields to UserDevice interface for session management and tracking.
  • Implemented logic to determine if a device can receive notifications based on its status and session activity.
  • Introduced detailed notification delivery results, including counts for successful and failed deliveries.
  • Enhanced cleanup of stale web push subscriptions to improve notification reliability.
  • Updated notification sending methods to return detailed results, including delivery sources and counts.
Attachment
0
krvikrantsingh51

Enhanced device tracking and notification delivery

  • Added sessionActive and lastTenantPingAt fields to UserDevice interface.
  • Introduced DeviceNotificationAttemptResult and DeviceNotificationFanoutResult interfaces for detailed notification delivery results.
  • Updated notification sending methods to return detailed results including delivery sources and counts for successful notifications.
  • Added tests for chat receipt synchronization and outbound delivery confirmation.
  • Created chatReceiptState utility functions for managing unread counts and refresh logic based on app state.
Attachment
0
krvikrantsingh51

Implemented web push notifications and service worker for enhanced user engagement

  • Added web push notification support in notificationService.ts, including handling of duplicate notifications and improved notification payload structure.
  • Introduced a new webPush.ts module for managing web push subscriptions and sending notifications.
  • Created a service worker (service-worker.js) to handle push events, notification display, and client navigation.
  • Updated quotesService.ts to remove web-specific notification scheduling, consolidating quote delivery to backend only.
  • Enhanced notification handling logic to support deep linking and improved user experience across platforms.
Attachment
0
krvikrantsingh51

Enhance reminder quota management and usage refresh functionality

  • Implemented loadTenantReminderQuotaState to fetch and normalize reminder quota state.
  • Added releaseTenantReminderReservationTokenIfAvailable to manage reservation tokens.
  • Updated reminder batch send logic to handle existing history and expired reservations.
  • Introduced usage refresh request deduplication to prevent multiple requests for the same tenant/month.
  • Enhanced tests for reminders batch send and usage billing endpoints to cover new functionality.
  • Updated cloud run job configurations for improved resource management and environment variable handling.
  • Modified ReminderHistoryViewer to improve refresh logic and removed debug logging.
  • Added new fields to UsageSummaryResponse for in-flight and reserved counts, along with effective usage metrics.
Attachment
0
krvikrantsingh51

Add push notification support for usage alerts

  • Integrated push notification functionality into the usage alert notifier.
  • Updated tenant admin contacts to include push notification preferences.
  • Enhanced the notifyUsageAlert function to handle push notifications.
  • Implemented device management for push notifications, including validation and delivery.
  • Added UI components for managing usage alert preferences in TenantUsageSummary.
  • Updated Firebase Firestore structure to accommodate new notification preferences.
  • Created a cleanup script for managing disabled email alerts in usage alerts.
  • Introduced a new job for reconciling Google Play billing.
Attachment
0
krvikrantsingh51

Shipped this project!

Hours: 39.82
Cookies: 🍪 719
Multiplier: 18.06 cookies/hr

I built a Cross-platform tuition/coaching management app (web + iOS + Android) built with Expo and Firebase. It helps a teacher/admin manage students, attendance, fees, and parent communication from one place.

krvikrantsingh51

Enhance receipt upload functionality with improved file handling and drag-and-drop support

  • Added state management for skipped receipt files and improved file identity checks.
  • Implemented drag-and-drop functionality for receipt uploads on web platforms.
  • Enhanced user feedback for skipped files, including categories for duplicates, oversized files, and unsupported formats.
  • Refactored file selection logic to streamline the addition of new files and handle duplicates more effectively.
  • Updated UI to display skipped files with detailed categorization.
  • Improved modal state management for receipt uploads.

fix: Adjust VideoPlayer component styles for better responsiveness

  • Set width constraints for the VideoPlayer component to ensure proper display across different screen sizes.
Attachment
0
krvikrantsingh51

Enhance file viewer components with download progress tracking

  • Added download progress tracking to FileViewer, PdfViewer, VideoPlayer, and associated components.
  • Introduced useDownloadState hook to manage download states across components.
  • Implemented downloadFileWithProgress utility function for handling file downloads with progress reporting.
  • Updated UI to reflect download progress in buttons and modals for better user experience.
  • Created downloadStateStore and messageUiStateStore for managing download and message UI states.
  • Added new hooks for managing message UI state and download state subscriptions.
Attachment
0
krvikrantsingh51

feat(billing): enhance Razorpay subscription handling and invoice management

  • Removed unnecessary start_at parameter in createRazorpaySubscription function.
  • Improved invoice resolution logic in handleRazorpayWebhook to prevent duplicates.
  • Added hasPaidInvoiceForSubscriptionCycle function to check for existing paid invoices.
  • Updated invoice creation logic to handle subscription events more effectively.
  • Introduced timeZone support in invoice PDF generation for accurate date formatting.
  • Added tests for billing cancellation policies and Razorpay invoice deduplication.
  • Enhanced error handling and logging for invoice write failures.
Attachment
0
krvikrantsingh51

Refactor billing cancellation logic and improve Razorpay integration

  • Updated verifyRazorpayWebhookSignature to accept rawBody as Buffer for better handling.
  • Enhanced error handling in cancelRazorpaySubscription to treat specific cancellation errors as successful.
  • Introduced failInvoicesByDocs function to streamline invoice failure marking.
  • Improved candidate selection logic in runBillingAutoCancelStalePending to handle stale invoices more effectively.
  • Removed deprecated tests related to cancelled downgrades and adjusted related assertions.
  • Updated billing service to remove unnecessary cancellation response interface and method.
  • Added email backend configuration to Cloud Run job for notification purposes.
  • Cleaned up billing change descriptions to remove unused downgrade cancellation logic.
Attachment
0
krvikrantsingh51

Added notice reaction emoji catalog and store

•⁠ ⁠Introduced ⁠ noticeReactionEmojiCatalog.ts ⁠ to define emoji categories and items for user reactions.
•⁠ ⁠Implemented ⁠ noticeReactionEmojiStore.ts ⁠ for managing recent and custom emoji storage using AsyncStorage.
•⁠ ⁠Created ⁠ pwa.ts ⁠ for handling PWA service worker registration and meta tag management.
•⁠ ⁠Developed ⁠ sharedFileService.ts ⁠ for managing shared file links, including caching and token generation.

Attachment
0
krvikrantsingh51
  • Implemented Progressive Web App (PWA) capabilities to enable web app installation
  • Added offline support with service worker caching strategies
  • Created user-facing install prompt for seamless app installation experience
  • Improved installability reliability (proper icon sizes + manual-install fallback when browsers suppress beforeinstallprompt)
Attachment
0