चलचित्रAdmin

Projection Booth

Sign in with an administrator account

चलचित्रAdmin

Now Screening

Users

Loading…

Actions

No users yet.

Front of House

Notices

Announcements shown when the app opens. Keep as many as you like; one is live at a time, and turning another one on takes its place. Editing the words does not reopen the popup on phones that already showed it — tick Show it again for that. Needs app 3.0.

    No notices yet. Write the first one below.

    New notice

    English

    हिंदी optional

    0 launches means every launch until you switch it off — for something nobody may miss, not for shouting.

    Super Admin Only

    Broadcasts

    Broadcasts source

    The live-TV channel API this list is fetched from. Enabling or disabling a channel below only changes what we consider it to be — it never writes anything back upstream.

    Broadcasts: OFF

    Every enabled channel's streams are checked every 30 minutes. A server that fails is left out of the app, and a channel whose servers all fail is hidden until a later check finds one working. A channel's Enable setting is never changed.

    Loading…

    Broadcasts are OFF — no channel is live, whatever its own setting. Channel settings below are kept for when you turn it back on.

    0 selected

    No broadcasts upstream right now.

      Projection Booth

      Settings

      What people see when they open चलचित्र.

      Maintenance mode

      Shows a plain screen instead of the catalogue, for when the thing the app depends on is broken and every other screen would only show errors. The API keeps answering, so you can still check whether it is fixed. Give an end time and the app counts down to it and lets people back in by itself. Needs app 3.0.

      Force update

      Apps older than the minimum version are blocked: they see the update screen at launch (3.2 and later read it from here), and every API call they make is answered with 426 and the download link. Leave it empty for no forced update. Apps up to 3.1 still read Firestore's android_min_version, so change both with set-min-version.sh. Never raise it above a version users can install over their current one. Goes live on save.

      Support links: Telegram and WhatsApp

      Telegram is shown as a "Join on Telegram" button on the install page; both links appear in the app's Support section, on the Home footer and on playback errors. Leave a field empty to hide that link. The page reads a cached copy: Save stores the link, Publish makes it live.

      What a new account gets, and what inviting a friend is worth.

      Set everyone's expiry

      Moves every subscription to one date in a single change. Accounts do not all sit together — some run much longer than others because the trial length has changed over time — so check the preview before applying: Extend only never takes time away, while Make them all the same will shorten anyone currently running past the date.

      Free trial on signup

      Every new account gets this many days of active subscription, then it expires on its own. Set to 0 to turn the trial off — new accounts start inactive. Applies to signups from now on; existing accounts are unaffected.

      How many accounts created from one phone get the trial. 1 is the classic rule: only the first account on a phone. 0 means no limit, every new account gets it. Needs app 2.4 or newer on the phone; older apps send no device id and get no trial while a limit is set.

      Referral programme

      Every user has a referral code (shown in the app). When someone signs up for the first time on their phone with a friend's code, both get bonus days: a running plan is extended, an ended one is switched back on. A phone that already had an account earns nothing.

      The two social buttons on the welcome screen.

      Sign in with Google and Telegram

      Both are off until these are filled in. The Google client ID is the Web client ID from Google Cloud Console (APIs & Services → Credentials); the Android client must be registered there too, with the app's signing SHA-1, but it is the Web client ID that goes here. The Telegram client ID is the number BotFather shows under the bot's Login Widget section; Telegram ID tokens are checked against it. Neither value is a secret. Clear a field to switch that button off.

      Where the catalogue comes from and how the server looks after itself.

      Content source (native app)

      Where the app's catalogue comes from. Change these only when the site moves: a wrong value breaks browsing and playback for every user within minutes. Empty a field and save to return to the built-in default.

      Share feed API key

      The key the Telegram channel automation sends to /api/share/lists and /api/share/feed (as ?key= or the X-Share-Key header). Empty means the feed is off. Generating a new key stops the old one at once, so hand the new one over before you do.

      Video CDN referer

      The Referer the app sends when it fetches video. The content site changes this without notice; when it does, every video in the app stops loading at once (HTTP 429). The server checks this every ten minutes against a real video link and, if the CDN has stopped accepting it, switches to the origin the site's own player now sends. You can also change it by hand; the app picks it up on its next launch. Leave empty to use the built-in default.

      Playback check

      Every half hour the server takes eight titles from the Hindi home screen and walks the app's own path for each — detail, the episode Play would open, then the stream — and records what came back. A title the site has broken shows here as a red line, so you know before a viewer tells you. It only reports; nothing is changed automatically.

        App code updates (OTA)

        JavaScript fixes published with app/ota.sh. Each installed app runs the newest entry for its own APK version, picked up silently on its next launch. To roll back, make an older entry current: it is re-listed under a new number and phones return to it on their next launch. Nothing here changes native code — that is still a release.

          Usage reporting

          How often a phone may send how long it was used and how much was watched. The app sends only when it comes to the foreground, so this is a ceiling, not a schedule: a phone in a pocket sends nothing, and one that is playing tries every 5 minutes. 15 minutes keeps the dashboard close to live; a larger number means fewer, bigger sends. 0 turns the reporting off. Between 5 and 10080 (a week). Phones on app 2.10 and older only understand hours, so for them it is rounded up to whole hours.

          Offline downloads

          The phone enforces all three. A change reaches phones after Refresh on the public config card below. Expiry is stamped when a download finishes; lowering it does not delete what people already hold.

          Request signing

          Checks that API calls come from the app: a signature under the key built into the APK, and, for signed-in calls, one under the phone's own device key. Log checks and counts but refuses nothing. Enforce refuses unsigned or wrongly signed calls with 401 — switch to it only once the signing release has been forced with android_min_version and the counts below show the traffic is signed, or every older app is locked out. Off checks nothing. Counts reset when the server restarts.

              Database backup

              Once a day (and at startup) the server takes a consistent copy of the database, gzips it, and uploads it to a Google Drive folder as chalchitra-YYYY-MM-DD.db.gz, keeping the last 30 days. Create a Google Cloud service account with the Drive API enabled, put its JSON key on the server (inside /opt/chalchitra), and share the Drive folder with the service account's email as Editor. Empty either field and backups stop. The key itself is never shown or stored here — only its path.

              User details

              Email
              Signs in with
              Role
              Subscription
              Joined
              Expires
              Activated by
              App time
              —
              Watch time
              —
              Account ID

              Last 14 days

              Loading…

              DayAppWatch

              Devices

              Phones this account's sessions are bound to (request signing). Revoking one stops its tokens at once in enforce mode and ends its refresh sessions; signing in again on that phone binds it afresh.

              DeviceModelAppKeyLast seen

              Box Office

              Dashboard

              Loading…

              Accounts

              Total users

              —

              Active

              —

              Inactive

              —

              Admins

              —

              Usage

              Counted by the app and sent once a day. Needs app 3.0 on the phone.

              Used the app · 7 days

              —

              Watched yesterday

              —

              Watched · 14 days

              —

              People who opened the app — last 14 days

              Distinct accounts per day, excluding the super admin. Counted by the app and sent once a day, so yesterday is the last full day.

              Average watch time — last 14 days

              Minutes per person, averaged over the people who watched something that day — not over everyone who opened the app.

              Hours watched — last 14 days

              Everyone's watching added together. It climbs as the user base grows, so read it beside the average above rather than on its own. Counted by the app and sent once a day, so yesterday is the last full day.

              New signups — last 14 days

              Expiring within 7 days

              Nothing expiring this week.

              Recent sign-in attempts (IST)

              No sign-in attempts recorded yet.

              Password reset

              Share this temporary password with the user. It won't be shown again.

              Edit user

              This is the super admin account — its admin access can't be revoked here.

              Add user

              Only the super admin can grant admin access.