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 |