mirror of
https://github.com/Dvorinka/Trackeep.git
synced 2026-06-03 20:12:58 +00:00
79 lines
2.7 KiB
Markdown
79 lines
2.7 KiB
Markdown
# Trackeep Mobile (React Native)
|
|
|
|
Cross-platform mobile shell for Trackeep using React Native + Expo.
|
|
|
|
## Architecture
|
|
|
|
- **Same UI as web**: after login, the app renders your Trackeep web app (`/app`) inside a native WebView.
|
|
- **One backend, one data plane**: mobile uses your self-hosted Trackeep instance URL and the same API/auth as web.
|
|
- **Mobile-native extras**:
|
|
- incoming phone share intent (links, YouTube URLs, text, files)
|
|
- quick share panel to save bookmarks immediately
|
|
- shared files upload directly to Trackeep Files
|
|
|
|
## Implemented Features
|
|
|
|
- Instance setup and validation (`/health`, `/api/version`)
|
|
- Native login/register (`/api/v1/auth/...`) with secure token storage
|
|
- Token bootstrap into WebView localStorage so web UI works immediately
|
|
- Native/Web bridge for auth + route state sync
|
|
- Android hardware back support for in-web navigation
|
|
- External links open in system browser while Trackeep pages stay in-app
|
|
- Mobile route shortcuts (Dashboard/Bookmarks/Tasks/Notes/Files/YouTube/Time)
|
|
- Incoming share flow:
|
|
- Save shared links/YouTube as bookmarks (`POST /api/v1/bookmarks`)
|
|
- Smart link metadata enrichment (`POST /api/v1/bookmarks/metadata`)
|
|
- YouTube-aware action: `Save + Open YouTube`
|
|
- Upload shared files (`POST /api/v1/files/upload`)
|
|
- Broader Android share MIME support (`text/plain`, `text/uri-list`, `text/*`, `image/*`, `video/*`, `application/*`)
|
|
- Trackeep-branded mobile icon/splash copied from main project assets
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js 18+
|
|
- npm 10+
|
|
- Reachable Trackeep backend
|
|
|
|
## Run
|
|
|
|
From repository root:
|
|
|
|
```bash
|
|
npm install
|
|
npm --workspace mobile run typecheck
|
|
npm --workspace mobile run start
|
|
```
|
|
|
|
## Important: Share Intent Requires Dev Client
|
|
|
|
Incoming share from other apps requires native code (`expo-share-intent`), so **Expo Go is not enough**.
|
|
Use a dev client or production build:
|
|
|
|
```bash
|
|
npm --workspace mobile run prebuild:clean
|
|
npm --workspace mobile run android:run
|
|
# or
|
|
npm --workspace mobile run ios:run
|
|
|
|
npm --workspace mobile run start:dev-client
|
|
```
|
|
|
|
`patch-package` is already configured at repository root to apply the required `xcode@3.0.1` patch during install.
|
|
|
|
## Share Examples
|
|
|
|
- Share a YouTube link from YouTube app → Trackeep Mobile appears in share sheet → Save to bookmarks.
|
|
- Share a webpage URL from browser → Save to bookmarks.
|
|
- Share an image/file from gallery/files app → Upload to Trackeep Files.
|
|
|
|
## Instance URL examples
|
|
|
|
- Production: `https://trackeep.example.com`
|
|
- Android emulator local backend: `http://10.0.2.2:8080`
|
|
- iOS simulator local backend: `http://localhost:8080`
|
|
|
|
## Notes
|
|
|
|
- Switching instance URL clears session intentionally (instance-isolated auth).
|
|
- If the share extension is not detected in Expo Go, this is expected; use dev client or release build.
|