| .claude | ||
| agent-ops | ||
| agent-roadmap | ||
| agent-task | ||
| apps | ||
| bin | ||
| docs | ||
| packages/messaging_flutter | ||
| scratch | ||
| services | ||
| .aiexclude | ||
| .clineignore | ||
| .clinerules | ||
| .cursorignore | ||
| .cursorrules | ||
| .geminiignore | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| GEMINI.md | ||
| opencode.json | ||
| README.md | ||
nexo
nexo is a Flutter messaging and notification package workspace. The main
deliverable is packages/messaging_flutter: a reusable package that lets many
Flutter apps integrate messaging and push-notification behavior without each app
reimplementing the same native runtime.
Mattermost upstream repositories are kept as references around the package:
apps/mattermost for the original Mattermost app, services/core for the
server, and services/push-proxy for the push server. This repository does not
contain a dedicated nexo product app.
Name
nexo comes from nexus: a connection point where apps, messages,
notifications, and service infrastructure meet.
Current Status
packages/messaging_flutter/is the main product surface: an Android-first Flutter messaging and push-notification plugin package.apps/flutter-test/is the plugin test app.apps/mattermost/is the original Mattermost mobile app repository snapshot (seeapps/mattermost/UPSTREAM.md).services/core/is the Mattermost server repository clone.services/push-proxy/is the Mattermost push-proxy repository snapshot (seeservices/push-proxy/UPSTREAM.md).- Public package, import, and native identifiers are being moved to Nexo-owned names.
- iOS and macOS plugin scaffolds exist, but Android is the current implementation target.
Quick Start
Show development entrypoints:
bin/dev
Run Flutter package and flutter-test host checks:
bin/test
bin/lint
Start the core compose runtime:
cd services/core/compose
cp .env.example .env
docker compose up
Commands
| Purpose | Command | Notes |
|---|---|---|
| Show development entrypoints | bin/dev |
Prints test host, plugin, and core compose commands |
| Run default tests | bin/test |
Runs Flutter tests; skips Go tests by default |
| Run default lint | bin/lint |
Runs Flutter analyze; skips Go vet by default |
| Run default build | bin/build |
Runs configured app builds; skips apps/flutter-test web build when web is not configured and skips Go build by default |
| Include server Go tests | NEXO_CORE_GO_TEST=1 bin/test |
Requires local go |
| Include server Go vet | NEXO_CORE_GO_LINT=1 bin/lint |
Requires local go |
| Include server Go build | NEXO_CORE_GO_BUILD=1 bin/build |
Requires local go |
Run the flutter-test host directly |
cd apps/flutter-test && flutter run |
Requires Flutter SDK |
| Test the plugin directly | cd packages/messaging_flutter && flutter test |
Requires Flutter SDK |
| Run Android native unit tests | cd apps/flutter-test/android && ./gradlew testDebugUnitTest |
Requires Android SDK |
The bin/* helpers skip checks when a required local tool is unavailable. Note
any skipped checks in work reports.
Structure
| Path | Role |
|---|---|
packages/messaging_flutter/ |
Main Flutter messaging and push-notification package |
apps/flutter-test/ |
flutter-test app for package integration checks |
apps/mattermost/ |
Mattermost mobile app repository snapshot |
services/core/ |
Mattermost server repository clone and current compose runtime |
services/push-proxy/ |
Mattermost push-proxy repository snapshot |
docs/ |
Cross-module product, migration, and operations notes |
bin/ |
Workspace helper entrypoints |
agent-ops/ |
Agent rules, domain rules, and common skill entrypoints |
Work Context
- Start by reading
AGENTS.md, thenagent-ops/rules/project/rules.md. - Follow path-specific domain rules under
agent-ops/rules/project/domain/*/rules.md. - For standard tasks such as README, plan, review, or commit/push, route through
agent-ops/skills/common/router.md. - Treat
packages/messaging_flutter/as the primary product. App-specific product UI and business logic belong in consuming apps outside this repository. - Treat
apps/flutter-test/only as the plugin integration test host; do not grow it into a product app or duplicate plugin internals there. - Treat
apps/mattermost,services/core, andservices/push-proxyas original Mattermost repository clones, not as nexo-owned app or server products. - Do not change
services/core/UPSTREAM.mdbaseline information without an explicit upstream decision. - Keep upstream working clones outside this repository under a sibling/external
mattermost/staging folder, one clone for each original repository. - Track each upstream repository on its recorded staging branch:
mainformattermost-mobile, andmasterformattermostandmattermost-push-proxy. When a tracked branch changes or a refresh is intentionally scheduled, take a fresh snapshot from staging and open a merge request into this repository. - Record the exact upstream commit SHA for every snapshot that enters this repository.
- Prefer one merge request per upstream repository snapshot:
apps/mattermost,services/core, orservices/push-proxy. - Never auto-apply staging updates into this repository; review the snapshot diff and run the relevant smoke checks first.
- Keep nexo-specific patches outside the upstream snapshot where possible, using compose, docs, wrappers, or small explicit patches.
Development Flow
- Read the domain rule for the path you will change.
- Make focused changes inside the owning module.
- Run the smallest useful verification for the change.
- Use
bin/test,bin/lint, orbin/buildwhen workspace-level checks are needed. - Use
services/core/compose/when runtime server verification is needed.
Environment Variables
Core Compose
| Name | Description | Required |
|---|---|---|
NEXO_DB_PASSWORD |
Password for the Postgres mmuser account |
Yes |
NEXO_SITE_URL |
Site URL used by the core service | Yes |
NEXO_CORE_PORT |
Host port mapped to core 8065 |
No |
NEXO_PUSH_PROXY_PORT |
Host port mapped to push-proxy 8066 |
No |
See services/core/compose/.env.example for example values. Do not commit real
.env files or runtime data. The Docker network subnet is fixed to
172.38.0.0/16; reserve this range for nexo and do not reuse it for other Docker
networks.
Optional Verification
| Name | Description | Default |
|---|---|---|
NEXO_CORE_GO_TEST |
Run server Go tests from bin/test |
0 |
NEXO_CORE_GO_LINT |
Run server Go vet from bin/lint |
0 |
NEXO_CORE_GO_BUILD |
Run server Go build from bin/build |
0 |
Reference Documents
AGENTS.mdagent-ops/rules/project/rules.mdagent-ops/skills/common/router.mdservices/core/UPSTREAM.mdservices/core/compose/README.mdpackages/messaging_flutter/README.mdpackages/messaging_flutter/docs/android-test-environment.mdapps/flutter-test/README.mddocs/README.md