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
Chalk Labs
Need help deploying CLAUDE.md · joemccann/dillinger?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
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
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get CLAUDE.md · joemccann/dillinger running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
CLAUDE.md · joemccann/dillinger. Agent Mart. https://agentmart.dev/templates/joemccann-dillinger-claude-md (last updated 2026-10-24)