Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
a8a72fe
feat: Support Windows for development
ArtyomSavchenko Feb 2, 2026
9b2aa78
Update copyright year
ArtyomSavchenko Feb 2, 2026
5c84679
Initial mobile app
ArtyomSavchenko Feb 26, 2026
d71e7d6
Revert Win changes
ArtyomSavchenko Jul 9, 2026
7b5c39e
Merge branch 'develop' of https://github.com/Platform-Collective/plat…
ArtyomSavchenko Jul 9, 2026
0fd080d
feat(mobile): Android debug APK build support (keystore, config, vers…
claude Jul 9, 2026
db17dd9
ci: Mobile workflow building Android debug APK artifact
claude Jul 9, 2026
b615325
ci: trigger Mobile workflow on claude/** branches
claude Jul 9, 2026
0afc473
Update package lock
ArtyomSavchenko Jul 9, 2026
6fee1e8
Merge branch 'mobile-app' of https://github.com/Platform-Collective/p…
ArtyomSavchenko Jul 9, 2026
376c7ab
fix(ci): restore gradlew executable bit lost in previous commit
claude Jul 9, 2026
c8a9145
feat(mobile): camera/mic/notification permissions and attachment down…
claude Jul 9, 2026
f107a97
fix(prod): type-safe Capacitor detection in main.ts
claude Jul 9, 2026
3e1212d
fix(ci): include mobile project in build-results cache; add format stub
claude Jul 9, 2026
c439a17
feat(mobile): request notification permission on first launch (Androi…
claude Jul 9, 2026
37874ec
refactor(mobile): change application/bundle id to org.platformcollect…
claude Jul 9, 2026
d732873
fix(qms-tests): exact space name match in changeDocumentSpaceMembers
claude Jul 9, 2026
c4d7484
Merge develop (security dependency bumps)
claude Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ env:
desktop
desktop-package
foundations
mobile
qms-desktop-package
dev
models
Expand Down
95 changes: 95 additions & 0 deletions .github/workflows/mobile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# Builds the Capacitor mobile app and publishes test artifacts (Android debug APK).
# iOS is intentionally not built here yet: it needs a macOS runner and Apple signing
# credentials to produce an installable artifact.

name: Mobile

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

on:
push:
branches: [develop, main, mobile-app, 'claude/**']
paths:
- 'mobile/**'
- '.github/workflows/mobile.yml'
pull_request:
paths:
- 'mobile/**'
- '.github/workflows/mobile.yml'

# Manual run: build an APK for testing from any branch
workflow_dispatch:
inputs:
config:
description: 'Config file from dev/prod/public to bundle into the app as config.json'
required: false
default: 'config-mobile-huly.json'

jobs:
android:
runs-on: ubuntu-latest
timeout-minutes: 90
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
filter: tree:0

- uses: actions/setup-node@v6
with:
node-version-file: '.nvmrc'

- uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'

- name: Cache node modules
uses: actions/cache@v5
env:
cache-name: cache-node-platform
with:
path: |
common/temp
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }}

- name: Installing...
run: node common/scripts/install-run-rush.js install

- name: Building web app bundle...
run: node common/scripts/install-run-rush.js package --to @hcengineering/prod

- name: Install mobile dependencies
working-directory: mobile
run: npm ci

- name: Copy web assets and sync native project
working-directory: mobile
env:
MOBILE_CONFIG: ${{ github.event.inputs.config || 'config-mobile-huly.json' }}
run: |
npm run build:web
npx cap sync android

- name: Build Android debug APK
working-directory: mobile/android
env:
MOBILE_VERSION_CODE: ${{ github.run_number }}
MOBILE_VERSION_NAME: 1.0.${{ github.run_number }}
run: |
chmod +x ./gradlew
./gradlew assembleDebug

- name: Upload APK
uses: actions/upload-artifact@v6
with:
name: huly-android-debug-apk
path: mobile/android/app/build/outputs/apk/debug/app-debug.apk
retention-days: 14
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ tsconfig.tsbuildinfo
ingest-attachment-*.zip
tsdoc-metadata.json
pods/front/dist
mobile/www
*.cpuprofile
*.pyc
metrics.txt
Expand Down
27 changes: 27 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ For detailed information about the platform architecture, services, and their in
- [Installation](#installation)
- [Build and run](#build-and-run)
- [Run in development mode](#run-in-development-mode)
- [Mobile (iOS and Android)](#mobile-ios-and-android)
- [Update project structure and database](#update-project-structure-and-database)
- [Troubleshooting](#troubleshooting)
- [Build \& Watch](#build--watch)
Expand Down Expand Up @@ -253,6 +254,32 @@ Then go to <http://localhost:8080>

Select "Sign up" on the right panel and click the "Sign up with password" link at the bottom. Enter the new user's credentials, then proceed to create a workspace for them.

## Mobile (iOS and Android)

The Platform includes a Capacitor-based mobile app that wraps the same web frontend. Prerequisites: Node.js, Rush, and for native builds **Xcode** (macOS) and/or **Android Studio**.

1. Build the web app once (from the repo root):

```bash
rush build --to @hcengineering/prod
```

2. Copy web assets into the mobile project and sync native projects:

```bash
cd mobile
npm run sync
```

3. Open and run the app:

```bash
npm run open:ios # Opens Xcode (macOS only)
npm run open:android # Opens Android Studio
```

For development, you can point the app at the webpack dev server by keeping `server.url` in `mobile/capacitor.config.ts` (e.g. `http://localhost:8080`). For production builds, remove or override the `server` setting so the app loads bundled content from `www/`. See [mobile/README.md](mobile/README.md) for details.

## Update project structure and database

If the project's structure is updated, it may be necessary to relink and rebuild the projects.
Expand Down
Loading
Loading