Hey r/androiddev! 👋

I’ve been building ChikiChat, a native Android social media application (written in Kotlin) with its own custom Node.js backend. The app handles real-time messaging, a social feed ("Circles"), user profiles, custom media sharing, and video streaming.

Up to this point, I’ve been running the backend locally on a laptop acting as a server, exposing it using ngrok. However, I’ve hit a architectural wall and I'm moving away from ngrok. I wanted to share why local/ngrok doesn't cut it anymore for this kind of app and see how others would approach the cloud migration given my constraints.

🏗️ What ChikiChat's Backend Actually Does:

Unlike a simple CRUD app, ChikiChat's server (server.js) handles workloads that require a permanent, stable infrastructure:

  1. HTTP 206 Partial Content Video Streaming: To make heavy videos load instantly and support smooth seeking (jumping back and forth on the timeline) without crashing the app, the server implements custom byte-range chunk streaming.
  2. State & File Persistence: The backend manages local JSON-based state databases (usuarios.json, mensajes.json, publicaciones.json, relaciones.json) and a local file storage directory (uploads/) for profile pictures, compressed images, and video posts.
  3. Push Notifications & Background Sync: It integrates Firebase Admin SDK (serviceAccountKey.json) to trigger FCM background notifications when a message or interaction occurs.
❌ Why ngrok & Localhost is a Bottleneck for ChikiChat:
  • Tunnel Expiration & URL Changes: Every time the tunnel restarts or the session expires, hardcoded URLs break unless managed dynamically.
  • Uptime Dependency: Keeping a laptop running 24/7 as a home server introduces risks with power outages, Wi-Fi drops, and thermal throttling.
  • Network Overhead for Media: Streaming video chunks through a free ngrok tunnel introduces noticeable latency and throttling under poor mobile network conditions.
💡 The Cloud Dilemma & Constraints:

I’m looking to migrate this backend to a cloud environment, but I’ve faced a major roadblock: Cloud providers like Oracle Cloud (Always Free) rejected my identity verification due to banking/credit card constraints.

Because of this, I need a reliable, free, or low-cost cloud strategy where:

  • The server remains active 24/7 without shutting down unpredictably.
  • Data isn't lost on restart (ephemeral filesystems wiping the uploads/ folder or JSON databases).

How would you architect or deploy a Node.js backend with local file/JSON dependencies without hitting credit card paywalls? Are you using reverse proxies like Cloudflare Tunnels on a dedicated home rig, or migrating the JSON/uploads structure to a hybrid cloud setup (like Supabase + Cloudinary)?

Would love to hear your thoughts or how you've solved similar self-hosted vs. cloud dilemmas for indie Android projects!

submitted by /u/Huge_Profession_1697
[link] [comments]