feat: scaffold TypeScript project

- Initialize pnpm project with TypeScript support
- Add standard ESLint and TypeScript configurations
- Create basic src/index.ts with sample export
- Set up GitHub Actions CI workflow
- Add prod.env with 1Password references
- Configure .gitignore for Node.js projects

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
This commit is contained in:
2026-01-21 13:59:28 -08:00
parent 36295c0755
commit 2352f45794
7 changed files with 235 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check dependency pinning
uses: naomi-lgbt/dependency-pin-check@main
- uses: pnpm/action-setup@v4
with:
version: 9
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: "pnpm"
- name: Install dependencies
run: pnpm install
- name: Run linter
run: pnpm lint
- name: Build project
run: pnpm build
- name: Run tests
run: pnpm test
+133
View File
@@ -0,0 +1,133 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
.cache
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
# pnpm
pnpm-lock.yaml
+3
View File
@@ -0,0 +1,3 @@
import Config from "@nhcarrigan/eslint-config";
export default Config;
+27
View File
@@ -0,0 +1,27 @@
{
"name": "rondelle",
"version": "1.0.0",
"description": "",
"main": "./dist/index.js",
"type": "module",
"scripts": {
"build": "tsc",
"lint": "eslint .",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"packageManager": "pnpm@10.28.1",
"devDependencies": {
"@nhcarrigan/eslint-config": "5.2.0",
"@nhcarrigan/typescript-config": "4.0.0",
"@types/node": "22.10.7",
"eslint": "9.19.0",
"typescript": "5.7.3"
},
"engines": {
"node": ">=20.0.0",
"pnpm": ">=9.0.0"
}
}
+7
View File
@@ -0,0 +1,7 @@
# 1Password vault references - safe to commit
# Run with: op run --env-file=prod.env -- <command>
# Example environment variables
DATABASE_URL=op://Development/rondelle-database/connection-string
API_KEY=op://Development/rondelle-api/api-key
SECRET_TOKEN=op://Development/rondelle-secrets/token
+17
View File
@@ -0,0 +1,17 @@
/**
* @copyright 2026
* @license Naomi's Public License
* @author Naomi Carrigan
*/
/**
* Adds two numbers together.
* @param a - The first number.
* @param b - The second number.
* @returns The sum of the two numbers.
*/
const calculateSum = (a: number, b: number): number => {
return a + b;
};
export { calculateSum };
+8
View File
@@ -0,0 +1,8 @@
{
"extends": "@nhcarrigan/typescript-config",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist"
},
"include": ["src/**/*"]
}