A minimalist, content-focused blog built with Next.js and Tailwind CSS. This project provides a clean, fast, and customizable blogging platform that anyone can download, modify, and host.
- Content-First Design: Clean, distraction-free reading experience
- Responsive Layout: Optimized for both desktop and mobile viewing
- Dark/Light Mode: Toggle between themes with persistent preference
- Markdown Support: Write posts in markdown with frontmatter for metadata
- Code Highlighting: Syntax highlighting with language badges
- Image Zoom: Interactive image viewing with pinch-to-zoom on mobile
- Fast Performance: Static generation for quick page loads
- SEO Optimized: Proper metadata and semantic HTML
- Node.js (v18 or newer)
- npm, yarn, or pnpm
- Clone this repository or download it as a ZIP file
- Navigate to the project directory
- Install dependencies:
# Using npm
npm install
# Using yarn
yarn
# Using pnpm
pnpm install- Start the development server:
npm run dev
# or
yarn dev
# or
pnpm dev- Open http://localhost:3000 in your browser to see the result
-
Site Information:
- Edit
app/layout.tsxto update the site title, description, and metadata - Edit
app/page.tsxto update the homepage content and profile information
- Edit
-
Styling:
- The project uses Tailwind CSS for styling
- Modify
tailwind.config.tsto customize colors, fonts, and other design elements - Update global styles in
app/globals.css
-
Fonts:
- Change the font in
app/layout.tsx - The default font is Poppins, but you can use any Google Font
- See
font-reference.mdfor more font options
- Change the font in
Posts are written in Markdown format with frontmatter for metadata:
- Create a new
.mdfile in thepostsdirectory - Add frontmatter at the top of the file:
---
title: "Your Post Title"
date: "YYYY-MM-DD"
author: "Your Name"
excerpt: "A brief description of your post"
---- Write your content in Markdown below the frontmatter
- See the example post
getting-started.mdfor more details on Markdown features
- Add images to your posts using standard Markdown syntax:
 - For local images, place them in the
publicdirectory and reference them as/image-name.pngor/image-name.jpg - A default profile image (
profile-pic.png) is included in thepublicdirectory - Images support zooming when clicked
- Use triple backticks to create code blocks
- Specify the language for syntax highlighting
- Example:
```javascript
function hello() {
console.log("Hello, world!");
}
```- Built with Next.js 15 for server components and static generation
- Styled with Tailwind CSS for utility-first styling
- Markdown Processing via remark/rehype ecosystem
- Theme Switching with next-themes
- TypeScript for type safety
- Component-Based Architecture for maintainability
- Responsive Images with lazy loading and zoom capability
open-source-blog/
├── app/ # Next.js app directory
│ ├── globals.css # Global styles
│ ├── layout.tsx # Root layout component
│ ├── page.tsx # Homepage component
│ └── posts/ # Post page components
├── components/ # Reusable React components
│ └── ui/ # UI components
├── lib/ # Utility functions
│ ├── mdx.tsx # Markdown processing
│ └── posts.ts # Post data fetching
├── posts/ # Markdown post files
├── public/ # Static assets
├── styles/ # Additional styles
└── types/ # TypeScript type definitions
The easiest way to deploy this blog is using Vercel:
- Push your repository to GitHub, GitLab, or Bitbucket
- Import the project in Vercel
- Vercel will automatically detect Next.js and deploy your site
You can also deploy to other platforms that support Next.js:
- Netlify: Connect your repository and set the build command to
npm run build - AWS Amplify: Follow the AWS Amplify documentation for Next.js deployment
- GitHub Pages: Requires additional configuration with a custom GitHub Action
By default, this project includes Vercel Analytics. To use it:
- Deploy your site to Vercel
- Analytics will be automatically enabled
To use a different analytics provider:
- Remove the
<Analytics />component fromapp/layout.tsx - Add your preferred analytics solution following their documentation
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js - The React framework
- Tailwind CSS - Utility-first CSS framework
- next-themes - Theme management
- remark - Markdown processing