- Dart 92.2%
- HTML 7.7%
| .agents/skills | ||
| .aipass | ||
| .claude | ||
| .vscode | ||
| android | ||
| assets/images | ||
| config | ||
| dropbox | ||
| ios | ||
| lib | ||
| reference | ||
| src/cloudmatehr_app | ||
| test | ||
| .gitignore | ||
| .metadata | ||
| AGENTS.md | ||
| analysis_options.yaml | ||
| build | ||
| CLOUDMATEHR-APP_REGISTRY.json | ||
| pubspec.lock | ||
| pubspec.yaml | ||
| pyproject.toml | ||
| README.md | ||
| skills-lock.json | ||
CloudMate HR
Flutter client for the CloudMate public API.
Run
The mobile app authenticates users with email and password, then uses the returned bearer token for API requests.
For local integration testing with a platform API key:
cp config/local_defines.example.json config/local_defines.json
flutter run --dart-define-from-file=config/local_defines.json
Set CLOUDMATE_API_KEY and CLOUDMATE_ORG_SLUG in the ignored local file.
CLOUDMATE_ORG_SLUG is mandatory when a platform key can access more than one
workspace; the app never guesses between multiple organizations. Platform keys
are for local/server-side integration only and must not be committed or shipped
in a production mobile binary. Release builds disable API-key preview even when
a key is supplied accidentally. Production mobile users authenticate with
their own bearer session, which the app stores in the device keychain/secure
storage.
Set CLOUDMATE_LIVE_REFRESH_SECONDS to tune the REST polling fallback used
only while the realtime connection is unavailable. The app clamps the value
between 5 and 300 seconds; the default is 15 seconds.
While the chat tab is open and server push is unavailable, the selected
conversation uses a separate, lightweight REST sync every second by default. Set
CLOUDMATE_CHAT_LIVE_SYNC_SECONDS to tune it between 1 and 10 seconds. This
keeps conversations responsive on API deployments that do not provide server
push.
For true server-push updates, set CLOUDMATE_REALTIME_URL to the deployment's
documented ws:// or wss:// endpoint. The app intentionally does not guess
a WebSocket path from the REST base URL.
The app subscribes to attendance, tasks, notifications, reports, chat, feed,
requests, learning, activity, HR, and workspace events through this one
connection.
Set GIPHY_API_KEY to enable the searchable online GIF catalog. Create and
manage the key in the GIPHY developer dashboard. Use a separate key for each
production platform. GIPHY search runs client-side, so this key is embedded in
the app and must be treated as a public, rate-limited identifier rather than a
secret.
The chat also accepts a direct HTTPS URL ending in .gif when the catalog key
is not configured. Online GIFs are sent and rendered from their source URL;
CloudMate does not download or re-host GIPHY media.