{"id":20144299,"url":"https://github.com/herd-mentality/hm_blog","last_synced_at":"2026-04-11T05:05:42.117Z","repository":{"id":108766365,"uuid":"607640821","full_name":"herd-mentality/hm_blog","owner":"herd-mentality","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-04T10:36:36.000Z","size":28261,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-13T10:50:16.003Z","etag":null,"topics":["blog","giscus","jamstack","nextjs","tailwindcss"],"latest_commit_sha":null,"homepage":"https://herdmentality.xyz/","language":"MDX","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/herd-mentality.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2023-02-28T11:42:30.000Z","updated_at":"2024-11-04T10:34:19.000Z","dependencies_parsed_at":"2024-11-04T11:24:36.921Z","dependency_job_id":null,"html_url":"https://github.com/herd-mentality/hm_blog","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herd-mentality%2Fhm_blog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herd-mentality%2Fhm_blog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herd-mentality%2Fhm_blog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herd-mentality%2Fhm_blog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/herd-mentality","download_url":"https://codeload.github.com/herd-mentality/hm_blog/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241587914,"owners_count":19986627,"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","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":["blog","giscus","jamstack","nextjs","tailwindcss"],"created_at":"2024-11-13T22:09:34.917Z","updated_at":"2025-12-30T19:36:16.110Z","avatar_url":"https://github.com/herd-mentality.png","language":"MDX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐏 The Herd Mentality Blog\n\nWelcome to the Herd Mentality blog repository! This is where we share our technical insights, tutorials, and experiences in data science, software engineering, and cloud technologies.\n\n![demo](.github/mastheaddemo.gif)\n\n## 📝 Contributing\n\nWant to write for the blog? Check out our [**Contributing Guide**](CONTRIBUTING.md) for detailed instructions on:\n\n- Adding new blog posts\n- Creating author profiles\n- Using custom components\n- Image management\n- Best practices and style guidelines\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Node.js 14.x or higher\n- npm or yarn\n\n### Installation\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/herd-mentality/hm_blog.git\ncd hm_blog\n```\n\n2. Install dependencies:\n```bash\nnpm install\n```\n\n3. Run the development server:\n```bash\nnpm run dev\n```\n\n4. Open [http://localhost:3000](http://localhost:3000) in your browser\n\nThe site will auto-reload as you make changes!\n\n## 🏗️ Tech Stack \u0026 Features\n\nBuilt with modern web technologies and best practices:\n\n### Core Framework\n- **Next.js** - React framework with SSR and static generation\n- **TypeScript** - Type-safe JavaScript\n- **Tailwind CSS 3.0** - Utility-first CSS framework\n- **MDX** - Write JSX in markdown documents\n\n### Content Features\n- 📝 Multiple author support\n- 🏷️ Tag-based organization (each tag gets its own page)\n- 🔢 Table of contents generation\n- 📊 Math display via [KaTeX](https://katex.org/)\n- 📚 Citation and bibliography support via [rehype-citation](https://github.com/timlrx/rehype-citation)\n- 🎨 Custom React components in blog posts\n- 🗂️ Nested routing for blog posts\n\n### Development Features\n- 💻 Server-side syntax highlighting with line numbers ([rehype-prism-plus](https://github.com/timlrx/rehype-prism-plus))\n- 🖼️ Automatic image optimization via [next/image](https://nextjs.org/docs/basic-features/image-optimization)\n- 🌓 Light and dark theme\n- 📱 Fully responsive design\n- ⚡ Lightweight (45kB first load JS)\n- 🎯 Near-perfect Lighthouse scores\n\n### SEO \u0026 Analytics\n- 🔍 SEO-friendly with RSS feeds and sitemaps\n- 📈 Analytics support (Plausible, Simple Analytics, Google Analytics)\n- 🔒 Preconfigured security headers\n\n## 📁 Project Structure\n\nKey directories and files:\n\n```\nmy-blog/\n├── components/          # React components\n│   ├── InPostComponents.tsx  # Custom components for blog posts\n│   ├── MDXComponents.tsx     # MDX component mappings\n│   └── ...\n├── data/\n│   ├── blog/           # Blog posts (.mdx files)\n│   ├── authors/        # Author profiles\n│   ├── siteMetadata.js # Site configuration\n│   └── headerNavLinks.ts\n├── layouts/            # Page layout templates\n├── pages/              # Next.js pages and routing\n├── public/\n│   └── static/\n│       └── images/     # Blog post images\n├── css/                # Global styles and themes\n└── contentlayer.config.ts\n```\n\n## 🎨 Customization\n\n### Key Configuration Files\n\n- **`data/siteMetadata.js`** - Site metadata (title, description, social links, etc.)\n- **`data/headerNavLinks.ts`** - Navigation menu links\n- **`tailwind.config.js`** - Tailwind CSS theme customization\n- **`css/tailwind.css`** - Global styles and color schemes\n- **`css/prism.css`** - Code block syntax highlighting theme\n- **`next.config.js`** - Next.js configuration and Content Security Policy\n\n### Styling\n\nThe site uses Tailwind CSS for styling. To customize the look:\n\n1. Modify colors in `tailwind.config.js`\n2. Update global styles in `css/tailwind.css`\n3. Change code block themes by editing `css/prism.css` (or use [Prism themes](https://github.com/PrismJS/prism-themes))\n\n### Components\n\n- **`components/InPostComponents.tsx`** - Custom blog post components (`\u003cCaption\u003e`, `\u003cHighlight\u003e`)\n- **`components/MDXComponents.tsx`** - Maps HTML elements to custom React components\n- **`components/social-icons/`** - Social media icons (add more from [Simple Icons](https://simpleicons.org/))\n\n## 🛠️ Available Scripts\n\n```bash\nnpm run dev          # Start development server\nnpm run build        # Build for production\nnpm start            # Start production server\nnpm run analyze      # Analyze bundle size\n```\n\n## 🚢 Deployment\n\nThe blog is deployed on [Vercel](https://vercel.com), which provides seamless integration with Next.js:\n\n1. Push your changes to the main branch\n2. Vercel automatically builds and deploys\n3. Visit your live site!\n\nFor other deployment platforms (Netlify, GitHub Pages, etc.), see the [Next.js deployment documentation](https://nextjs.org/docs/deployment).\n\n\u003e [!NOTE]\n\u003e The site uses `next/image` for automatic image optimization. If deploying to static hosting platforms, you may need to configure an alternative image optimization provider.\n\n## 📋 Development Notes\n\n### Design Assets\n\n- **Sheep icon**: From [IconScout](https://iconscout.com/icon/sheep-59) by [Icograms](https://iconscout.com/contributors/icograms) (color modified to #A5A5A5)\n- **Favicons**: Generated via [favicon.io](https://favicon.io/favicon-converter/)\n\n### Development Tracking\n\nOngoing development and feature planning tracked on [Trello](https://trello.com/b/UPRSuYgq/blog-development)\n\n## 🙏 Credits\n\nThis blog is built on the excellent [Tailwind Next.js Starter Blog](https://github.com/timlrx/tailwind-nextjs-starter-blog) template by [Timothy Lin](https://www.timrlx.com).\n\n## 📄 License\n\n[MIT](https://github.com/timlrx/tailwind-nextjs-starter-blog/blob/master/LICENSE) © [Timothy Lin](https://www.timrlx.com)\n\n---\n\n**Built with 🐏 by the Herd Mentality team**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fherd-mentality%2Fhm_blog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fherd-mentality%2Fhm_blog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fherd-mentality%2Fhm_blog/lists"}