chore: cleanups
This commit is contained in:
57
.github/workflows/typecheck.yml
vendored
Normal file
57
.github/workflows/typecheck.yml
vendored
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
name: TypeScript Type Check
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
- '**'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- master
|
||||||
|
- develop
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
typecheck:
|
||||||
|
name: TypeScript Type Check
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: '18'
|
||||||
|
|
||||||
|
- name: Setup pnpm
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: 10
|
||||||
|
|
||||||
|
- 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: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Run TypeScript type check
|
||||||
|
run: pnpm run typecheck
|
||||||
|
|
||||||
|
- name: Notify on failure
|
||||||
|
if: failure()
|
||||||
|
run: |
|
||||||
|
echo "::error::TypeScript type check failed. Please fix type errors before merging."
|
||||||
88
AGENTS.md
88
AGENTS.md
@@ -56,10 +56,15 @@
|
|||||||
## Development Workflow
|
## Development Workflow
|
||||||
|
|
||||||
### Commands
|
### Commands
|
||||||
- `npm run dev` - Start dev server (port 4000)
|
- `pnpm dev` - Start dev server (port 4000)
|
||||||
- `npm run lintfix` - Auto-fix linting issues
|
- `pnpm build` - Production build
|
||||||
- `npm run lint` - Check for issues
|
- `pnpm start` - Start production server
|
||||||
- `npm run build` - Production build
|
- `pnpm lint` - Check for linting issues
|
||||||
|
- `pnpm lintfix` - Auto-fix linting issues
|
||||||
|
- `pnpm typecheck` - Run TypeScript type checking
|
||||||
|
- `pnpm security:audit` - Run security vulnerability scan
|
||||||
|
- `pnpm security:check` - Generate security report (JSON)
|
||||||
|
- `pnpm security:outdated` - Check for outdated dependencies
|
||||||
|
|
||||||
### Windsurf Commands Helper Script
|
### Windsurf Commands Helper Script
|
||||||
The project includes `windsurf-commands.sh` for common development tasks:
|
The project includes `windsurf-commands.sh` for common development tasks:
|
||||||
@@ -67,18 +72,24 @@ The project includes `windsurf-commands.sh` for common development tasks:
|
|||||||
```bash
|
```bash
|
||||||
./windsurf-commands.sh lint # Run ESLint to check for code issues
|
./windsurf-commands.sh lint # Run ESLint to check for code issues
|
||||||
./windsurf-commands.sh lintfix # Run ESLint with auto-fix enabled
|
./windsurf-commands.sh lintfix # Run ESLint with auto-fix enabled
|
||||||
|
./windsurf-commands.sh typecheck # Run TypeScript type checking
|
||||||
|
./windsurf-commands.sh security:audit # Run security vulnerability scan
|
||||||
|
./windsurf-commands.sh security:check # Generate security report (JSON)
|
||||||
|
./windsurf-commands.sh security:outdated # Check for outdated dependencies
|
||||||
./windsurf-commands.sh help # Show available commands
|
./windsurf-commands.sh help # Show available commands
|
||||||
```
|
```
|
||||||
|
|
||||||
**Usage in AGENTS.md:**
|
**Usage:**
|
||||||
- When referencing linting in rules, can use either `npm run lint` or `./windsurf-commands.sh lint`
|
|
||||||
- Script provides consistent interface for development commands
|
- Script provides consistent interface for development commands
|
||||||
- Includes error handling and user-friendly output
|
- All commands use `pnpm` internally
|
||||||
|
- Includes error handling and user-friendly output with emojis
|
||||||
|
- Can be used interchangeably with direct `pnpm run` commands
|
||||||
|
|
||||||
### Before Committing
|
### Before Committing
|
||||||
1. Run `npm run lintfix` and `npm run lint`
|
1. Run `pnpm run lintfix` and `pnpm run lint` (or use `./windsurf-commands.sh lintfix` and `./windsurf-commands.sh lint`)
|
||||||
2. Ensure TypeScript compiles
|
2. Run `pnpm run typecheck` (or `./windsurf-commands.sh typecheck`) to ensure TypeScript compiles
|
||||||
3. Test changes in browser
|
3. Run `pnpm run security:audit` (or `./windsurf-commands.sh security:audit`) to check for vulnerabilities
|
||||||
|
4. Test changes in browser
|
||||||
|
|
||||||
## File Naming
|
## File Naming
|
||||||
- **Components**: PascalCase (`MainPage.tsx`)
|
- **Components**: PascalCase (`MainPage.tsx`)
|
||||||
@@ -359,6 +370,63 @@ mcp0_browser_snapshot → review for proper labels
|
|||||||
4. **Console errors**: Review `mcp0_browser_console_messages` for stack traces
|
4. **Console errors**: Review `mcp0_browser_console_messages` for stack traces
|
||||||
5. **Timing issues**: Use `mcp0_browser_wait_for` to wait for elements/animations
|
5. **Timing issues**: Use `mcp0_browser_wait_for` to wait for elements/animations
|
||||||
|
|
||||||
|
## CI/CD Pipelines
|
||||||
|
|
||||||
|
The project includes automated GitHub Actions workflows for code quality and security:
|
||||||
|
|
||||||
|
### Lint Check Workflows
|
||||||
|
- **Push Lint Check** (`.github/workflows/push-lint-check.yml`)
|
||||||
|
- Runs on every push to any branch
|
||||||
|
- Executes ESLint checks
|
||||||
|
- Uses pnpm v10 with caching for faster builds
|
||||||
|
- Fails if linting errors are found
|
||||||
|
|
||||||
|
- **PR Lint Check** (`.github/workflows/pr-lint-check.yml`)
|
||||||
|
- Runs on pull requests to main/master/develop
|
||||||
|
- Executes ESLint checks
|
||||||
|
- Posts comment on PR if linting fails
|
||||||
|
- Uses pnpm v10 with caching
|
||||||
|
|
||||||
|
### TypeScript Type Check Workflow
|
||||||
|
- **TypeScript Type Check** (`.github/workflows/typecheck.yml`)
|
||||||
|
- Runs on every push and pull request
|
||||||
|
- Executes `tsc --noEmit` to check for type errors
|
||||||
|
- Uses pnpm v10 with caching
|
||||||
|
- Fails if type errors are found
|
||||||
|
|
||||||
|
### Security Audit Workflow
|
||||||
|
- **Security Audit** (`.github/workflows/security-audit.yml`)
|
||||||
|
- Runs on push to main/master/develop
|
||||||
|
- Runs on all pull requests
|
||||||
|
- Runs weekly on Monday at 00:00 UTC (scheduled)
|
||||||
|
- Executes `pnpm audit` for vulnerability scanning
|
||||||
|
- Generates security report (JSON) as artifact
|
||||||
|
- Checks for outdated dependencies
|
||||||
|
- Uses pnpm v10 with caching
|
||||||
|
- Continues on error but uploads report for review
|
||||||
|
|
||||||
|
### Pipeline Requirements
|
||||||
|
All workflows require:
|
||||||
|
- Node.js 18
|
||||||
|
- pnpm v10 (matches lockfile version)
|
||||||
|
- Frozen lockfile (`pnpm install --frozen-lockfile`)
|
||||||
|
- Proper caching of pnpm store for performance
|
||||||
|
|
||||||
|
### Docker Deployment
|
||||||
|
- **Dockerfile**: Multi-stage build with Alpine Linux base
|
||||||
|
- Uses pnpm v10.30.1
|
||||||
|
- Non-root user (UID 1001)
|
||||||
|
- Read-only filesystem with security hardening
|
||||||
|
- Standalone Next.js output (~150MB image)
|
||||||
|
|
||||||
|
- **docker-compose.yml**: One-command deployment
|
||||||
|
```bash
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
- Includes health checks
|
||||||
|
- Security options (no-new-privileges, dropped capabilities)
|
||||||
|
- Runs on port 4000
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
- This is a **portfolio website** showcasing projects, experience, achievements, and skills
|
- This is a **portfolio website** showcasing projects, experience, achievements, and skills
|
||||||
- Runs on **port 4000** (not default 3000)
|
- Runs on **port 4000** (not default 3000)
|
||||||
|
|||||||
@@ -91,10 +91,6 @@ To learn more about Next.js, take a look at the following resources:
|
|||||||
|
|
||||||
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
|
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
|
||||||
|
|
||||||
## Deployment
|
|
||||||
|
|
||||||
Deploy to [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) or use Docker (see above).
|
|
||||||
|
|
||||||
## Available Scripts
|
## Available Scripts
|
||||||
|
|
||||||
| Script | Description |
|
| Script | Description |
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
"start": "next start -p 4000",
|
"start": "next start -p 4000",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
"lintfix": "next lint --fix",
|
"lintfix": "next lint --fix",
|
||||||
|
"typecheck": "tsc --noEmit",
|
||||||
"security:audit": "pnpm audit --audit-level=moderate",
|
"security:audit": "pnpm audit --audit-level=moderate",
|
||||||
"security:check": "pnpm audit --json > security-report.json || true",
|
"security:check": "pnpm audit --json > security-report.json || true",
|
||||||
"security:outdated": "pnpm outdated"
|
"security:outdated": "pnpm outdated"
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
export { default } from "./Intro";
|
import Intro from "./Intro";
|
||||||
|
|
||||||
|
export default Intro;
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
export { default } from "./SkillsAndLinks/SkillsAndLinks";
|
|
||||||
@@ -1 +1,3 @@
|
|||||||
export { default } from "./SkillsAndLinks";
|
import SkillsAndLinks from "./SkillsAndLinks";
|
||||||
|
|
||||||
|
export default SkillsAndLinks;
|
||||||
|
|||||||
@@ -11,22 +11,50 @@ show_help() {
|
|||||||
echo "Available commands:"
|
echo "Available commands:"
|
||||||
echo " lint - Run ESLint to check for code issues"
|
echo " lint - Run ESLint to check for code issues"
|
||||||
echo " lintfix - Run ESLint with auto-fix enabled"
|
echo " lintfix - Run ESLint with auto-fix enabled"
|
||||||
|
echo " typecheck - Run TypeScript type checking"
|
||||||
|
echo " security:audit - Run security vulnerability scan"
|
||||||
|
echo " security:check - Generate security report (JSON)"
|
||||||
|
echo " security:outdated - Check for outdated dependencies"
|
||||||
echo " help - Show this help message"
|
echo " help - Show this help message"
|
||||||
echo ""
|
echo ""
|
||||||
}
|
}
|
||||||
|
|
||||||
run_lint() {
|
run_lint() {
|
||||||
echo "🔍 Running ESLint..."
|
echo "🔍 Running ESLint..."
|
||||||
npm run lint
|
pnpm run lint
|
||||||
echo "✅ Linting complete!"
|
echo "✅ Linting complete!"
|
||||||
}
|
}
|
||||||
|
|
||||||
run_lintfix() {
|
run_lintfix() {
|
||||||
echo "🔧 Running ESLint with auto-fix..."
|
echo "🔧 Running ESLint with auto-fix..."
|
||||||
npm run lintfix
|
pnpm run lintfix
|
||||||
echo "✅ Linting with auto-fix complete!"
|
echo "✅ Linting with auto-fix complete!"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_typecheck() {
|
||||||
|
echo "🔎 Running TypeScript type check..."
|
||||||
|
pnpm run typecheck
|
||||||
|
echo "✅ Type checking complete!"
|
||||||
|
}
|
||||||
|
|
||||||
|
run_security_audit() {
|
||||||
|
echo "🔒 Running security audit..."
|
||||||
|
pnpm run security:audit
|
||||||
|
echo "✅ Security audit complete!"
|
||||||
|
}
|
||||||
|
|
||||||
|
run_security_check() {
|
||||||
|
echo "📋 Generating security report..."
|
||||||
|
pnpm run security:check
|
||||||
|
echo "✅ Security report generated: security-report.json"
|
||||||
|
}
|
||||||
|
|
||||||
|
run_security_outdated() {
|
||||||
|
echo "📦 Checking for outdated dependencies..."
|
||||||
|
pnpm run security:outdated
|
||||||
|
echo "✅ Outdated check complete!"
|
||||||
|
}
|
||||||
|
|
||||||
# Main script logic
|
# Main script logic
|
||||||
case "${1:-help}" in
|
case "${1:-help}" in
|
||||||
lint)
|
lint)
|
||||||
@@ -35,6 +63,18 @@ case "${1:-help}" in
|
|||||||
lintfix)
|
lintfix)
|
||||||
run_lintfix
|
run_lintfix
|
||||||
;;
|
;;
|
||||||
|
typecheck)
|
||||||
|
run_typecheck
|
||||||
|
;;
|
||||||
|
security:audit)
|
||||||
|
run_security_audit
|
||||||
|
;;
|
||||||
|
security:check)
|
||||||
|
run_security_check
|
||||||
|
;;
|
||||||
|
security:outdated)
|
||||||
|
run_security_outdated
|
||||||
|
;;
|
||||||
help|--help|-h)
|
help|--help|-h)
|
||||||
show_help
|
show_help
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user