Personal utilities collection with a Next.js 16 app shell for local development and demos. Reusable code lives under src/; routing and route-local UI stay in src/app/.
- Framework: Next.js 16 (App Router)
- Language: TypeScript (strict)
- Styling: Tailwind CSS v4
- Package manager: pnpm
pnpm install
pnpm devOpen http://localhost:3000. Agent symlinks are recreated automatically on pnpm dev (see README-AGENTS.md).
| Command | Description |
|---|---|
pnpm dev |
Start the Next.js dev server |
pnpm build |
Production build |
pnpm typecheck |
Run TypeScript (tsc --noEmit) |
pnpm lint |
Lint src/**/*.{ts,tsx} |
pnpm lint:fix |
Lint with auto-fix |
pnpm test |
Run Vitest in watch mode |
pnpm test:run |
Run Vitest once (CI) |
See README-DX.md for the full tooling reference (Prettier, Husky, commitlint, editor setup).
src/
├── app/ # Next.js App Router — pages, layout, route-local UI
├── components/ # Shared React components
├── config/ # App configuration (auth routes, IndexedDB)
├── hooks/ # Shared React hooks
├── lib/ # Third-party wrappers (auth, Sentry)
├── types/ # Shared TypeScript types
├── utils/ # Pure utility functions
└── styles/ # Global CSS and design tokens
| Guide | Description |
|---|---|
| Utils | Pure helpers by domain — groupBy, generateSlug, cn, authenticated server action wrappers |
| Components | Shared React components — conventions, index, and usage (e.g. polymorphic Text with an as prop) |
| Hooks | Shared React hooks — debounce, storage, observers, geolocation, IndexedDB, and more |
| Lib | Third-party integrations — Auth.js and Sentry wrappers |
| Auth | Google OAuth setup, session helpers, and protected action integration |
| Sentry | Error reporting and Sentry SDK configuration |
| Config | Shared constants — auth route paths and IndexedDB store config |
| DX | Developer experience — ESLint, Prettier, Husky, lint-staged, commitlint, TypeScript, editor setup |
| Agents setup | AI agent setup — rules, slash commands, symlinks, and agents/ directory layout |
| Agent guide | Agent guide — project conventions, commands, and Next.js docs index |
- File names: kebab-case
- Exports: named only — no default exports
- Imports:
@/alias for paths undersrc/ - Commits: Conventional Commits (
type(scope): subject)
Coding rules and slash commands are committed under agents/, copied in from agent-kit. After cloning, run pnpm setup:agent-links or pnpm dev to wire them into Cursor.