Skip to content
Back to skills

Tracktile

BSecurity

Tracktile

  • 19 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 8, 2026
developmentgobashreactnodedockertestinggitapidatabasefrontend

Works with

  • cli
  • api

Security analysis

B81/100
  • highPerforms destructive filesystem operations
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 8, 2026

npx -y skills add jarredkenny/agency-ai --skill Tracktile --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tracktile?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tracktile
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/jarredkenny-tracktile/badge)](https://www.skillsdirectory.com/skills/jarredkenny-tracktile)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Tracktile
description: Tracktile
category: general
---


---
name: tracktile
description: Work in the Tracktile monorepo - Android builds (EAS), MR workflow (glab), testing, and development commands for the food & beverage manufacturing platform.
---

# Tracktile Monorepo Development

Work effectively in the Tracktile monorepo - an operating system for food & beverage manufacturers.

## Repository

```bash
# 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

## Monorepo Structure

```
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
```

## Key Technologies

- **Backend:** Koa, Typebox, Knex, Objection.js
- **Frontend:** React Native, Unistyles V3, Signals
- **Mobile:** React Native, Expo
- **Build:** pnpm workspaces, Turborepo
- **Testing:** Jest, cypress (e2e)

## Development Workflow

### Setup
```bash
cd ~/tracktile
```

### Create Worktree for Task
```bash
# 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.**

### Commit & Push
```bash
git add .
git commit -m "fix(backend): descriptive message"
git push -u origin fix/issue-name
```

## Handbook (Documentation)

The handbook (`apps/handbook`) is the source of truth for Tracktile's domain, architecture, and concepts.

**Local:** `apps/handbook/docs/`
**Structure:**
- `company/` — Culture, overview
- `engineering/platform/` — Apps, services, architecture
- `engineering/ops/` — Logging, monitoring, access
- `topics/` — Domain concepts (EDI, traceability, etc.)

**When working on Tracktile:**
1. Consult handbook for domain context
2. Update docs in same MR as code changes
3. Fix outdated info when found

## Key Directories by Task Type

### Backend Bugs/Features
- `apps/backend/src/services/` — Modular Services
- `apps/backend/src/shared/` — Shared backend code

### Frontend Bugs/Features
- `apps/frontend/src/components/` — UI components
- `apps/frontend/src/pages/` — Page components
- `apps/frontend/src/stores/` — Zustand stores

### Database/Migrations
- `apps/backend/src/migrations/` — Knex migrations

### Trace/Search/Inventory/Actions (Common Bug Area)
- `apps/backend/src/services/flow/` — Flow / Inventory Service
- `apps/backend/src/services/entity/` — Entity services

## MR Process

### Opening an MR (ALWAYS use glab)

```bash
# 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
```

### MR Template (MANDATORY)

Always use the repo's MR template at `.gitlab/merge_request_templates/Default.md`.
Fill in ALL sections:

```markdown
## 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
```

### MR Commands (glab)

```bash
# 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.

## Environment

- **Pre-Release:** Testing/staging environment
- **Production:** Live customer environment
- **Local:** Docker Compose for DB/Redis

## Common Commands

```bash
# 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
```

## Mobile Builds (APK/AAB)

Build Android packages locally using EAS (Expo Application Services).

### Build Profiles (in `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 |

### Version Management (IMPORTANT)

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).

```bash
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 |

### Building APKs/AABs

```bash
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
```

### Build Output

Local builds output to the current directory. The file will be named like:
- APK: `build-*.apk`
- AAB: `build-*.aab`

### Making Builds Available

After building, share the APK/AAB:
1. Upload to a shared location (Google Drive, S3, etc.)
2. Or use `eas submit` for Play Store submissions
3. For internal testing, share APK directly via Slack

### Prerequisites

- EAS CLI installed: `npm install -g eas-cli`
- Android SDK/NDK for local builds
- Logged into EAS: `eas login`

## Troubleshooting

### pnpm install fails
```bash
rm -rf node_modules pnpm-lock.yaml
pnpm install
```

### TypeORM entity issues
Check that entity is registered in the module's `TypeOrmModule.forFeature([...])`

### Test database issues
```bash
docker compose down -v
docker compose up -d
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…