{"id":34636708,"url":"https://github.com/rajathbail/hillnote-publish","last_synced_at":"2026-01-20T17:01:15.505Z","repository":{"id":317350750,"uuid":"1067041118","full_name":"Rajathbail/hillnote-publish","owner":"Rajathbail","description":"Publish your hillnote workspace into Static SEO ready pages with API's to fetch content","archived":false,"fork":false,"pushed_at":"2025-09-30T11:16:24.000Z","size":13537,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-30T11:38:56.858Z","etag":null,"topics":["documentation","editor","seo","wiki"],"latest_commit_sha":null,"homepage":"https://hillnote.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Rajathbail.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-30T09:55:28.000Z","updated_at":"2025-09-30T11:16:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"4fb9b63a-6102-4ee4-81df-e6f0ccc0dd03","html_url":"https://github.com/Rajathbail/hillnote-publish","commit_stats":null,"previous_names":["rajathbail/hillnote-publish"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Rajathbail/hillnote-publish","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rajathbail%2Fhillnote-publish","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rajathbail%2Fhillnote-publish/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rajathbail%2Fhillnote-publish/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rajathbail%2Fhillnote-publish/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rajathbail","download_url":"https://codeload.github.com/Rajathbail/hillnote-publish/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rajathbail%2Fhillnote-publish/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28005408,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["documentation","editor","seo","wiki"],"created_at":"2025-12-24T17:02:25.179Z","updated_at":"2025-12-24T17:03:34.779Z","avatar_url":"https://github.com/Rajathbail.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @hillnote/publish\n\n\u003cimg width=\"1496\" height=\"772\" alt=\"image\" src=\"https://github.com/user-attachments/assets/e5cf7d32-ec03-414d-8a49-390ea727679f\" /\u003e\n\nTransform your Hillnote workspace into a beautiful, SEO-optimized documentation website and blog with Next.js and modern UI components.\n\n## 🚀 Overview\n\n`@hillnote/publish` is a complete documentation and blog generation system that converts your Hillnote markdown workspace into a production-ready Next.js website. Simply run one command to set up the entire documentation system, and optionally add a full-featured blog with draft/publish workflow.\n\n## ✨ Features\n\n- 📚 Beautiful documentation UI with hierarchical navigation sidebar\n- 📰 Full-featured blog system with draft/publish workflow\n- 🎨 Dark/Light theme support with next-themes\n- 📱 Fully responsive design\n- 🔍 Built-in search functionality across all documents\n- 🤖 AI-crawler optimized with llms.txt and structured data\n- 📄 Automatic sitemap.xml and robots.txt generation\n- 📁 Auto-expanding navigation for active documents\n- 🔗 Smart URL routing with SEO-friendly slugs\n- 📝 Advanced markdown rendering with syntax highlighting\n- 🏷️ Support for document metadata, related documents, and author's notes\n- ⚡ Static page generation for optimal performance\n- 🛠️ Simple CLI setup - one command to install everything\n\n## 🎯 Quick Start (Recommended)\n\n### Install in Your Next.js Project\n\n```bash\n# Navigate to your Next.js project\ncd your-nextjs-project\n\n# Run the initialization command\nnpx @hillnote/publish init\n\n# Or if using src/app structure\nnpx @hillnote/publish init --src\n```\n\nThat's it! The CLI will automatically:\n- ✓ Copy the `hillnoteDoc` system to your project\n- ✓ Set up API routes for search and document fetching\n- ✓ Add the page generation script\n- ✓ Update your package.json with necessary scripts\n- ✓ Configure everything based on your project structure\n\n### Next Steps\n\n1. **Add your Hillnote workspace:**\n   ```bash\n   cp -r \"/path/to/Welcome to Hillnote!\" public/\n   ```\n\n2. **Configure your site:**\n   Edit `hillnoteDoc/config/site.config.js` (or `src/hillnoteDoc/config/site.config.js`)\n\n3. **Generate pages:**\n   ```bash\n   npm run generate-pages\n   ```\n\n4. **Start your dev server:**\n   ```bash\n   npm run dev\n   ```\n\nYour documentation site will be live at `http://localhost:3000/doc`\n\n## 📦 What Gets Installed\n\nWhen you run `npx @hillnote/publish init`, the following structure is added to your project:\n\n```\nyour-project/\n├── hillnoteDoc/              # Documentation system (or src/hillnoteDoc/)\n│   ├── components/          # UI components\n│   ├── config/             # Configuration\n│   ├── lib/                # Utilities\n│   └── styles/             # Styles\n├── app/api/                # API routes (or src/app/api/)\n│   ├── ai-sitemap/\n│   ├── docs/\n│   └── search/\n└── scripts/\n    └── generate-pages.mjs  # Page generation script\n```\n\n## 🔧 Installation \u0026 Setup\n\n### Prerequisites\n- Node.js 18+\n- Next.js 15+ project (with App Router)\n- A Hillnote workspace exported with markdown files\n\n### Step 1: Initialize\n```bash\nnpx @hillnote/publish init\n```\n\n### Step 2: Add Your Workspace\nCopy your Hillnote workspace folder to `public/`:\n```bash\ncp -r \"/path/to/Welcome to Hillnote!\" public/\n```\n\n### Step 3: Configure\nEdit `hillnoteDoc/config/site.config.js`:\n- Set your site name and description\n- Update the workspace path to match your folder name\n- Customize routing, SEO, and UI settings\n\n### Step 4: Generate \u0026 Run\n```bash\nnpm run generate-pages\nnpm run dev\n```\n\n## 📦 Alternative: Manual Setup (For Advanced Users)\n\nIf you prefer not to use the CLI or want more control:\n\n### Option 1: Use the NextJS Boilerplate\n\n1. **Copy the boilerplate to your project location:**\n   ```bash\n   cp -r \"NextJS Boilerplate\" /path/to/your-project-name\n   cd /path/to/your-project-name\n   ```\n\n2. **Install dependencies:**\n   ```bash\n   npm install\n   ```\n\n3. **Add your Hillnote workspace:**\n   ```bash\n   # Copy your exported Hillnote workspace to the public folder\n   cp -r \"/path/to/Welcome to Hillnote!\" public/\n   ```\n\n4. **Configure your site:**\n   Edit `hillnoteDoc/config/site.config.js` with your site details (see Configuration section below)\n\n5. **Generate pages and start:**\n   ```bash\n   npm run generate-pages\n   npm run dev\n   ```\n\n   Your site will be live at `http://localhost:3000`\n\n### Option 2: Add to Existing Next.js Project\n\n1. **Copy the hillnoteDoc folder to your project root:**\n   ```bash\n   cp -r hillnoteDoc /path/to/your-nextjs-project/\n   ```\n\n2. **Copy the necessary files:**\n   ```bash\n   # Copy API routes\n   cp -r \"hillnoteDoc/-- TO BE MOVED --/api/\"* your-project/app/api/\n   # OR if using src folder:\n   cp -r \"hillnoteDoc/-- TO BE MOVED --/api/\"* your-project/src/app/api/\n\n   # Copy the generation script\n   cp \"hillnoteDoc/-- TO BE MOVED --/scripts/generate-pages-app.mjs\" your-project/scripts/generate-pages.mjs\n   # OR if using src folder:\n   cp \"hillnoteDoc/-- TO BE MOVED --/scripts/generate-pages-src.mjs\" your-project/scripts/generate-pages.mjs\n   ```\n\n3. **Install required dependencies:**\n   ```bash\n   npm install @radix-ui/react-accordion @radix-ui/react-checkbox @radix-ui/react-dialog \\\n     @radix-ui/react-scroll-area @radix-ui/react-separator @radix-ui/react-slot \\\n     @radix-ui/react-tabs class-variance-authority clsx gray-matter lucide-react \\\n     marked marked-gfm-heading-id next-themes tailwind-merge\n   ```\n\n4. **Add the generation script to package.json:**\n   ```json\n   {\n     \"scripts\": {\n       \"generate-pages\": \"node scripts/generate-pages.mjs\",\n       \"prebuild\": \"node scripts/generate-pages.mjs\"\n     }\n   }\n   ```\n\n5. **Copy your Hillnote workspace to public folder and configure site.config.js**\n\n## ⚙️ Configuration\n\nEdit `hillnoteDoc/config/site.config.js`:\n\n```javascript\nexport const siteConfig = {\n  // Basic site information\n  siteName: \"Your Documentation Site\",\n  siteDescription: \"Your site description\",\n  siteUrl: \"https://your-domain.com\",\n\n  // Project Structure\n  projectStructure: {\n    useSrcFolder: false, // true if using src/app, false if using app/\n  },\n\n  // SEO Configuration\n  seo: {\n    titleTemplate: \"%s | Your Site\",\n    defaultTitle: \"Your Documentation\",\n    defaultDescription: \"Default meta description\",\n    keywords: \"your, keywords, here\",\n    author: \"Your Name\",\n    publisher: \"Your Organization\",\n    llmsIntro: \"Introduction for AI crawlers\",\n    allowAIBots: true,\n    crawlDelay: null,\n  },\n\n  // Routing Configuration\n  routing: {\n    docBase: \"doc\", // Base path for docs (e.g., /doc, /docs, /wiki)\n    trailingSlash: false,\n  },\n\n  // Workspace Configuration\n  workspace: {\n    path: \"/Welcome to Hillnote! /\", // Your workspace folder name in public/\n    enabled: true,\n    documentsFolder: \"documents\",\n    registryFile: \"documents-registry.json\",\n    initialFile: \"documents/Start Here .md\",\n  },\n\n  // UI Configuration\n  ui: {\n    navigationMode: \"wiki\", // \"emoji\" or \"wiki\"\n    showHeaders: true,\n    authorsNotes: {\n      enabled: true,\n      title: \"Author's Notes\",\n    },\n    relatedDocuments: {\n      enabled: true,\n      title: \"Related Documents\",\n    }\n  }\n}\n```\n\n## 📁 Project Structure\n\n```\nyour-project/\n├── app/ (or src/app/)          # Next.js app directory\n│   ├── api/                    # API routes\n│   │   ├── ai-sitemap/         # AI-readable sitemap\n│   │   ├── docs/               # Document fetch API\n│   │   └── search/             # Search API\n│   └── doc/                    # Generated static pages (auto-generated)\n├── hillnoteDoc/                # Documentation system\n│   ├── components/             # UI components\n│   │   ├── ask-ai-dialog.jsx\n│   │   ├── navigation-sidebar.jsx\n│   │   ├── search-dialog.jsx\n│   │   ├── table-of-contents.jsx\n│   │   ├── theme-provider.jsx\n│   │   └── theme-toggle.jsx\n│   ├── config/\n│   │   └── site.config.js      # Main configuration file\n│   ├── lib/                    # Utility functions\n│   │   ├── debounce.js\n│   │   ├── documents-server.js\n│   │   ├── slug-utils.js\n│   │   ├── static-routes.js\n│   │   └── workspace.js\n│   ├── styles/\n│   │   └── markdown.css        # Markdown styling\n│   └── -- TO BE MOVED --/      # Files to copy to your project\n│       ├── api/                # API routes templates\n│       └── scripts/            # Generation scripts\n├── components/\n│   └── ui/                     # Shadcn UI components\n├── public/\n│   ├── Welcome to Hillnote!/   # Your Hillnote workspace\n│   ├── robots.txt              # Auto-generated\n│   ├── sitemap.xml             # Auto-generated\n│   └── llms.txt                # Auto-generated\n├── scripts/\n│   └── generate-pages.mjs      # Page generation script\n└── package.json\n```\n\n## 🔧 Components\n\n### Navigation Components\n\n#### NavigationSidebar\nHierarchical sidebar with collapsible sections.\n```jsx\nimport { NavigationSidebar } from '@/hillnoteDoc/components/navigation-sidebar'\n\n\u003cNavigationSidebar /\u003e\n```\n\n#### TableOfContents\nAutomatically generated from document headings.\n```jsx\nimport { TableOfContents } from '@/hillnoteDoc/components/table-of-contents'\n\n\u003cTableOfContents /\u003e\n```\n\n### Interactive Components\n\n#### SearchDialog\nFull-text search across all documents.\n```jsx\nimport { SearchDialog } from '@/hillnoteDoc/components/search-dialog'\n\n\u003cSearchDialog /\u003e\n```\n\n#### AskAIDialog\nAI-powered question answering (requires API integration).\n```jsx\nimport { AskAIDialog } from '@/hillnoteDoc/components/ask-ai-dialog'\n\n\u003cAskAIDialog /\u003e\n```\n\n#### ThemeToggle\nDark/light theme switcher.\n```jsx\nimport { ThemeToggle } from '@/hillnoteDoc/components/theme-toggle'\n\n\u003cThemeToggle /\u003e\n```\n\n## 🛠️ Utilities\n\n### Workspace Functions\n```javascript\nimport {\n  getWorkspaceFileTree,\n  buildFileTree,\n  fetchWorkspaceRegistry\n} from '@/hillnoteDoc/lib/workspace'\n```\n\n### Document Functions\n```javascript\nimport {\n  getDocumentRegistry,\n  getDocumentByPath,\n  findDocumentBySlug\n} from '@/hillnoteDoc/lib/documents-server'\n```\n\n### Slug Utilities\n```javascript\nimport {\n  pathToSlug,\n  documentPathToStaticUrl\n} from '@/hillnoteDoc/lib/slug-utils'\n```\n\n## 📝 Page Generation\n\nThe `generate-pages.mjs` script automatically:\n\n1. **Scans your Hillnote workspace** for markdown files\n2. **Generates static Next.js pages** in `app/doc/` (or `src/app/doc/`)\n3. **Creates SEO files:**\n   - `public/sitemap.xml` - XML sitemap for search engines\n   - `public/robots.txt` - Robot crawling rules\n   - `public/llms.txt` - AI-readable content index\n   - `public/llms-txt.txt` - Extended AI crawler content\n\n### Running Generation\n\n```bash\n# Manual generation\nnpm run generate-pages\n\n# Automatic on build (configured in package.json prebuild)\nnpm run build\n```\n\n### Command Line Options\n\n```bash\nnode scripts/generate-pages.mjs [options]\n\nOptions:\n  --no-sitemap     Do not generate sitemap.xml\n  --no-robots      Do not generate robots.txt\n  --no-llms        Do not generate llms.txt and llms-txt.txt files\n  -h, --help       Show help message\n```\n\n**Note:** `doc/page.*` and `doc/layout.*` files are always preserved if they exist, allowing you to customize the root documentation page and layout without them being overwritten.\n\n#### Examples\n\n```bash\n# Generate everything (default)\nnpm run generate-pages\n\n# Skip sitemap and robots.txt generation\nnode scripts/generate-pages.mjs --no-sitemap --no-robots\n\n# Only generate document pages (no SEO files)\nnode scripts/generate-pages.mjs --no-sitemap --no-robots --no-llms\n```\n\n## 📰 Blog Support\n\n`@hillnote/publish` includes a full-featured blog system that integrates seamlessly with your documentation site.\n\n### Setting Up the Blog\n\n```bash\n# Initialize the blog system in your project\nnode scripts/generate-blog.mjs --setup\n```\n\nThis creates the following structure:\n\n```\nyour-project/\n├── public/\n│   └── blog/\n│       ├── draft/              # Draft posts (not published)\n│       ├── published/          # Published posts (live on site)\n│       └── resources/          # Images and assets\n│           └── images/\n├── app/ (or src/app/)\n│   ├── api/\n│   │   └── blog/\n│   │       └── route.js        # Blog API endpoint\n│   └── blog/\n│       ├── page.jsx            # Blog listing page\n│       └── [slug]/\n│           └── page.jsx        # Individual blog post page\n└── hillnoteDoc/\n    └── components/\n        └── blog/               # Blog UI components\n```\n\n### Blog Workflow: Draft → Published\n\n1. **Create a draft**: Write your blog post in `public/blog/draft/my-post.md`\n\n2. **Add YAML frontmatter** at the top of your markdown file:\n   ```yaml\n   ---\n   title: \"Your Blog Post Title\"\n   author: \"Your Name\"\n   publishDate: \"2025-01-15\"\n   description: \"A brief description for SEO and previews\"\n   coverImage: \"my-cover-image.jpg\"  # or full URL\n   tags:\n     - Tutorial\n     - Feature\n   ---\n\n   Your blog content starts here...\n   ```\n\n3. **Publish the post**: Move the file to `public/blog/published/`\n   ```bash\n   mv public/blog/draft/my-post.md public/blog/published/\n   ```\n\n4. **Generate the blog**:\n   ```bash\n   node scripts/generate-blog.mjs --publish\n   ```\n\n### Blog Commands\n\n```bash\n# Initial setup - creates blog folder structure and components\nnode scripts/generate-blog.mjs --setup\n\n# Publish - generates blog pages and updates registry\nnode scripts/generate-blog.mjs --publish\n\n# Update - regenerates pages after editing posts\n# Note: Does NOT update sitemap.xml - run --publish for full regeneration\nnode scripts/generate-blog.mjs --update\n\n# Help - show all available options\nnode scripts/generate-blog.mjs --help\n```\n\n### Adding Images to Blog Posts\n\nFor images in your blog posts:\n\n1. **Place images** in `public/blog/resources/images/`\n\n2. **Reference in frontmatter** (for cover images):\n   ```yaml\n   coverImage: \"my-image.jpg\"  # Resolves to /blog/resources/images/my-image.jpg\n   ```\n   Or use a full URL:\n   ```yaml\n   coverImage: \"https://example.com/image.jpg\"\n   ```\n\n3. **Reference in content** (for inline images):\n   ```markdown\n   ![Alt text](/blog/resources/images/my-image.jpg)\n   ```\n\n### Blog Templates\n\nThree pre-built blog templates are available:\n\n- **featured-grid** - Hero post with grid layout\n- **minimal-list** - Clean, simple list view\n- **magazine** - Publication-style layout\n\nSpecify the template during setup or edit the generated page.\n\n### Blog Components\n\n#### BlogSection - Embeddable Homepage Component\n\nDisplay recent blog posts on your homepage or landing pages:\n\n```jsx\nimport { BlogSection } from '@/hillnoteDoc/components/blog'\n\n// Basic usage - shows 3 posts\n\u003cBlogSection /\u003e\n\n// Customized\n\u003cBlogSection\n  limit={6}\n  title=\"Latest Articles\"\n  description=\"News and updates from our team\"\n  showViewAll={true}\n  className=\"bg-muted/50\"\n/\u003e\n```\n\n**Props:**\n- `limit` (number, default: 3) - Number of posts to display\n- `title` (string) - Section heading\n- `description` (string) - Subheading text\n- `showViewAll` (boolean, default: true) - Show \"View all posts\" link\n- `className` (string) - Additional CSS classes\n\n#### Other Blog Components\n\n```jsx\nimport {\n  BlogHeader,      // Post header with title, author, date\n  BlogFooter,      // Post footer with tags and sharing\n  BlogCoverImage,  // Responsive cover image\n  BlogContent,     // Markdown content renderer\n  RelatedArticles, // Related posts section\n  BlogArticle,     // Full article wrapper\n  BackToBlog       // Navigation back to blog list\n} from '@/hillnoteDoc/components/blog'\n```\n\n### Blog API\n\nThe blog API is available at `/api/blog`:\n\n```javascript\n// Get all posts\nfetch('/api/blog')\n  .then(res =\u003e res.json())\n  .then(data =\u003e console.log(data.posts))\n\n// Get single post by slug\nfetch('/api/blog?slug=my-post-title')\n  .then(res =\u003e res.json())\n  .then(data =\u003e console.log(data.post))\n```\n\n### Blog Registry\n\nFor performance, the blog system generates a `blog-registry.json` file containing metadata for all posts. This is automatically updated when you run `--publish` or `--update`.\n\n## 🎨 Customization\n\n### Styling\n\nThe package uses Tailwind CSS. Customize by:\n\n1. **Edit Tailwind config** in `tailwind.config.js`\n2. **Modify markdown styles** in `hillnoteDoc/styles/markdown.css`\n3. **Customize component styles** directly in component files\n\n### Navigation Modes\n\n- **`wiki` mode**: Clean accordion-style navigation\n- **`emoji` mode**: Shows emoji icons from document titles\n\nSet in `site.config.js`:\n```javascript\nui: {\n  navigationMode: \"wiki\" // or \"emoji\"\n}\n```\n\n### URL Customization\n\nChange the base documentation path:\n```javascript\nrouting: {\n  docBase: \"docs\" // Changes /doc/* to /docs/*\n}\n```\n\n## 🚢 Deployment\n\n### Vercel (Recommended)\n1. Push your code to GitHub\n2. Import project in Vercel\n3. Vercel automatically detects Next.js and configures build\n4. Deploy!\n\n### Other Platforms\n- **Netlify**: Supports Next.js with adapter\n- **AWS Amplify**: Full Next.js support\n- **Self-hosted**: `npm run build \u0026\u0026 npm start`\n\n### Pre-deployment Checklist\n- [ ] Update `siteUrl` in `site.config.js`\n- [ ] Run `npm run generate-pages`\n- [ ] Test build locally with `npm run build`\n- [ ] Verify all images and assets are in `public/`\n\n## 🔍 SEO Features\n\n- **Automatic sitemap generation** - Search engines discover all pages\n- **Structured metadata** - Rich snippets in search results\n- **Open Graph tags** - Beautiful social media previews\n- **AI crawler optimization** - llms.txt for AI search engines\n- **Semantic HTML** - Proper heading hierarchy\n- **Fast page loads** - Static generation for optimal performance\n\n## 📋 Requirements\n\n### Dependencies\n```json\n{\n  \"@radix-ui/react-accordion\": \"^1.2.12\",\n  \"@radix-ui/react-checkbox\": \"^1.1.3\",\n  \"@radix-ui/react-dialog\": \"^1.1.4\",\n  \"@radix-ui/react-scroll-area\": \"^1.2.2\",\n  \"@radix-ui/react-separator\": \"^1.1.0\",\n  \"@radix-ui/react-slot\": \"^1.1.1\",\n  \"@radix-ui/react-tabs\": \"^1.1.2\",\n  \"class-variance-authority\": \"^0.7.1\",\n  \"clsx\": \"^2.1.1\",\n  \"gray-matter\": \"^4.0.3\",\n  \"lucide-react\": \"^0.468.0\",\n  \"marked\": \"^16.1.0\",\n  \"marked-gfm-heading-id\": \"^5.1.0\",\n  \"next\": \"^15.5.2\",\n  \"next-themes\": \"^0.5.1\",\n  \"react\": \"^19.0.0\",\n  \"react-dom\": \"^19.0.0\",\n  \"tailwind-merge\": \"^2.6.0\"\n}\n```\n\n### System Requirements\n- Node.js 18+\n- Next.js 15+\n- A Hillnote workspace exported with:\n  - `documents/` folder with markdown files\n  - `documents-registry.json` metadata file\n  - Optional: `resources/` folder for images\n\n## 🐛 Troubleshooting\n\n### Pages not generating?\n- Verify workspace folder is in `public/`\n- Check `documents-registry.json` exists\n- Ensure `workspace.path` in config matches folder name\n\n### Import errors?\n- All imports should use `@/hillnoteDoc` alias\n- Check `jsconfig.json` or `tsconfig.json` has correct paths\n\n### Styling issues?\n- Clear `.next` cache: `rm -rf .next`\n- Rebuild: `npm run dev`\n\n### API routes not working?\n- Ensure API files are in `app/api/` (or `src/app/api/`)\n- Check Next.js console for errors\n- Verify `projectStructure.useSrcFolder` setting\n\n## 📄 License\n\nMIT License - Free to use, modify, and distribute.\n\n## 🤝 Support\n\n- **Issues**: Report bugs or request features in your repository\n- **Documentation**: Check the example site in NextJS Boilerplate\n- **Community**: Join the Hillnote community\n\n---\n\nBuilt with ❤️ for the Hillnote ecosystem using Next.js, Tailwind CSS, and Radix UI\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajathbail%2Fhillnote-publish","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajathbail%2Fhillnote-publish","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajathbail%2Fhillnote-publish/lists"}