Stack Recommendation
Purpose
Recommend a stack per relevant area, with justification and credible alternatives, for the selected applications only. Implements ../../system/STACK_DECISION_RULES.md. The user approves before any implementation (Gate 2).
When to Use
- After
application-selection, before architecture and implementation.
- When an existing repo needs a stack decision for a new application area.
- Not when the stack is already approved and unchanged (respect it).
Inputs
- Selected applications (
application-selection).
- Requirement baseline (constraints, scale, team familiarity).
- Audit findings for existing stacks (
existing-project-audit).
Discovery Questions
- Any mandated or pre-existing stack to align with?
- Team familiarity and ecosystem preferences?
- Expected scale, and any lock-in tolerance?
- Constraints (offline, real-time, compliance) that force a choice?
Responsibilities
- For each required area, recommend a choice with 1–3 sentence justification and note alternatives + lock-in risk.
- Decision areas: Mobile (Expo · RN CLI; nav: Expo Router · React Navigation; state: local · Context · Redux Toolkit · Zustand · server-state; API: fetch · Axios · RTK Query · TanStack Query); Web (Next.js · Vite+React); Backend (Express · NestJS · justified other); Database (PostgreSQL · MySQL · MongoDB); Data layer (Prisma · Drizzle · Mongoose · native driver, paired to the DB); Testing (Jest · Vitest · Supertest · Playwright · Maestro · RNTL).
- Produce a recommendation table: area → recommendation → justification → alternatives.
Required Workflow
- Take the selected applications.
- For each required area, evaluate options against the requirements.
- Pair database + data layer correctly.
- Build the recommendation table.
- Present for Gate 2 approval; record the approved stack.
- Do not install dependencies here.
Decision Rules
- Pair, don't mis-compare: a database is storage; a data layer/ORM is access. Correct: PostgreSQL+Prisma, MySQL+Drizzle, MongoDB+Mongoose. Incorrect: "Prisma vs MongoDB."
- Relational DB → relational ORM; document DB → document ODM.
- Recommend only areas the selected apps require; keep it proportional.
- Prefer shared ecosystem across apps when it reduces cost, but never force a poor fit.
Rules
- No stack is pre-selected by the system; recommend and get approval.
- No dependency installation at this stage.
- Justify every recommendation; name alternatives considered.
Anti-Patterns
- Comparing a database against an ORM.
- Recommending a full stack for a small feature.
- Installing packages before approval.
- Silent, unjustified stack picks.
Validation Checklist
Definition of Done
An approved per-area stack recommendation table recorded in ../../projects/current/, with correct DB/data-layer pairings and no dependencies installed.
Related Skills
application-selection, architecture-design, dependency-audit, testing-strategy, project-orchestrator.
Related Knowledge
../../knowledge/ (existing architecture/constraints).
Related References
../../references/<stack-topic>/ only when an option needs grounding.
Context Loading Guidance
- Requires: selected applications, requirement constraints, existing-stack findings.
- Does not require: full source, unrelated references, implementation skills.
- May load:
dependency-audit (existing deps), one stack reference folder if needed.
- Stop when: the table is approved and recorded.
Token Efficiency Guidance
Evaluate from requirement/audit summaries. Keep justifications to a few sentences; link a reference folder rather than pasting comparisons.
1---2name: stack-recommendation3description: Use after applications are selected to recommend a technology stack per area (mobile, web, backend, database + data layer, testing) with justification and alternatives. Pairs databases with data layers correctly; never compares a database against an ORM. Requires user approval before any code.4---56# Stack Recommendation78## Purpose910Recommend a stack per relevant area, with justification and credible alternatives, for the selected applications only. Implements `../../system/STACK_DECISION_RULES.md`. The user approves before any implementation (Gate 2).1112## When to Use1314- After `application-selection`, before architecture and implementation.15- When an existing repo needs a stack decision for a new application area.16- **Not** when the stack is already approved and unchanged (respect it).1718## Inputs1920- Selected applications (`application-selection`).21- Requirement baseline (constraints, scale, team familiarity).22- Audit findings for existing stacks (`existing-project-audit`).2324## Discovery Questions2526- Any mandated or pre-existing stack to align with?27- Team familiarity and ecosystem preferences?28- Expected scale, and any lock-in tolerance?29- Constraints (offline, real-time, compliance) that force a choice?3031## Responsibilities3233- For each **required** area, recommend a choice with 1–3 sentence justification and note alternatives + lock-in risk.34- Decision areas: **Mobile** (Expo · RN CLI; nav: Expo Router · React Navigation; state: local · Context · Redux Toolkit · Zustand · server-state; API: fetch · Axios · RTK Query · TanStack Query); **Web** (Next.js · Vite+React); **Backend** (Express · NestJS · justified other); **Database** (PostgreSQL · MySQL · MongoDB); **Data layer** (Prisma · Drizzle · Mongoose · native driver, paired to the DB); **Testing** (Jest · Vitest · Supertest · Playwright · Maestro · RNTL).35- Produce a **recommendation table**: area → recommendation → justification → alternatives.3637## Required Workflow38391. Take the selected applications.402. For each required area, evaluate options against the requirements.413. Pair database + data layer correctly.424. Build the recommendation table.435. Present for Gate 2 approval; record the approved stack.446. Do **not** install dependencies here.4546## Decision Rules4748- **Pair, don't mis-compare:** a database is storage; a data layer/ORM is access. Correct: PostgreSQL+Prisma, MySQL+Drizzle, MongoDB+Mongoose. Incorrect: "Prisma vs MongoDB."49- Relational DB → relational ORM; document DB → document ODM.50- Recommend only areas the selected apps require; keep it proportional.51- Prefer shared ecosystem across apps when it reduces cost, but never force a poor fit.5253## Rules5455- No stack is pre-selected by the system; recommend and get approval.56- No dependency installation at this stage.57- Justify every recommendation; name alternatives considered.5859## Anti-Patterns6061- Comparing a database against an ORM.62- Recommending a full stack for a small feature.63- Installing packages before approval.64- Silent, unjustified stack picks.6566## Validation Checklist6768- [ ] Only required areas covered.69- [ ] Each area: recommendation + justification + alternatives.70- [ ] Database paired with a matching data layer.71- [ ] No database-vs-ORM comparison.72- [ ] Presented for Gate 2; approval recorded.73- [ ] No dependencies installed.7475## Definition of Done7677An approved per-area stack recommendation table recorded in `../../projects/current/`, with correct DB/data-layer pairings and no dependencies installed.7879## Related Skills8081`application-selection`, `architecture-design`, `dependency-audit`, `testing-strategy`, `project-orchestrator`.8283## Related Knowledge8485`../../knowledge/` (existing architecture/constraints).8687## Related References8889`../../references/<stack-topic>/` only when an option needs grounding.9091## Context Loading Guidance9293- **Requires:** selected applications, requirement constraints, existing-stack findings.94- **Does not require:** full source, unrelated references, implementation skills.95- **May load:** `dependency-audit` (existing deps), one stack reference folder if needed.96- **Stop when:** the table is approved and recorded.9798## Token Efficiency Guidance99100Evaluate from requirement/audit summaries. Keep justifications to a few sentences; link a reference folder rather than pasting comparisons.