Local Runtime Matrix
This page turns the current repository configs into a practical local-runtime reference.
Config files to prepare
| Project type | Files to check |
|---|---|
| Portal | intt-portal/.env, intt-portal/src/environments/environment.staging.ts |
| Mobile | intt-mobile/lib/shared/config.dart, VS Code launch configs, --dart-define values |
| API services | .env.example copied to .env |
| Queue services | .env.sample copied to .env |
Common backend env groups
Most NestJS services expect these groups:
PORT- MariaDB:
DB_HOST,DB_PORT,DB_USER,DB_PASSWORD,DB_DATABASE - JWT:
TOKEN_EXPIRED_PER_SECONDS,JWT_ISSUER,JWT_ALGORITHM - Redis:
REDIS_HOST,REDIS_PORT,REDIS_PASS - RabbitMQ:
RABBITMQ_HOST,RABBITMQ_PORT,RABBITMQ_USER,RABBITMQ_PASS
Additional env groups appear in specific services:
- replica DB:
DB_REPLICA_* - socket integration:
CAMELIA_SOCKET_BASE_URI - GSB external integrations:
ALU_*,FIBERHOME_*,ZTE_*,HUAWEI_*,NIG_URL,TMFORCE_URL,APIM_URL,APIM_KEY,APIM_SECRET - portal keys:
PUBLIC_KEY,PRIVATE_KEY,SECRET_KEY,CLIENT_SECRET_STG,CLIENT_ID_STG,VOC_TOKEN,OIP_* - mobile runtime selection:
APP_ENV,IS_ONLINE
Default local ports
These are the fallback ports from src/main.ts when PORT is not set:
| Service | Default port | Docs endpoint |
|---|---|---|
mvp1-authentication-service | 3001 | /auth/docs |
mvp1-setting-service | 3002 | /setting/docs |
mvp2-data-service | 3003 | /data/docs |
mvp3-gsb-service | 3000 | /gsb/docs |
mvp3-ticket-service | 3004 | /ticket/docs |
mvp3-ngoss-service | 3004 | /ngoss/docs |
mvp3-nocpro-service | 3004 | /nocpro/docs |
mvp3-tmf-service | 3004 | /tmf/docs |
mvp6-vital-service | 3004 | /vital/docs |
mvp3-nocgrid-service | 3009 | /nocgrid/docs |
Important note:
- several services share default port
3004 - if you run
ticket,ngoss,nocpro,tmf, orvitaltogether, set customPORTvalues in their local.envfiles
Queue workers and queues
Queue workers connect to RabbitMQ on port 5672 and subscribe to these queues:
| Service | Queue or queues |
|---|---|
mvp3-caution-report-queue-service | intt_caution_report_queue |
mvp3-ctt-queue-service | intt_ctt_queue |
mvp3-gsb-queue-service | intt_gsb_queue |
mvp3-kci-queue-service | intt_kci_queue |
mvp6-tass-queue-service | intt_tass_queue |
mvp6-vital-queue-service | intt_vital_queue |
mvp3-changedp-queue-service | intt_alu_queue, intt_zte_queue, intt_fiberhome_queue, intt_huawei_queue |
Infra dependencies by layer
| Layer | Main dependencies |
|---|---|
| Portal | browser, .env, staging API access |
| Mobile | Flutter SDK, device or emulator, config.dart, API access |
| Core APIs | MariaDB, Redis, JWT config |
| Integration-heavy APIs | MariaDB, Redis, RabbitMQ, external APIs or sockets |
| Queue workers | RabbitMQ, DB access, vendor or integration credentials |
Network access note
TM VPN access may be required before local development can reach:
- staging API endpoints
- internal database hosts
- Redis or RabbitMQ hosts outside your machine
- vendor or internal integration endpoints
Which services to run for which module
These are the best current working assumptions from repo names, module folders, queue bindings, and environment templates.
| Workstream | Minimum likely stack |
|---|---|
| Login and shell access | mvp1-authentication-service is the only required minimum backend |
| Dashboard and reports | auth plus mvp2-data-service when the feature needs data-service APIs |
| Ticket, NTT, CTT, CR pages | auth plus mvp3-ticket-service when the feature needs ticket APIs |
| GSB portal flow | auth plus mvp3-gsb-service |
| GSB async command execution | auth, mvp3-gsb-service, mvp3-gsb-queue-service, mvp3-changedp-queue-service, RabbitMQ |
| NGOSS flow | auth plus mvp3-ngoss-service |
| NOC Grid flow | auth plus mvp3-nocgrid-service |
| NOCPro flow | auth plus mvp3-nocpro-service |
| TMF flow | auth plus mvp3-tmf-service |
| Vital flow | auth plus mvp6-vital-service, and mvp6-vital-queue-service if async processing is involved |
| Mobile field flow | auth plus whichever domain API the mobile module is calling |
Frontend team workflow note
The frontend team currently does not usually clone and run all backend repos locally.
Typical frontend workflow is:
- clone only
intt-portal - run
pnpm run start:stg - inspect staging Swagger docs for endpoint details
- build against staging-backed APIs
- send QA to
https://intt-stg.tm.com.my/
Local startup checklist
- Prepare
.envor.env.sampleor.env.examplefor the services you need. - Confirm MariaDB, Redis, and RabbitMQ are reachable.
- Resolve
PORTconflicts before starting multiple3004services. - Start authentication service first.
- Start the domain API you are working on.
- Start queue workers only if the feature needs async processing.
- Start
intt-portalwithpnpm run start:stgor runintt-mobilewith the correctAPP_ENV.