feat: set up monorepo structure with pnpm workspaces and Turborepo

- Configure pnpm workspace for apps/* and packages/*
- Add Turborepo for build optimization and caching
- Set up TypeScript, ESLint, and Prettier at monorepo level
- Include development scripts and package management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Thomas Hallock
2025-09-14 08:01:36 -05:00
parent 2d50eb8e97
commit 62e941e1c0
4 changed files with 6806 additions and 0 deletions

47
package.json Normal file
View File

@@ -0,0 +1,47 @@
{
"name": "soroban-monorepo",
"version": "1.0.0",
"private": true,
"description": "Beautiful Soroban Flashcard Generator - Monorepo",
"workspaces": [
"apps/*",
"packages/*"
],
"packageManager": "pnpm@8.0.0",
"engines": {
"node": ">=18",
"pnpm": ">=8"
},
"scripts": {
"setup": "./setup-dev.sh",
"dev": "turbo run dev",
"dev:setup": "./scripts/dev.sh",
"build": "turbo run build",
"test": "turbo run test",
"test:python": "cd packages/core && source venv/bin/activate && python -m pytest",
"lint": "turbo run lint",
"format": "prettier --write .",
"type-check": "turbo run type-check",
"clean": "turbo run clean && rm -rf node_modules",
"python:api": "cd packages/core && source venv/bin/activate && python src/api.py"
},
"devDependencies": {
"@types/node": "^20.0.0",
"eslint": "^8.0.0",
"prettier": "^3.0.0",
"turbo": "^1.10.0",
"typescript": "^5.0.0",
"concurrently": "^8.0.0"
},
"keywords": [
"soroban",
"abacus",
"flashcards",
"education",
"math",
"nextjs",
"typescript"
],
"author": "",
"license": "MIT"
}

6725
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

5
pnpm-workspace.yaml Normal file
View File

@@ -0,0 +1,5 @@
packages:
- 'apps/*'
- 'packages/core/client/node'
- 'packages/core/client/typescript'
- 'packages/core/client/browser'

29
turbo.json Normal file
View File

@@ -0,0 +1,29 @@
{
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**", ".next/**", "build/**"],
"inputs": ["src/**", "app/**", "components/**", "lib/**", "*.py", "*.ts", "*.tsx", "*.json"]
},
"dev": {
"cache": false,
"persistent": true
},
"test": {
"dependsOn": ["^build"],
"inputs": ["src/**", "tests/**", "**/*.{py,ts,tsx}"],
"outputs": []
},
"lint": {
"outputs": []
},
"type-check": {
"dependsOn": ["^build"],
"outputs": []
},
"clean": {
"cache": false,
"outputs": []
}
}
}