Skip to content

Discussion: Should DeepTutor become installable apps? #592

Description

@ZhouJ-sh

Context

DeepTutor is already an agent-native learning companion with a Python/FastAPI backend and a Next/React web frontend. Before starting a large iOS/Android/macOS/Windows rewrite, I think we should discuss whether the product actually needs to become an app, what the lightest implementation path is, and what must be true before we invest deeply.

1. Do we need apps?

My view: yes, probably, but not as a full native rewrite right now.

From an application perspective, DeepTutor is closer to a long-running learning companion than a one-off web tool. Users may return repeatedly to continue conversations, upload documents, review knowledge, ask quick questions, and build a personal study workflow. That kind of product benefits from being a fixed entry point on the phone, desktop Dock, or Start menu.

Apps make sense if we want to support:

  • higher-frequency learning habits;
  • quick mobile entry for questions, photos, voice, and review;
  • desktop workflows around PDFs, notes, knowledge bases, and long research sessions;
  • future reminders, study plans, notifications, and resume-later flows;
  • stronger user perception that DeepTutor is a personal learning companion, not just a website.

But if DeepTutor remains mostly a low-frequency browser tool, a full app investment is premature. The app should serve retention and learning continuity, not just packaging.

2. How should we implement it?

My recommendation: app-ize the existing product first; do not rewrite the product in Flutter/Swift/Kotlin/React Native yet.

A practical split would be:

  • Mobile: Capacitor shell around the existing web UI, connected to the hosted backend.
  • Desktop: Tauri shell around the existing web UI, initially connected to the hosted backend; later optionally bundle/start a local Python backend for privacy/offline desktop use.
  • Backend: keep the Python/FastAPI agent runtime as the source of truth.

The reason is product risk, not only technical cost. A rewrite would delay learning whether users actually want DeepTutor as an app. A thin shell gets us installability, mobile/desktop entry points, and native affordances with much less disruption.

Native capabilities should be added only where they directly improve learning workflows, for example:

  • file picker / share-to-DeepTutor;
  • camera/photo upload for question capture;
  • push/local notifications for review reminders;
  • desktop file drag-and-drop/open-with flows;
  • system tray/menu bar only if continued background access matters.

3. Suggested pace

I would avoid launching iOS, Android, macOS, and Windows as one big project. Suggested order:

  1. PWA / installable web readiness

    • make the web app feel good on mobile and desktop;
    • confirm authentication, chat history, upload, and streaming behavior in app-like constraints.
  2. Desktop MVP first

    • DeepTutor's strongest current workflows are long sessions, documents, knowledge bases, research, and writing;
    • desktop is also more forgiving if we later need local backend integration.
  3. Mobile thin-shell MVP

    • focus on quick ask, photo/file upload, voice input if available, and review/resume flows;
    • avoid trying to embed the full Python stack locally on mobile.
  4. Only then add deeper native features

    • notifications, share sheet, local files, offline/cache, local backend, etc. should follow observed usage.

This keeps the investment proportional to evidence.

4. What should we do first?

Before creating full app projects, I think we need at least this foundation:

  • Define the top 3 app-specific user journeys:
    • mobile quick question / photo upload;
    • desktop document + knowledge-base study session;
    • resume/review previous learning flow.
  • Audit the current web UI on mobile widths and desktop app window sizes.
  • Decide whether the frontend can be packaged as static/app-shell assets, or whether it still depends on a Next server at runtime.
  • Make API base URL, WebSocket URL, auth state, file upload, and streaming behavior robust inside a WebView shell.
  • Add a minimal PWA manifest and installable web baseline.
  • Produce one thin desktop or mobile prototype before committing to all four platforms.

Proposed decision

Start with app-readiness + one thin-shell MVP, not a four-platform native rewrite.

If the prototype shows that users return more often, use mobile capture flows, or rely on desktop document workflows, then we can expand the native surface. If not, we have improved the web product without taking on a large app maintenance burden.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions