A personal knowledge base and project management tool built with Next.js.
- Markdown documents with frontmatter support
- Full-text search across all documents
- Tag-based filtering and categorization
- Download documents as
.mdfiles - Responsive design with mobile sidebar
- Create and manage multiple projects
- Drag-and-drop task management
- 5-column workflow: Backlog → To Do → In Progress → Review → Done
- Task priorities (Low, Medium, High)
- Tags and due dates
- Local storage persistence
- Node.js 18+
- npm or yarn
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Start production server
npm startPlace markdown files in the documents/ directory with frontmatter:
---
title: "My Document Title"
tags: [notes, ideas]
date: 2026-02-05
---
# Content here
Your markdown content...journal- Daily journal entriesnotes- General notesnewsletters- Newsletter draftsscripts- Video/content scriptsideas- Ideas and brainstormsconcepts- Framework and concept docsdirt-roamers- Dirt Roamers business docsemail-sequences- Email sequence templatessales- Sales-related content
second-brain/
├── documents/ # Markdown documents
├── src/
│ ├── app/
│ │ ├── api/
│ │ │ └── documents/
│ │ │ └── route.ts # Documents API
│ │ ├── projects/
│ │ │ └── page.tsx # Kanban board page
│ │ ├── globals.css # Global styles
│ │ ├── layout.tsx # Root layout with header
│ │ └── page.tsx # Documents page
│ ├── components/
│ │ ├── Header.tsx # Navigation header
│ │ ├── KanbanBoard.tsx # Kanban board component
│ │ └── index.ts # Component exports
│ └── lib/
│ └── documents.ts # Document utilities
├── package.json
└── README.md
- 📄 Documents (
/) - Browse and search markdown documents - 📋 Projects (
/projects) - Kanban board for project management
- Framework: Next.js 16
- Styling: Tailwind CSS 4
- Markdown: react-markdown with remark-gfm
- State: React hooks + localStorage
- TypeScript: Full type coverage with JSDoc documentation
Returns all documents and tags.
interface Response {
documents: Document[];
tags: string[];
}
interface Document {
slug: string;
title: string;
content: string;
tags: string[];
date: string;
excerpt: string;
}The Kanban board persists data to localStorage under the key second-brain-kanban:
interface StoredData {
projects: Project[];
activeProjectId: string | null;
}# Lint code
npm run lint
# Type check
npx tsc --noEmitPrivate - All rights reserved