com um clique
tracktile
Tracktile
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Tracktile
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Gitlab MR Review
invoice-organizer
langsmith-fetch
Use when the user asks to play music, control playback, search for songs/albums/artists, manage queue, or adjust volume via Spotify.
xlsx
algorithmic-art
Baseado na classificação ocupacional SOC
| name | Tracktile |
| description | Tracktile |
| category | general |
Work effectively in the Tracktile monorepo - an operating system for food & beverage manufacturers.
# Clone (first time)
git clone git@gitlab.com:sharokenstudio/tracktile/tracktile.git ~/tracktile
# Or with wtm (worktree manager)
wtm init git@gitlab.com:sharokenstudio/tracktile/tracktile.git ~/tracktile
Remote: git@gitlab.com:sharokenstudio/tracktile/tracktile.git
Default Branch: prerelease
CI: GitLab CI/CD
tracktile/
├── apps/
│ ├── backend/ # Backend API
│ ├── frontend/ # React Native App (Web and Mobile)
│ ├── handbook/ # Internal Employee documentation (Docusaurus)
│ └── ...
├── packages/
│ ├── common/ # Shared types, utils
│ ├── ui/ # Shared UI components
│ └── ...
├── tools/ # Build/dev tooling
├── pnpm-workspace.yaml
└── package.json
cd ~/tracktile
# Using wtm (preferred)
wtm create fix/issue-name --from prerelease
### Before Committing - MANDATORY
```bash
# Run from repo root, IN SEQUENCE (not parallel)
pnpm typecheck # Must pass
pnpm lint # Must pass
pnpm test # Must pass (or pnpm test:affected)
⚠️ NO EXCEPTIONS. All three must pass before commit/MR.
git add .
git commit -m "fix(backend): descriptive message"
git push -u origin fix/issue-name
The handbook (apps/handbook) is the source of truth for Tracktile's domain, architecture, and concepts.
Local: apps/handbook/docs/
Structure:
company/ — Culture, overviewengineering/platform/ — Apps, services, architectureengineering/ops/ — Logging, monitoring, accesstopics/ — Domain concepts (EDI, traceability, etc.)When working on Tracktile:
apps/backend/src/services/ — Modular Servicesapps/backend/src/shared/ — Shared backend codeapps/frontend/src/components/ — UI componentsapps/frontend/src/pages/ — Page componentsapps/frontend/src/stores/ — Zustand storesapps/backend/src/migrations/ — Knex migrationsapps/backend/src/services/flow/ — Flow / Inventory Serviceapps/backend/src/services/entity/ — Entity services# From your feature branch, after pushing
glab mr create --fill --target-branch prerelease
# Or with explicit options
glab mr create \
--title "fix(backend): descriptive title" \
--description "$(cat .gitlab/merge_request_templates/Default.md)" \
--target-branch prerelease \
--remove-source-branch
Always use the repo's MR template at .gitlab/merge_request_templates/Default.md.
Fill in ALL sections:
## Notes
<!-- What changed and why -->
## Asana Ticket
<!-- CLICKABLE LINK - do NOT use "fixes:" or "closes:" prefix -->
[Asana #123456789](https://app.asana.com/0/0/123456789)
## Images & Looms
<!-- Screenshots or recordings if UI change -->
## Test Cases
<!-- Link to test cases if applicable -->
## Checklists
- [ ] Tested on Web
- [ ] Tested on Android (if mobile)
- [ ] Feature flagged (if new feature)
- [ ] Translations added (if user-facing text)
- [ ] Tests added/updated
# List open MRs
glab mr list
# View MR details
glab mr view <mr-number>
# Check MR status/CI
glab mr view <mr-number> --comments
# Merge when ready
glab mr merge <mr-number>
⚠️ NEVER use "fixes:" or "closes:" before Asana links — triggers unwanted GitLab automations.
# Start backend locally
pnpm --filter backend dev
# Start frontend locally
pnpm --filter frontend dev
# Run specific test file
pnpm --filter backend test -- path/to/test.spec.ts
# Generate migration
pnpm --filter backend migration:generate MigrationName
# Check what's affected by changes
pnpm affected
Build Android packages locally using EAS (Expo Application Services).
apps/frontend/eas.json)| Profile | Output | Purpose |
|---|---|---|
local | APK | Expo development build |
prerelease | APK | Pre-release environment testing |
production-preview | APK | Production environment testing |
production | AAB | Play Store submission |
EAS stores version codes remotely (cli.appVersionSource: "remote" in eas.json).
Only production profile has autoIncrement: true. For all other profiles, you MUST manually increment the version before building, or the build will reuse the same version code (causing Play Store/device conflicts).
cd apps/frontend
# 1. Check current version
eas build:version:get -p android
# 2. Increment version (for non-production profiles)
# Get current, add 1, then set
CURRENT=$(eas build:version:get -p android 2>/dev/null | grep -oP 'versionCode: \K\d+')
NEXT=$((CURRENT + 1))
eas build:version:set -p android --build-version $NEXT
# Or interactively (will prompt for version)
eas build:version:set -p android
| Profile | Auto-Increment? | Action Required |
|---|---|---|
production | ✅ Yes | None - auto-increments |
production-preview | ❌ No | Run eas build:version:set first |
prerelease | ❌ No | Run eas build:version:set first |
local | ❌ No | Run eas build:version:set first |
cd apps/frontend
# STEP 1: Increment version (skip for production profile)
eas build:version:set -p android
# STEP 2: Build
# Build APK for pre-release testing
eas build --platform android --local --profile=prerelease
# Build APK for production testing
eas build --platform android --local --profile=production-preview
# Build AAB for Play Store (auto-increments, no version:set needed)
eas build --platform android --local --profile=production
# Build development APK
eas build --platform android --local --profile=local
Local builds output to the current directory. The file will be named like:
build-*.apkbuild-*.aabAfter building, share the APK/AAB:
eas submit for Play Store submissionsnpm install -g eas-clieas loginrm -rf node_modules pnpm-lock.yaml
pnpm install
Check that entity is registered in the module's TypeOrmModule.forFeature([...])
docker compose down -v
docker compose up -d