CLAUDE.md · joemccann/dillinger
CLAUDE.md from joemccann/dillinger: 436 lines covering Quick Reference, Tech Stack, Architecture Overview, Code Conventions and more.
Template by joemccann
Install
Works with Claude Code. Read the repository before you give any tool access to your data.
curl -fsSL https://raw.githubusercontent.com/joemccann/dillinger/master/CLAUDE.md -o CLAUDE.md
Read it and adapt it to your project before use.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: code-generation
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
What's in it
A CLAUDE.md file: project memory Claude Code loads at the start of every session.
- For
- Claude Code
- Length
- 436 lines
- File
CLAUDE.md
Sections
- Quick Reference
- Tech Stack
- Architecture Overview
- Code Conventions
- Security Guidelines
- Performance Best Practices
- Common Patterns
- Testing
- Deployment
- Troubleshooting
- Key Files Reference
- Design Context
First lines (shown under the repo's MIT license)
<claude-mem-context>
# Recent Activity
<!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
### Jan 19, 2026
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #1873 | 2:32 PM | 🔵 | Next.js Migration Dependency Stack with Modern Equivalents | ~510 |
| #1861 | 2:25 PM | 🔵 | Next.js Config with Lucide-React Bundle Optimization | ~396 |
| #1850 | 2:24 PM | ✅ | Added Modal and Toast Z-Index Layers to Tailwind Configuration | ~354 |
| #1827 | 2:22 PM | 🔵 | Tailwind Configuration with Legacy Dillinger Design Tokens | ~463 |
</claude-mem-context>
# Dillinger Next.js - CLAUDE.md
> Cloud-enabled, mobile-ready, offline-storage-compatible Markdown editor built with Next.js 14.
## Quick Reference
```bash
npm run dev # Start dev server (http://localhost:3000)
npm run build # Production build
npm run start # Start production server
npm run lint # Run ESLint
```
## Tech Stack
| Category | Technology | Version |
|----------|------------|---------|
| Framework | Next.js (App Router) | 14.2.35 |
| Language | TypeScript (strict) | 5.x |
| UI | React | 18.x |
| Styling | Tailwind CSS | 3.4.1 |
| State | Zustand | 5.0.10 |
| Editor | Monaco Editor | 4.7.0 |
| Icons | Lucide React | 0.562.0 |
| Markdown | markdown-it + plugins | 14.1.0 |
## Architecture Overview
```
dillinger/
├── app/ # Next.js App Router
│ ├── api/ # API route handlers
│ │ ├── github/ # GitHub OAuth + file ops
│ │ ├── dropbox/ # Dropbox integration
│ │ ├── google-drive/ # Google Drive integration
│ │ ├── onedrive/ # Microsoft OneDrive
│ │ ├── bitbucket/ # Bitbucket integration
│ │ ├── medium/ # Medium publishing
│ │ └── export/ # PDF/HTML export
│ ├── layout.tsx # Root layout (providers)
│ ├── page.tsx # Main editor page
│ ├── globals.css # Global styles + Tailwind
│ ├── error.tsx # Error boundary
│ └── not-found.tsx # 404 page
├── components/
│ ├── editor/ # Monaco editor wrapper
│ ├── preview/ # Markdown preview pane
│ ├── navbar/ # Top navigation
│ ├── sidebar/ # Document list + integrations
│ ├── modals/ # OAuth dialogs (GitHub, Dropbox, etc.)
│ ├── providers/ # Context providers
│ └── ui/ # Reusable primitives (Toast, Skeleton)
├── hooks/ # Custom React hooks
│ ├── useGitHub.ts
│ ├── useDropbox.ts
│ ├── useGoogleDrive.ts
│ ├── useOneDrive.ts
│ ├── useBitbucket.ts
│ └── useMedium.ts
├── stores/
│ └── store.ts # Zustand store (documents, settings, UI)
├── lib/ # Utilities and helpers
└── types/ # TypeScript type definitions
```
## Code Conventions
### TypeScript
- **Strict mode enabled** - all code must pass strict type checking
- Use `interface` for object shapes, `type` for unions/intersections
- Prefer explicit return types on exported functions
- Use path alias `@/*` for imports from project root
```typescript
// Good
import { useAppStore } from '@/stores/store'
import { Document } from '@/types'
// Avoid
import { useAppStore } from '../../../stores/store'
```
### Components
- **Client Components**: Add `"use client"` directive at top for interactive components
- **Server Components**: Default for layouts and static content (no directive needed)
- **Naming**: PascalCase for components, camelCase for hooks/utilities
- **File naming**: Match component name (e.g., `EditorContainer.tsx` exports `EditorContainer`)
```typescript
// Client component pattern
"use client"
import { useState } from 'react'
interface Props {
initialValue: string
onChange: (value: string) => void
}
export function MyComponent({ initialValue, onChange }: Props) {
const [value, setValue] = useState(initialValue)
// ...
}
```
### Dynamic Imports
Use dynamic imports for:
- Components with browser-only APIs (Monaco, localStorage)
- Heavy components that aren't needed on initial load
- Components that cause hydration mismatches
```typescript
import dynamic from 'next/dynamic'
const Sidebar = dynamic(() => import('@/components/sidebar/Sidebar'), {
ssr: false, // Disable SSR for client-only components
})
```
### Styling with Tailwind
- Use design tokens from `tailwind.config.ts` (colors, spacing, z-index)
- Combine classes with `clsx` and `tailwind-merge` via the `cn()` utility
- Follow z-index scale: sidebar(1) < page(2) < editor(3) < preview(4) < overlay(5) < navbar(6) < settings(7) < modal(50) < toast(60)
```typescript
import { cn } from '@/lib/utils'
// Good - uses design tokens
<div className={cn(
"bg-bg-sidebar text-text-primary",
"w-sidebar p-gutter",
isActive && "bg-bg-highlight"
)} />
// Avoid - hardcoded values
<div className="bg-[#2B2F36] w-[270px] p-8" />
```
### Zustand State Management
- Store lives in `/stores/store.ts`Signals
- Stars
- 8,293
- Forks
- 1,161
- Open issues
- 136
- Last commit (this folder)
- Apr 6, 2026 (6 months ago)
- Last release
- Aug 4, 2016 (10 years ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/joemccann/dillinger
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from joemccann
- 0.404score
autonomous-browse
joemccann
Run an autonomous browser agent to complete a task on a website
SkillDFreshness: DClaude Code +9 - 0.404score
stream-browser
joemccann
Start a streaming browser session with real-time visual feedback
SkillDFreshness: DClaude Code +9 - 0.401score
browser-screenshot
joemccann
Take a screenshot of a webpage using the streaming browser
SkillDFreshness: DClaude Code +9
Cite this page
CLAUDE.md · joemccann/dillinger. Agent Mart. https://agentmart.dev/templates/joemccann-dillinger-claude-md (last updated 2026-10-24)