Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 3 additions & 42 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
version: 2
updates:
# Enable version updates for npm dependencies
# Enable version updates for pnpm dependencies
# Note: Dependabot uses "npm" ecosystem for pnpm projects
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
open-pull-requests-limit: 10
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The open-pull-requests-limit was increased from 5 to 10 for npm dependencies. Consider whether this increase is intentional and appropriate for the team's capacity to review dependency updates. With pnpm consolidating all workspace dependencies at the root, this could result in more simultaneous PRs than before.

Suggested change
open-pull-requests-limit: 10
open-pull-requests-limit: 5

Copilot uses AI. Check for mistakes.
reviewers:
- "hotlong"
assignees:
Expand All @@ -17,46 +18,6 @@ updates:
labels:
- "dependencies"
- "automated"

# Core package dependencies
- package-ecosystem: "npm"
directory: "/packages/core"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
reviewers:
- "hotlong"
assignees:
- "hotlong"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
labels:
- "dependencies"
- "core"
- "automated"

# Examples package dependencies
- package-ecosystem: "npm"
directory: "/packages/examples"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
reviewers:
- "hotlong"
assignees:
- "hotlong"
commit-message:
prefix: "chore"
prefix-development: "chore"
include: "scope"
labels:
- "dependencies"
- "examples"
- "automated"

# GitHub Actions
- package-ecosystem: "github-actions"
Expand Down
35 changes: 26 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,31 +25,48 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9
Comment on lines +29 to +32
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Setup pnpm" step should be placed before "Setup Node.js" for better compatibility with corepack and to ensure pnpm is available when Node.js is configured. This is the recommended order according to pnpm's official documentation for GitHub Actions.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider specifying a more precise pnpm version (e.g., "9.0.0" or "9.15.3") instead of just "9" to ensure consistent behavior across workflow runs and prevent potential breaking changes from minor version updates. This aligns with the recommended practice of pinning versions in CI/CD pipelines.

Suggested change
version: 9
version: 9.15.3

Copilot uses AI. Check for mistakes.

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Type check
run: npm run type-check
run: pnpm run type-check

- name: Build all packages
run: npm run build
run: pnpm run build

- name: Run basic example
run: npm run example:basic
run: pnpm run example:basic

- name: Run e-commerce example
run: npm run example:ecommerce
run: pnpm run example:ecommerce

- name: Run blog example
run: npm run example:blog
run: pnpm run example:blog

- name: Run CRM example
run: npm run example:crm
run: pnpm run example:crm

- name: Run comprehensive CRM example
run: npm run example:crm-comprehensive
run: pnpm run example:crm-comprehensive

- name: Archive build artifacts
if: matrix.node-version == '20.x'
Expand Down
29 changes: 23 additions & 6 deletions .github/workflows/code-quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,35 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider specifying a more precise pnpm version (e.g., "9.0.0" or "9.15.3") instead of just "9" to ensure consistent behavior across workflow runs and prevent potential breaking changes from minor version updates. This aligns with the recommended practice of pinning versions in CI/CD pipelines.

Suggested change
version: 9
version: 9.0.0

Copilot uses AI. Check for mistakes.

- name: Get pnpm store directory
shell: bash
run: |
Comment on lines +23 to +30
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Setup pnpm" step should be placed before "Setup Node.js" for better compatibility with corepack and to ensure pnpm is available when Node.js is configured. This is the recommended order according to pnpm's official documentation for GitHub Actions.

Copilot uses AI. Check for mistakes.
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Type check all packages
run: npm run type-check
run: pnpm run type-check

- name: Check for TypeScript errors
run: |
echo "Checking for TypeScript compilation errors..."
npm run build 2>&1 | tee build.log
pnpm run build 2>&1 | tee build.log
if grep -i "error TS" build.log; then
echo "TypeScript errors found!"
exit 1
Expand All @@ -49,6 +66,6 @@ jobs:
- name: Verify examples can run
run: |
echo "Testing if examples can execute..."
npm run build
npm run example:basic
pnpm run build
pnpm run example:basic
echo "Examples verified successfully."
23 changes: 20 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,30 @@ jobs:
uses: actions/setup-node@v4
with:
node-version: '20.x'
cache: 'npm'

- name: Setup pnpm
uses: pnpm/action-setup@v4
with:
version: 9
Comment on lines +27 to +30
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Setup pnpm" step should be placed before "Setup Node.js" for better compatibility with corepack and to ensure pnpm is available when Node.js is configured. This is the recommended order according to pnpm's official documentation for GitHub Actions.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider specifying a more precise pnpm version (e.g., "9.0.0" or "9.15.3") instead of just "9" to ensure consistent behavior across workflow runs and prevent potential breaking changes from minor version updates. This aligns with the recommended practice of pinning versions in CI/CD pipelines.

Suggested change
version: 9
version: '9.15.3'

Copilot uses AI. Check for mistakes.

- name: Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: npm ci
run: pnpm install --frozen-lockfile

- name: Build all packages
run: npm run build
run: pnpm run build

- name: Create Release
uses: softprops/action-gh-release@v2
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
package-lock.json
yarn.lock

# Build outputs
dist/
Expand Down
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ git clone https://github.com/objectstack-ai/objectstack-starter.git
cd objectstack-starter

# Install dependencies (installs all workspace packages)
npm install
pnpm install

# Build all packages
npm run build
pnpm run build
```
Comment on lines +19 to 23
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The README should include a prerequisites section that mentions pnpm needs to be installed before running the project. Users who are new to pnpm won't know they need to install it first. Consider adding installation instructions before the "Installation" section, such as:

Prerequisites:

  • Node.js >= 18.0.0
  • pnpm (install with: npm install -g pnpm or corepack enable)

Copilot uses AI. Check for mistakes.

### Running Examples
Expand All @@ -28,36 +28,36 @@ This template includes multiple example applications demonstrating different use

```bash
# Run the basic example (core objects)
npm run example:basic
pnpm run example:basic

# Run the e-commerce example
npm run example:ecommerce
pnpm run example:ecommerce

# Run the blog example
npm run example:blog
pnpm run example:blog

# Run the CRM example
npm run example:crm
pnpm run example:crm

# Run the comprehensive CRM example (All core modules)
npm run example:crm-comprehensive
pnpm run example:crm-comprehensive
```

### Development

```bash
# Watch mode - automatically rebuild all packages on changes
npm run dev
pnpm run dev

# Build specific package
npm run build:core
npm run build:examples
pnpm run build:core
pnpm run build:examples

# Type checking
npm run type-check
pnpm run type-check

# Clean build artifacts
npm run clean
pnpm run clean
```

## 📦 What's Included
Expand Down Expand Up @@ -297,7 +297,7 @@ This repository includes comprehensive automation workflows:

## 🌟 Features

- ✅ Monorepo structure with npm workspaces
- ✅ Monorepo structure with pnpm workspaces
- ✅ Multiple packages: core and examples
- ✅ TypeScript support with strict type checking
- ✅ Based on the latest @objectstack/spec (v0.3.3)
Expand Down
25 changes: 11 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,18 @@
"description": "ObjectStack Starter Template - A metadata-driven low-code platform starter (Multi-package Monorepo)",
"type": "module",
"private": true,
Copy link

Copilot AI Jan 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding a "packageManager" field to specify the pnpm version being used. This ensures all developers and CI/CD environments use the same pnpm version, preventing potential compatibility issues. Based on the workflow files specifying version 9, you could add "packageManager": "pnpm@9.0.0" (or the specific version you're using) after the "private" field.

Suggested change
"private": true,
"private": true,
"packageManager": "pnpm@9.0.0",

Copilot uses AI. Check for mistakes.
"workspaces": [
"packages/*"
],
"scripts": {
"build": "npm run build --workspaces",
"build:core": "npm run build -w @objectstack-starter/core",
"build:examples": "npm run build -w @objectstack-starter/examples",
"dev": "npm run dev --workspaces --if-present",
"clean": "npm run clean --workspaces --if-present",
"type-check": "npm run type-check --workspaces",
"example:basic": "npm run example:basic -w @objectstack-starter/examples",
"example:ecommerce": "npm run example:ecommerce -w @objectstack-starter/examples",
"example:blog": "npm run example:blog -w @objectstack-starter/examples",
"example:crm": "npm run example:crm -w @objectstack-starter/examples",
"example:crm-comprehensive": "npm run example:crm-comprehensive -w @objectstack-starter/examples"
"build": "pnpm -r run build",
"build:core": "pnpm --filter @objectstack-starter/core run build",
"build:examples": "pnpm --filter @objectstack-starter/examples run build",
"dev": "pnpm -r run dev",
"clean": "pnpm -r run clean",
"type-check": "pnpm -r run type-check",
"example:basic": "pnpm --filter @objectstack-starter/examples run example:basic",
"example:ecommerce": "pnpm --filter @objectstack-starter/examples run example:ecommerce",
"example:blog": "pnpm --filter @objectstack-starter/examples run example:blog",
"example:crm": "pnpm --filter @objectstack-starter/examples run example:crm",
"example:crm-comprehensive": "pnpm --filter @objectstack-starter/examples run example:crm-comprehensive"
},
"devDependencies": {
"@types/node": "^25.0.10",
Expand Down
2 changes: 1 addition & 1 deletion packages/examples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
},
"dependencies": {
"@objectstack/spec": "^0.3.3",
"@objectstack-starter/core": "*"
"@objectstack-starter/core": "workspace:*"
},
"devDependencies": {
"@types/node": "^25.0.10",
Expand Down
Loading