{"id":33319251,"url":"https://github.com/akzar1el/blog-starter-template","last_synced_at":"2026-04-09T21:02:19.315Z","repository":{"id":324626891,"uuid":"1097856553","full_name":"AKzar1el/blog-starter-template","owner":"AKzar1el","description":"🚀 Professional blog starter with Next.js 14+, TypeScript, SQLite. Rich content support, video/audio embedding, 13 categories, powerful API. Launch your blog in 5 minutes. Free for personal use.","archived":false,"fork":false,"pushed_at":"2025-11-17T00:40:44.000Z","size":1147,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-17T02:28:14.542Z","etag":null,"topics":["beginner-friendly","blog","blog-starter","blog-template","developer-blog","markdown-blog","nextjs","nextjs-blog","react","responsive-design","seo-friendly","sqlite","starter-template","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"https://blog-template-drab.vercel.app/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AKzar1el.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-MIT.txt","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-11-16T23:49:03.000Z","updated_at":"2025-11-17T00:50:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/AKzar1el/blog-starter-template","commit_stats":null,"previous_names":["akzar1el/blog-starter-template"],"tags_count":null,"template":true,"template_full_name":null,"purl":"pkg:github/AKzar1el/blog-starter-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AKzar1el%2Fblog-starter-template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AKzar1el%2Fblog-starter-template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AKzar1el%2Fblog-starter-template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AKzar1el%2Fblog-starter-template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AKzar1el","download_url":"https://codeload.github.com/AKzar1el/blog-starter-template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AKzar1el%2Fblog-starter-template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285319005,"owners_count":27151474,"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-11-19T02:00:05.673Z","response_time":65,"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":["beginner-friendly","blog","blog-starter","blog-template","developer-blog","markdown-blog","nextjs","nextjs-blog","react","responsive-design","seo-friendly","sqlite","starter-template","tailwindcss","typescript"],"created_at":"2025-11-19T20:00:28.626Z","updated_at":"2025-11-19T20:01:06.394Z","avatar_url":"https://github.com/AKzar1el.png","language":"TypeScript","funding_links":["https://buymeacoffee.com/akzar1el"],"categories":[],"sub_categories":[],"readme":"# 🚀 Your Professional Blog - Modern Blog Starter Template\n\n![GitHub stars](https://img.shields.io/github/stars/AKzar1el/blog-starter-template?style=social)\n![GitHub forks](https://img.shields.io/github/forks/AKzar1el/blog-starter-template?style=social)\n![GitHub issues](https://img.shields.io/github/issues/AKzar1el/blog-starter-template)\n![License](https://img.shields.io/github/license/AKzar1el/blog-starter-template)\n![Last commit](https://img.shields.io/github/last-commit/AKzar1el/blog-starter-template)\n\n\u003e Launch your professional blog in minutes, not days. A production-ready, SEO-optimized blog platform with rich content support, multimedia embedding, and powerful API.\n\n[🌐 Live Demo](#) | [📖 Full API Docs](API_DOCUMENTATION.md) | [🐛 Report Bug](https://github.com/AKzar1el/blog-starter-template/issues) | [✨ Request Feature](https://github.com/AKzar1el/blog-starter-template/issues)\n\n---\n\n## 📸 Preview\n\n![Blog Template Preview](screenshot.png)\n\u003c!-- Replace SCREENSHOT_URL_HERE with your actual screenshot URL --\u003e\n\n\u003c!-- Optional: Add more screenshots\n![Blog Post View](SCREENSHOT_POST_URL_HERE)\n![Mobile View](SCREENSHOT_MOBILE_URL_HERE)\n--\u003e\n\n---\n\n## 💡 Why This Template?\n\nBuilding a professional blog from scratch takes weeks of development time. **Your Professional Blog** gives you everything you need to start publishing content immediately:\n\n- ✅ **Production-ready in 5 minutes** - Clone, install, and start writing\n- ✅ **SEO optimized out of the box** - Rank higher on Google from day one\n- ✅ **No configuration required** - Sensible defaults that just work\n- ✅ **Professional design** - Clean, modern UI with smooth animations\n- ✅ **Powerful API** - Programmatic content creation for automation\n- ✅ **Free for personal use** - Start your blog journey today\n\nPerfect for **developers**, **startups**, **indie hackers**, **content creators**, and anyone who wants a **modern, fast, SEO-friendly blog** without the complexity.\n\n---\n\n## ✨ Features\n\n### 🎯 Core Functionality\n- **Modern Tech Stack** - Next.js 14+ with App Router, TypeScript, Tailwind CSS\n- **Rich Content Support** - Full Markdown and HTML support with syntax highlighting\n- **13 Blog Categories** - Organized content (Technology, Business, Education, Entertainment, etc.)\n- **Turso Database** - Serverless SQLite database, perfect for edge deployment\n- **Mobile-First Design** - Responsive and beautiful on all devices\n- **Lightning Fast** - Server-side rendering, image optimization, code splitting\n\n### 🎬 Media \u0026 Content\n- **Video Embedding** - YouTube, Vimeo, and direct video files (.mp4, .webm, .ogg)\n- **Audio Support** - Embed podcasts and audio files (.mp3, .wav, .ogg, .m4a)\n- **Flexible Layouts** - Position media inline, left, right, or full-width\n- **Image Optimization** - Automatic image compression and lazy loading\n- **Table of Contents** - Auto-generated from post headings\n- **Code Highlighting** - Beautiful syntax highlighting for technical posts\n\n### 🔍 SEO \u0026 Performance\n- **SEO-Optimized** - Dynamic meta tags, Open Graph, Twitter Cards\n- **JSON-LD Structured Data** - Rich search results with article schema\n- **Automatic Sitemap** - Generated sitemap.xml for search engines\n- **Robots.txt** - Proper search engine indexing configuration\n- **90+ Lighthouse Score** - Optimized for Core Web Vitals\n- **Clean URLs** - SEO-friendly slugs and canonical URLs\n\n### 🚀 Developer Experience\n- **Powerful REST API** - Create posts programmatically with secure authentication\n- **TypeScript** - Full type safety and excellent IDE support\n- **Hot Reload** - Instant preview of changes during development\n- **Comprehensive Validation** - Input validation for all API endpoints\n- **Well-Documented** - Clear code, comments, and extensive API documentation\n- **Easy Customization** - Modular components and Tailwind CSS\n\n### 📊 Analytics \u0026 Engagement\n- **View Counter** - Track post popularity\n- **Reading Time** - Automatic reading time estimates\n- **Social Sharing** - Built-in Twitter, LinkedIn, and link sharing\n- **Tag System** - Organize and filter posts by tags\n- **Category Navigation** - Filter posts by category with one click\n- **Comment System** - Threaded comments with nested replies, likes, and real-time engagement\n\n### 🎨 UI/UX\n- **Smooth Animations** - Fade-in and slide effects for professional feel\n- **Dark/Light Compatible** - Ready for dark mode implementation\n- **Professional Shadows** - Depth and hierarchy with subtle shadows\n- **Responsive Tables** - Mobile-optimized data display\n- **Accessible** - Semantic HTML and ARIA attributes\n\n---\n\n## 🚀 Quick Start\n\nGet your blog running in **4 simple steps**:\n\n### 1️⃣ Clone the repository\n\n```bash\ngit clone https://github.com/AKzar1el/blog-starter-template.git\ncd blog-starter-template\n```\n\n### 2️⃣ Set up Turso Database\n\n**Create a free Turso account:**\n1. Go to [https://turso.tech](https://turso.tech)\n2. Sign up with GitHub (it's free!)\n3. Click **\"Create Database\"**\n4. Name it `blog-db` and click **Create**\n\n**Get your credentials:**\n- Copy the **Database URL** (looks like `libsql://blog-db-xxxxx.turso.io`)\n- Click **\"Create Token\"** and copy the auth token\n\n**Initialize the database schema:**\n1. In Turso dashboard, click your database\n2. Open the **SQL Shell** or **Console**\n3. Paste and run this SQL:\n\n```sql\nCREATE TABLE posts (\n  id INTEGER PRIMARY KEY AUTOINCREMENT,\n  slug TEXT UNIQUE NOT NULL,\n  title TEXT NOT NULL,\n  content TEXT NOT NULL,\n  excerpt TEXT NOT NULL,\n  author TEXT NOT NULL,\n  tags TEXT NOT NULL,\n  coverImage TEXT,\n  category TEXT DEFAULT 'All Blog Posts',\n  publishedAt TEXT NOT NULL,\n  updatedAt TEXT NOT NULL,\n  views INTEGER DEFAULT 0,\n  embeddedMedia TEXT\n);\n\nCREATE INDEX idx_posts_slug ON posts(slug);\nCREATE INDEX idx_posts_publishedAt ON posts(publishedAt DESC);\nCREATE INDEX idx_posts_category ON posts(category);\n```\n\n### 3️⃣ Install dependencies and configure\n\n```bash\n# Install packages\nnpm install\n\n# Set up environment variables\ncp .env.example .env.local\n```\n\n**Edit `.env.local` file with your Turso credentials:**\n```env\n# Database Configuration (from Turso dashboard)\nTURSO_DATABASE_URL=libsql://your-database-name.turso.io\nTURSO_AUTH_TOKEN=your-turso-auth-token-here\n\n# API Configuration\nAPI_KEY=your-secure-api-key-here\n\n# Site Configuration\nNEXT_PUBLIC_SITE_URL=http://localhost:3000\nNEXT_PUBLIC_SITE_NAME=Your Professional Blog\n```\n\n### 4️⃣ Start the development server\n\n```bash\nnpm run dev\n```\n\n🎉 **That's it!** Open [http://localhost:3000](http://localhost:3000) and start blogging!\n\n---\n\n## 📝 Creating Your First Post\n\n### Using the API (Recommended)\n\n```bash\ncurl -X POST http://localhost:3000/api/posts \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: YOUR_API_KEY\" \\\n  -d '{\n    \"title\": \"My First Blog Post\",\n    \"content\": \"# Welcome\\n\\nThis is my first post!\",\n    \"excerpt\": \"An introduction to my new blog\",\n    \"author\": \"Your Name\",\n    \"tags\": [\"welcome\", \"introduction\"],\n    \"category\": \"Technology\",\n    \"coverImage\": \"https://images.unsplash.com/photo-1499750310107-5fef28a66643\"\n  }'\n```\n\n**For detailed API documentation with all features**, see [API_DOCUMENTATION.md](API_DOCUMENTATION.md).\n\n---\n\n## ⚙️ Configuration\n\n### Site Settings\n\n**`next.config.js`** - Configure Next.js settings:\n```javascript\nmodule.exports = {\n  images: {\n    domains: ['images.unsplash.com', 'your-image-domain.com'],\n  },\n}\n```\n\n**`.env.local`** - Environment variables:\n```env\n# Required - Database Configuration (Turso)\nTURSO_DATABASE_URL=libsql://your-database.turso.io\nTURSO_AUTH_TOKEN=your-turso-auth-token\n\n# Required - API Configuration\nAPI_KEY=your-secure-random-api-key\n\n# Required - Site Configuration\nNEXT_PUBLIC_SITE_URL=https://yourdomain.com\nNEXT_PUBLIC_SITE_NAME=Your Blog Name\n\n# Optional\nNEXT_PUBLIC_GA_ID=G-XXXXXXXXXX  # Google Analytics\n```\n\n### Customization\n\n**Colors \u0026 Styling:**\n- Edit `tailwind.config.ts` for theme colors\n- Modify `app/globals.css` for custom styles and animations\n- Update components in `components/` folder\n\n**Content Categories:**\n- Edit `lib/constants.ts` to modify or add categories\n- Default categories: Technology, Business, Education, Ethics, Art, Entertainment, Fun, Games, Music, Politics, History, News\n\n**Database:**\n- Turso (serverless SQLite) - Perfect for production and edge deployment\n- SQLite-compatible syntax - Easy to work with\n- Schema defined in `lib/db/index.ts`\n- Initialization script available: `npm run init-db`\n\n---\n\n## 📁 Project Structure\n\n```\nblog-starter-template/\n├── app/\n│   ├── api/\n│   │   └── posts/\n│   │       └── route.ts              # REST API with validation\n│   ├── blog/\n│   │   ├── [slug]/\n│   │   │   └── page.tsx              # Individual post page\n│   │   └── page.tsx                  # Blog listing with categories\n│   ├── about/\n│   │   └── page.tsx                  # About page\n│   ├── layout.tsx                    # Root layout with SEO\n│   ├── page.tsx                      # Homepage\n│   ├── sitemap.ts                    # Dynamic sitemap\n│   ├── robots.ts                     # Robots.txt\n│   └── globals.css                   # Global styles\n├── components/\n│   ├── Header.tsx                    # Navigation\n│   ├── Footer.tsx                    # Site footer\n│   ├── PostCard.tsx                  # Post preview card\n│   ├── MarkdownContent.tsx           # Markdown/HTML renderer\n│   ├── MediaEmbed.tsx                # Video/audio embedding\n│   ├── TableOfContents.tsx           # Auto-generated TOC\n│   └── ShareButtons.tsx              # Social sharing\n├── lib/\n│   ├── db/\n│   │   ├── index.ts                  # Database setup (Turso client)\n│   │   └── posts.ts                  # Post operations\n│   ├── constants.ts                  # Blog categories \u0026 config\n│   ├── media-utils.ts                # Media processing\n│   └── utils.ts                      # Helper functions\n├── scripts/\n│   └── init-db.ts                    # Database initialization script\n├── public/                           # Static assets\n├── .env.example                      # Environment template\n├── API_DOCUMENTATION.md              # Full API docs\n├── DATABASE_MIGRATION.md             # Database setup guide\n└── package.json\n```\n\n---\n\n## 🎬 Rich Media Support\n\nEmbed videos and audio with flexible layouts:\n\n### YouTube Videos\n```json\n{\n  \"embeddedMedia\": [\n    {\n      \"url\": \"https://www.youtube.com/watch?v=VIDEO_ID\",\n      \"type\": \"youtube\",\n      \"position\": \"right\",\n      \"caption\": \"Tutorial: Getting Started\"\n    }\n  ]\n}\n```\n\n### Vimeo Videos\n```json\n{\n  \"url\": \"https://vimeo.com/VIDEO_ID\",\n  \"type\": \"vimeo\",\n  \"position\": \"full-width\"\n}\n```\n\n### Direct Video Files\n```json\n{\n  \"url\": \"https://example.com/video.mp4\",\n  \"type\": \"video\",\n  \"position\": \"inline\"\n}\n```\n\n### Audio Files (Podcasts, Music)\n```json\n{\n  \"url\": \"https://example.com/podcast.mp3\",\n  \"type\": \"audio\",\n  \"position\": \"inline\",\n  \"caption\": \"Episode 1: Introduction\"\n}\n```\n\n**Position Options:**\n- `inline` - Centered within content (default)\n- `right` - Media on right, text wraps left (desktop only)\n- `left` - Media on left, text wraps right (desktop only)\n- `full-width` - Spans full width for cinematic effect\n\n---\n\n## 📖 API Documentation\n\n### Create a Post\n\n**Endpoint**: `POST /api/posts`\n\n**Headers**:\n```\nContent-Type: application/json\nx-api-key: YOUR_API_KEY\n```\n\n**Required Fields**:\n- `title` (string) - Post title\n- `content` (string) - Markdown or HTML content\n- `excerpt` (string) - Brief summary\n- `author` (string) - Author name\n- `tags` (array) - Minimum 1 tag\n\n**Optional Fields**:\n- `category` (string) - One of 13 available categories\n- `slug` (string) - Custom URL (auto-generated if not provided)\n- `coverImage` (string) - Cover image URL\n- `embeddedMedia` (array) - Video/audio embeds\n\n**Example Request**:\n```bash\ncurl -X POST http://localhost:3000/api/posts \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: YOUR_API_KEY\" \\\n  -d '{\n    \"title\": \"Getting Started with Next.js\",\n    \"content\": \"# Introduction\\n\\nNext.js is amazing...\",\n    \"excerpt\": \"Learn Next.js fundamentals\",\n    \"author\": \"John Doe\",\n    \"tags\": [\"nextjs\", \"react\", \"tutorial\"],\n    \"category\": \"Technology\",\n    \"coverImage\": \"https://images.unsplash.com/photo-1461749280684-dccba630e2f6\"\n  }'\n```\n\n**Success Response** (201):\n```json\n{\n  \"success\": true,\n  \"message\": \"Post created successfully\",\n  \"post\": {\n    \"id\": 1,\n    \"slug\": \"getting-started-with-nextjs\",\n    \"title\": \"Getting Started with Next.js\",\n    \"publishedAt\": \"2024-11-17T10:30:00.000Z\",\n    ...\n  }\n}\n```\n\n### Get All Posts\n\n**Endpoint**: `GET /api/posts`\n\n**Query Parameters**:\n- `limit` (number) - Posts per page\n- `offset` (number) - Pagination offset\n\n**Example**:\n```bash\ncurl http://localhost:3000/api/posts?limit=10\u0026offset=0\n```\n\n**📚 For comprehensive API documentation**, see [API_DOCUMENTATION.md](API_DOCUMENTATION.md)\n\n---\n\n## 🌐 Deployment\n\nDeploy your blog to production with one click:\n\n### Vercel (Recommended - Free Tier Available)\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/AKzar1el/blog-starter-template)\n\n**Steps:**\n1. **Set up Turso Database** (see [Quick Start](#-quick-start) above)\n2. Click the deploy button above\n3. Connect your GitHub account\n4. Set environment variables (for Production, Preview, and Development):\n   - `TURSO_DATABASE_URL` - Your Turso database URL\n   - `TURSO_AUTH_TOKEN` - Your Turso auth token\n   - `API_KEY` - Choose a secure API key\n   - `NEXT_PUBLIC_SITE_URL` - Your Vercel deployment URL\n   - `NEXT_PUBLIC_SITE_NAME` - Your blog name\n5. Deploy! 🎉\n\n**Important:** Make sure your Turso database is initialized with the schema (see Quick Start step 2️⃣) before deploying.\n\n### Netlify\n\n[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/AKzar1el/blog-starter-template)\n\n### Other Platforms\n\nThis standard Next.js app can deploy to:\n- **Railway** - [Deploy Guide](https://docs.railway.app/guides/nextjs)\n- **Render** - [Deploy Guide](https://render.com/docs/deploy-nextjs)\n- **DigitalOcean App Platform** - [Deploy Guide](https://www.digitalocean.com/community/tutorials/how-to-deploy-a-next-js-app-to-app-platform)\n- **AWS Amplify** - [Deploy Guide](https://docs.amplify.aws/guides/hosting/nextjs/q/platform/js/)\n\n**💡 Production Tip**: Turso is production-ready and serverless, perfect for edge deployment. The free tier includes everything you need to get started!\n\n---\n\n## 🛠️ Built With\n\n### Core Technologies\n- **[Next.js 14+](https://nextjs.org/)** - React framework with App Router\n- **[React 18+](https://reactjs.org/)** - UI library\n- **[TypeScript](https://www.typescriptlang.org/)** - Type safety\n- **[Tailwind CSS](https://tailwindcss.com/)** - Utility-first CSS\n\n### Content \u0026 Data\n- **[Turso (@libsql/client)](https://turso.tech/)** - Serverless SQLite database\n- **[react-markdown](https://github.com/remarkjs/react-markdown)** - Markdown renderer\n- **[rehype-highlight](https://github.com/rehypejs/rehype-highlight)** - Code syntax highlighting\n\n### SEO \u0026 Performance\n- **[Next/Image](https://nextjs.org/docs/api-reference/next/image)** - Automatic image optimization\n- **[Next/Font](https://nextjs.org/docs/basic-features/font-optimization)** - Font optimization\n- **JSON-LD** - Structured data for search engines\n\n---\n\n## 📊 Database Schema\n\n### Posts Table\n\n| Column | Type | Description |\n|--------|------|-------------|\n| `id` | INTEGER | Primary key, auto-increment |\n| `slug` | TEXT | Unique URL slug (indexed) |\n| `title` | TEXT | Post title |\n| `content` | TEXT | Markdown or HTML content |\n| `excerpt` | TEXT | Brief summary for SEO |\n| `author` | TEXT | Author name |\n| `tags` | TEXT | JSON array of tags |\n| `category` | TEXT | Blog category (indexed) |\n| `coverImage` | TEXT | Cover image URL (nullable) |\n| `embeddedMedia` | TEXT | JSON array of media objects (nullable) |\n| `publishedAt` | TEXT | ISO 8601 timestamp (indexed) |\n| `updatedAt` | TEXT | ISO 8601 timestamp |\n| `views` | INTEGER | View counter (default: 0) |\n\n**Indexes for Performance:**\n- `idx_posts_slug` - Fast slug lookups\n- `idx_posts_publishedAt` - Efficient sorting by date\n- `idx_posts_category` - Quick category filtering\n\n---\n\n## 🎯 Performance \u0026 SEO\n\n### Lighthouse Scores\n- **Performance**: 90+\n- **Accessibility**: 95+\n- **Best Practices**: 95+\n- **SEO**: 100\n\n### SEO Features Included\n- ✅ Dynamic meta tags for every page\n- ✅ Open Graph tags for social sharing\n- ✅ Twitter Card support\n- ✅ JSON-LD structured data (Article schema)\n- ✅ Automatic sitemap.xml generation\n- ✅ Robots.txt configuration\n- ✅ Semantic HTML5 structure\n- ✅ Canonical URLs\n- ✅ Mobile-friendly design\n- ✅ Fast page load times\n\n### Performance Optimizations\n- ✅ Server-side rendering (SSR)\n- ✅ Automatic code splitting\n- ✅ Image lazy loading and optimization\n- ✅ Font optimization\n- ✅ Efficient caching strategies\n- ✅ Minimal JavaScript bundle\n\n---\n\n## 🔒 Security\n\nYour blog is secure by default:\n\n- **API Authentication** - Secure API key for post creation\n- **Input Validation** - Comprehensive validation on all inputs\n- **SQL Injection Protection** - Parameterized queries\n- **XSS Protection** - React escaping + DOMPurify for HTML\n- **External Link Security** - Automatic `rel=\"noopener noreferrer\"`\n- **CSRF Protection** - Built-in Next.js CSRF protection\n- **Type Safety** - TypeScript prevents common errors\n\n---\n\n## 📖 Documentation\n\n- **[API Documentation](API_DOCUMENTATION.md)** - Complete API reference with examples\n- **[Database Migration Guide](DATABASE_MIGRATION.md)** - Turso setup and migration instructions\n- **Installation Guide** - See [Quick Start](#-quick-start) above\n- **Configuration** - See [Configuration](#️-configuration) above\n- **Deployment Guide** - See [Deployment](#-deployment) above\n\n### Database (Turso)\n\nThis blog uses **Turso** - a serverless SQLite database perfect for modern web applications:\n\n**Why Turso?**\n- ✅ **Serverless** - No infrastructure to manage\n- ✅ **SQLite-compatible** - Familiar SQL syntax\n- ✅ **Edge-ready** - Deploy close to your users\n- ✅ **Free tier** - Generous limits for most blogs\n- ✅ **Fast** - Sub-10ms query latency\n- ✅ **Scalable** - Grows with your blog\n\n**Key Features:**\n- Automatic backups and point-in-time recovery\n- Built-in replication for high availability\n- Web dashboard for easy management\n- CLI tools for advanced operations\n\nFor detailed setup instructions, see the [Quick Start](#-quick-start) guide above.\n\n---\n\n## 🗺️ Roadmap\n\n### Current Features ✅\n- [x] Production-ready blog platform\n- [x] SEO optimization\n- [x] Rich content support (Markdown \u0026 HTML)\n- [x] Media embedding (video \u0026 audio)\n- [x] 13 blog categories\n- [x] REST API with authentication\n- [x] Mobile-responsive design\n- [x] View counter and analytics\n- [x] Dark mode support\n- [x] Related posts recommendations\n- [x] Threaded comment system with likes and nested replies\n\n### Planned Features 🚧\n- [ ] Search functionality\n- [ ] Newsletter integration (Mailchimp, ConvertKit)\n- [ ] Multi-author support with profiles\n- [ ] RSS feed\n- [ ] Admin dashboard\n- [ ] Draft posts management\n- [ ] Scheduled publishing\n\nSee [open issues](https://github.com/AKzar1el/blog-starter-template/issues) for feature requests and bug reports.\n\n---\n\n## 🤝 Contributing\n\nContributions make the open-source community amazing! Any contributions you make are **greatly appreciated**.\n\n### How to Contribute\n\n1. **Fork** the repository\n2. **Create** a feature branch\n   ```bash\n   git checkout -b feature/AmazingFeature\n   ```\n3. **Commit** your changes\n   ```bash\n   git commit -m 'Add some AmazingFeature'\n   ```\n4. **Push** to the branch\n   ```bash\n   git push origin feature/AmazingFeature\n   ```\n5. **Open** a Pull Request\n\n### Contribution Guidelines\n- Write clear, descriptive commit messages\n- Follow the existing code style (TypeScript, ESLint)\n- Add comments for complex logic\n- Update documentation if needed\n- Test your changes thoroughly\n\n---\n\n## 📄 License\n\nThis project is available under **dual licensing**:\n\n### ✅ Personal \u0026 Educational Use (Free)\n\n**Free to use** under the [MIT License](LICENSE) for:\n- Personal blogs and portfolios\n- Educational projects and learning\n- Non-profit organizations\n- Open-source projects\n- Hobby projects\n\n### 💼 Commercial Use\n\nFor commercial use, please **contact me** for licensing options.\n\n**Commercial use includes:**\n- Building blogs for clients (paid work)\n- Using in products or services that generate revenue\n- Integrating into SaaS platforms\n- Selling as a premium template\n\n**Why dual licensing?**  \nI want this template to be freely available for personal use and learning while ensuring sustainable development through commercial licensing.\n\n📧 **Contact for commercial license:** [tomi.seregi99@gmail.com](mailto:tomi.seregi99@gmail.com)\n\n**Questions about licensing?** Email me - I'm happy to help you determine which license fits your use case!\n\n---\n\n## 💬 Support \u0026 Community\n\nNeed help? Have questions? Want to share what you built?\n\n- 📧 **Email**: [tomi.seregi99@gmail.com](mailto:tomi.seregi99@gmail.com)\n- 🐛 **Bug Reports**: [GitHub Issues](https://github.com/AKzar1el/blog-starter-template/issues)\n- 💡 **Feature Requests**: [GitHub Issues](https://github.com/AKzar1el/blog-starter-template/issues)\n- 💬 **Discussions**: [GitHub Discussions](https://github.com/AKzar1el/blog-starter-template/discussions)\n\n**Response Time**: I aim to respond to issues and questions within 48 hours.\n\n---\n\n## 🌟 Show Your Support\n\nIf this project helped you launch your blog, please consider:\n\n- ⭐ **Starring** this repository\n- 🍴 **Forking** and contributing\n- 📢 **Sharing** with others who might find it useful\n- 💬 **Tweeting** about your experience\n- ☕ **[Buy me a coffee](https://buymeacoffee.com/akzar1el)** *(optional)*\n\nEvery star motivates me to keep improving this project! 🚀\n\n---\n\n## 🙏 Acknowledgments\n\nBuilt with ❤️ using amazing open-source tools:\n- [Next.js](https://nextjs.org/) team for the incredible framework\n- [Vercel](https://vercel.com/) for seamless deployment\n- [Tailwind CSS](https://tailwindcss.com/) for beautiful styling\n- The open-source community for inspiration and support\n\n---\n\n## 📈 Stats\n\n![GitHub Repo Stats](https://github-readme-stats.vercel.app/api/pin/?username=AKzar1el\u0026repo=blog-starter-template\u0026theme=dark)\n\n---\n\n## 🔗 Links\n\n- **Repository**: [https://github.com/AKzar1el/blog-starter-template](https://github.com/AKzar1el/blog-starter-template)\n- **Live Demo**: *Coming soon*\n- **Author**: [AKzar1el](https://github.com/AKzar1el)\n\n---\n\n## 📝 What's New\n\n### Version 2.1 (November 2024)\n\n**🚀 Database Migration to Turso**\n- Migrated from SQLite to Turso (serverless SQLite)\n- Perfect compatibility with Vercel and edge deployment\n- Sub-10ms query latency\n- Built-in backups and replication\n- Easy setup with web dashboard\n- Production-ready from day one\n\n### Version 2.0 (November 2024)\n\n**🎬 Rich Media Features**\n- YouTube and Vimeo video embedding\n- Direct video file support (.mp4, .webm, .ogg)\n- Audio embedding (.mp3, .wav, .ogg, .m4a)\n- Flexible positioning (inline, left, right, full-width)\n- Optional captions for embedded content\n\n**📂 Content Organization**\n- 13 organized blog categories\n- Category navigation with tabs\n- Category badges on post cards\n- Efficient category-based filtering\n\n**✨ Enhanced Content**\n- Full HTML support alongside Markdown\n- SEO-optimized link handling\n- Automatic external link attributes\n- Improved code syntax highlighting\n\n**🎨 UI/UX Improvements**\n- Smooth fade-in animations\n- Enhanced button interactions\n- Professional shadow transitions\n- Responsive media layouts\n- Better mobile experience\n\nFor detailed API usage with new features, see [API_DOCUMENTATION.md](API_DOCUMENTATION.md).\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made with ❤️ for developers and content creators**\n\n**Launch your blog today. Start writing tomorrow.**\n\n[⬆ Back to Top](#-your-professional-blog---modern-blog-starter-template)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakzar1el%2Fblog-starter-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakzar1el%2Fblog-starter-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakzar1el%2Fblog-starter-template/lists"}