Eamon Hyland's Preferences
| Category | Preference | | -------------------- | ---------------------------------- | | Package Manager | Bun for apps, pnpm for libraries | | Language | TypeScript (strict mode, ESM only) | | Linting & Formatting | Oxlint and Oxfmt | | Testing | Bun for apps, Vitest for libraries | | Git Hooks | simple-git-hooks + lint-staged | | Bundler | Bun for apps, tsdown for libraries |
Core Conventions
Client-Server Communication
- Prefer tRPC with React Query for fullstack projects (when the server and client are in the same package). See bun-trpc-setup.
- Otherwise prefer GraphQL. See bun-graphql-setup.
TypeScript
- Never use
@ts-ignore - Never use
as anycasting oras unknown as <some-other-type>
Test Conventions
- Test files:
foo.ts→foo.test.ts(same directory) - Use
describe/itAPI (nottest)
Core References
| Topic | Description | Reference | | -------------------------- | ----------------------------------------------- | ------------------------------------------------------ | | Server Configuration | Environment variables and validation with Zod | server-config | | Package Scripts | Recommended scripts for development and CI | scripts | | Linting & Formatting | Oxlint and Oxfmt configuration | linting | | Git Hooks | Simple-git-hooks and lint-staged setup | git-hooks | | Bun and tRPC SPA Setup | Guidance for setting up a SPA with Bun and trpc | bun-trpc-setup | | Bun and GraphQL Setup | Configuration for Bun.serve with Yoga GraphQL | bun-graphql-setup | | SQLite with Drizzle | SQLite setup with Drizzle ORM in Bun runtime | sqlite-drizzle | | Deployment and CI/CD Setup | Buildkite pipelines, docker configuration | deployment |
Scan to join WeChat group