{"id":47737874,"url":"https://github.com/erolleddev/ailodi-wtih-cmx","last_synced_at":"2026-04-02T23:02:18.896Z","repository":{"id":325108237,"uuid":"1099864315","full_name":"ErolledDev/ailodi-wtih-cmx","owner":"ErolledDev","description":null,"archived":false,"fork":false,"pushed_at":"2025-11-19T15:11:43.000Z","size":1359,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-19T16:25:47.212Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/ErolledDev.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-11-19T14:39:47.000Z","updated_at":"2025-11-19T15:11:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ErolledDev/ailodi-wtih-cmx","commit_stats":null,"previous_names":["erolleddev/ailodi-wtih-cmx"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ErolledDev/ailodi-wtih-cmx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErolledDev%2Failodi-wtih-cmx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErolledDev%2Failodi-wtih-cmx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErolledDev%2Failodi-wtih-cmx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErolledDev%2Failodi-wtih-cmx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ErolledDev","download_url":"https://codeload.github.com/ErolledDev/ailodi-wtih-cmx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ErolledDev%2Failodi-wtih-cmx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31318137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T21:35:00.834Z","status":"ssl_error","status_checked_at":"2026-04-02T21:34:59.806Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2026-04-02T23:02:17.908Z","updated_at":"2026-04-02T23:02:18.876Z","avatar_url":"https://github.com/ErolledDev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Ailodi Screenshot](https://i.ibb.co/TSDTQ80/ailodi.jpg)\n\n# AI Lodi - Next.js Blog Platform\n\nA **production-ready** blog platform built with Next.js 14, featuring a clean Medium-inspired design, comprehensive SEO optimization, and integrated comment system. Perfect for tech blogs, personal websites, and professional content creators.\n\n## 🌟 Key Features\n\n### **🎨 Professional Design**\n- **Medium-Inspired Interface**: Clean, readable, professional layout\n- **Responsive Design**: Perfect on mobile, tablet, and desktop\n- **Dark/Light Mode**: Theme switching with next-themes\n- **Custom Branding**: Easy logo, colors, and typography customization\n- **Accessibility**: WCAG 2.1 AA compliant\n\n### **⚡ Performance \u0026 SEO**\n- **Static Export**: Lightning-fast loading times\n- **SEO Optimized**: Meta tags, Open Graph, Twitter Cards, structured data\n- **Sitemap \u0026 RSS**: Auto-generated XML sitemap and RSS feeds\n- **Image Optimization**: WebP/AVIF conversion, lazy loading\n- **Core Web Vitals**: Optimized for Google's performance metrics\n\n### **🔧 Developer Experience**\n- **TypeScript**: Full type safety throughout\n- **Modern Stack**: Next.js 14, Tailwind CSS, shadcn/ui\n- **Component Library**: 40+ pre-built, customizable components\n- **API Integration**: Flexible content fetching with retry logic\n- **Error Handling**: Comprehensive error boundaries and fallbacks\n\n### **💬 User Engagement**\n- **Comments System**: Valine comments with LeanCloud backend\n- **Social Sharing**: 10+ platforms including WhatsApp, Telegram\n- **Newsletter**: Email subscription with LeanCloud integration\n- **Search**: Advanced search with fuzzy matching and filters\n- **Related Posts**: Content recommendations based on categories\n\n## 🛠️ Tech Stack\n\n### **Frontend**\n- **Next.js 14+** with App Router and Static Export\n- **TypeScript** for type safety\n- **Tailwind CSS** for styling\n- **shadcn/ui** component library\n- **Lucide React** for icons\n- **React Markdown** for content rendering\n\n### **Backend \u0026 Services**\n- **External API** for content management (currently: blogform.netlify.app)\n- **LeanCloud** for comments and newsletter subscriptions\n- **Valine** for comments system with security features\n\n### **SEO \u0026 Analytics**\n- **Google Analytics 4** integration\n- **Plausible Analytics** support\n- **JSON-LD** structured data\n- **Open Graph** and Twitter Cards\n- **XML Sitemap** generation\n\n## 📋 Prerequisites\n\n- **Node.js 18+** \n- **npm/yarn/pnpm**\n- **LeanCloud account** (free tier available)\n- **Content API** endpoint\n\n## 🚀 Quick Start\n\n### 1. **Clone \u0026 Install**\n```bash\ngit clone \u003cyour-repo-url\u003e\ncd ai-lodi-blog\nnpm install\n```\n\n### 2. **LeanCloud Setup** (for comments \u0026 newsletter)\n1. Create account at [LeanCloud](https://leancloud.app/)\n2. Create new application\n3. Get App ID, App Key, and Server URL from Settings \u003e App Keys\n\n### 3. **Environment Configuration**\n```bash\ncp .env.example .env.local\n```\n\nConfigure your `.env.local`:\n```env\n# Content API\nNEXT_PUBLIC_API_URL=https://your-content-api.com/api/posts\n\n# LeanCloud (for comments \u0026 newsletter)\nNEXT_PUBLIC_VALINE_APP_ID=your_app_id\nNEXT_PUBLIC_VALINE_APP_KEY=your_app_key\nNEXT_PUBLIC_VALINE_SERVER_URLS=https://your_app_id.api.lncldglobal.com\n\n# Analytics (optional)\nNEXT_PUBLIC_GA_ID=G-XXXXXXXXXX\nNEXT_PUBLIC_PLAUSIBLE_DOMAIN=yourdomain.com\n\n# Contact Form\nNEXT_PUBLIC_WEB3FORMS_ACCESS_KEY=your_access_key\n```\n\n### 4. **Development**\n```bash\nnpm run dev\n```\n\n### 5. **Production Build**\n```bash\nnpm run build\n```\n\n## 🎨 Complete Customization Guide\n\nThis comprehensive guide covers all aspects of customizing your AI Lodi website. Each section provides specific file locations and detailed instructions for modifications.\n\n### **I. Core Site Information**\n\nThese settings define the fundamental identity of your website.\n\n#### **Site URL \u0026 Basic Info**\n- **Purpose**: Sets the canonical URL and basic site information\n- **Location**: Environment variables in `.env.local` and metadata in `app/layout.tsx`\n- **Environment Variables**:\n  ```env\n  NEXT_PUBLIC_SITE_URL=https://yourdomain.com\n  NEXT_PUBLIC_SITE_NAME=Your Blog Name\n  ```\n- **Metadata Location**: `app/layout.tsx` - Update the `metadata` export\n- **Files to modify**:\n  - `.env.local` - Site URL and name\n  - `app/layout.tsx` - Title, description, keywords, and all metadata\n\n### **II. Branding \u0026 Visual Identity**\n\n#### **Logos \u0026 Icons**\n- **Purpose**: Visual identity across browsers, social media, and PWA\n- **Location**: Image files in the `public/` directory\n- **Required Files** (replace with your own):\n  - `logo.png` - Used in structured data and RSS feed (512x512px)\n  - `favicon.ico`, `favicon.svg` - Browser favicons\n  - `apple-touch-icon.png` - iOS home screen icon (180x180px)\n  - `icon-192.png`, `icon-512.png` - PWA icons\n  - `og-image.jpg` - Open Graph image for social sharing (1200x630px)\n  - `og-image-square.jpg` - Square Open Graph image (1200x1200px)\n  - `screenshot-wide.png`, `screenshot-narrow.png` - PWA screenshots\n  - `mstile-*.png` - Microsoft tile icons\n- **Configuration Files**:\n  - `app/layout.tsx` - Icon references in metadata\n  - `public/manifest.json` - PWA icon paths\n  - `public/browserconfig.xml` - Microsoft tile configuration\n\n#### **Colors \u0026 Theme**\n- **Purpose**: Define your brand colors and theme\n- **Location**: CSS variables in `app/globals.css`\n- **Key Variables to Modify**:\n  ```css\n  :root {\n    --primary: 142 76% 36%; /* Your brand color */\n    --primary-foreground: 355 20% 98%;\n    --background: 0 0% 100%;\n    --foreground: 240 10% 3.9%;\n    /* ... other color variables */\n  }\n  ```\n\n#### **Typography**\n- **Purpose**: Control fonts for headings and body text\n- **Location**: \n  - Font imports: `app/layout.tsx`\n  - CSS variables: `app/globals.css`\n- **Steps**:\n  1. Change Google Font imports in `app/layout.tsx`\n  2. Update CSS font variables in `app/globals.css`\n\n### **III. Content Management**\n\n#### **Content API Configuration**\n- **Purpose**: Specifies where blog content is fetched from\n- **Current Setup**: External API at `https://blogform.netlify.app/api/content.json`\n- **Location**: `NEXT_PUBLIC_API_URL` in `.env.local`\n- **Content Processing**: `lib/content.ts` handles fetching and processing\n- **Required JSON Structure**:\n  ```json\n  [\n    {\n      \"id\": \"unique-post-id\",\n      \"title\": \"Post Title\",\n      \"slug\": \"post-slug\",\n      \"content\": \"Markdown content...\",\n      \"metaDescription\": \"SEO description\",\n      \"seoTitle\": \"SEO title\",\n      \"keywords\": [\"keyword1\", \"keyword2\"],\n      \"author\": \"Author Name\",\n      \"categories\": [\"Category1\", \"Category2\"],\n      \"tags\": [\"tag1\", \"tag2\"],\n      \"status\": \"published\",\n      \"publishDate\": \"2025-01-01T00:00:00Z\",\n      \"createdAt\": \"2025-01-01T00:00:00Z\",\n      \"updatedAt\": \"2025-01-01T00:00:00Z\",\n      \"featuredImageUrl\": \"https://example.com/image.jpg\"\n    }\n  ]\n  ```\n\n#### **Custom API Integration**\nIf your API has a different structure, modify the content processing in `lib/content.ts`:\n- Update the `getAllContent()` function\n- Modify the `getContentBySlug()` function\n- Adjust the `BlogPost` interface in `types/blog.ts` if needed\n\n### **IV. SEO \u0026 Metadata**\n\n#### **Global SEO Settings**\n- **Location**: `app/layout.tsx` - `metadata` export\n- **Key Fields**:\n  - `title` - Site title and template\n  - `description` - Site description\n  - `keywords` - Array of relevant keywords\n  - `openGraph` - Facebook/social media data\n  - `twitter` - Twitter card configuration\n  - `verification` - Search engine verification codes\n\n#### **Dynamic SEO (Posts \u0026 Categories)**\n- **Post Pages**: `app/post/[slug]/page.tsx` - `generateMetadata` function\n- **Category Pages**: `app/categories/[categorySlug]/page.tsx` - `generateMetadata` function\n- **Automatic Generation**: \n  - `app/sitemap.ts` - XML sitemap\n  - `app/robots.ts` - Robots.txt\n  - `app/feed.xml/route.ts` - RSS feed\n\n### **V. Integrations \u0026 Services**\n\n#### **Analytics**\n- **Google Analytics**: \n  - Variable: `NEXT_PUBLIC_GA_ID` in `.env.local`\n  - Component: `components/google-analytics.tsx`\n- **Plausible Analytics**: \n  - Variable: `NEXT_PUBLIC_PLAUSIBLE_DOMAIN` in `.env.local`\n\n#### **Comments System (Valine + LeanCloud)**\n- **Purpose**: User comments on blog posts\n- **Variables** (in `.env.local`):\n  ```env\n  NEXT_PUBLIC_VALINE_APP_ID=your_app_id\n  NEXT_PUBLIC_VALINE_APP_KEY=your_app_key\n  NEXT_PUBLIC_VALINE_SERVER_URLS=https://your_app_id.api.lncldglobal.com\n  ```\n- **Component**: `components/valine-comments.tsx`\n- **Security Features**:\n  - Math captcha for spam prevention\n  - Content moderation through LeanCloud\n  - IP tracking and rate limiting\n  - User verification options\n\n#### **Newsletter Subscription**\n- **Purpose**: Email list management\n- **Backend**: Uses same LeanCloud credentials as comments\n- **Component**: `components/subscribe-form.tsx`\n- **API Route**: `app/api/subscribe/route.ts`\n\n#### **Contact Form**\n- **Service**: Web3Forms\n- **Variable**: `NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY` in `.env.local`\n- **Component**: `app/contact/page.tsx`\n\n### **VI. Navigation \u0026 Layout**\n\n#### **Main Navigation**\n- **File**: `components/navigation.tsx`\n- **Customization**: Update menu items, search functionality, mobile menu\n\n#### **Footer**\n- **File**: `components/footer.tsx`\n- **Customization**: Update links, social media, newsletter signup\n\n#### **Homepage Sections**\n- **Hero Section**: `components/hero.tsx`\n- **Latest Insights**: `components/latest-insights.tsx`\n- **Blog Posts**: `components/blog-posts.tsx`\n\n### **VII. Advanced Customization**\n\n#### **Component Customization**\nKey components you can modify:\n- **Blog Cards**: `components/enhanced-blog-card.tsx`\n- **Article Layout**: `components/article-layout.tsx`\n- **Social Sharing**: `components/social-share-buttons.tsx`\n- **Search Page**: `app/search/page.tsx`\n- **Category Pages**: `app/categories/[categorySlug]/page.tsx`\n\n#### **Styling System**\n- **Framework**: Tailwind CSS with custom design system\n- **Components**: shadcn/ui component library\n- **Configuration**: `tailwind.config.ts` for design tokens\n- **Global Styles**: `app/globals.css` for custom CSS and theme variables\n\n#### **Content Types**\nThe blog supports various content types defined in `types/blog.ts`:\n- Blog posts with full metadata\n- Categories and tags\n- Author information\n- SEO optimization fields\n\n### **VIII. Deployment**\n\n#### **Environment Variables for Production**\nEnsure these variables are set in your hosting provider's dashboard:\n\n**Required:**\n- `NEXT_PUBLIC_SITE_URL` - Your production domain\n- `NEXT_PUBLIC_API_URL` - Your content API endpoint\n\n**Optional but Recommended:**\n- `NEXT_PUBLIC_GA_ID` - Google Analytics\n- `NEXT_PUBLIC_VALINE_APP_ID` - Comments system\n- `NEXT_PUBLIC_VALINE_APP_KEY` - Comments system\n- `NEXT_PUBLIC_VALINE_SERVER_URLS` - Comments system\n- `NEXT_PUBLIC_WEB3FORMS_ACCESS_KEY` - Contact form\n\n#### **Build Configuration**\n- **Build Command**: `npm run build`\n- **Output Directory**: `out` (for static export)\n- **Node Version**: 18+ recommended\n\n#### **Deployment Options**\n- **Cloudflare Pages**: Recommended for static export\n- **Netlify**: JAMstack deployment\n- **Vercel**: Next.js optimized hosting\n- **Any Static Host**: Works with any CDN\n\n## 📊 Project Structure\n\n```\nai-lodi-blog/\n├── app/                          # Next.js 14 App Router\n│   ├── layout.tsx               # Global layout and metadata\n│   ├── page.tsx                 # Homepage\n│   ├── globals.css              # Global styles and theme\n│   ├── about/                   # About page\n│   ├── categories/              # Category pages\n│   ├── contact/                 # Contact page\n│   ├── post/[slug]/            # Dynamic blog post pages\n│   ├── search/                  # Search functionality\n│   ├── sitemap.ts              # Dynamic sitemap generation\n│   ├── robots.ts               # Robots.txt generation\n│   ├── feed.xml/               # RSS feed generation\n│   ├── api/subscribe/          # Newsletter API\n│   ├── privacy-policy/         # Privacy policy page\n│   ├── terms-of-service/       # Terms of service page\n│   └── disclaimer/             # Disclaimer page\n├── components/                  # Reusable React components\n│   ├── ui/                     # shadcn/ui components\n│   ├── navigation.tsx          # Main navigation\n│   ├── footer.tsx              # Site footer\n│   ├── hero.tsx                # Homepage hero section\n│   ├── blog-posts.tsx          # Blog post listing\n│   ├── enhanced-blog-card.tsx  # Individual blog post cards\n│   ├── article-layout.tsx      # Blog post layout\n│   ├── valine-comments.tsx     # Comments system\n│   ├── subscribe-form.tsx      # Newsletter subscription\n│   ├── social-share-buttons.tsx # Social sharing\n│   └── ...                     # Other components\n├── lib/                        # Utility functions\n│   ├── content.ts              # Content fetching and processing\n│   └── utils.ts                # General utilities\n├── types/                      # TypeScript type definitions\n│   └── blog.ts                 # Blog post interface\n├── public/                     # Static assets\n│   ├── logo.png                # Site logo\n│   ├── favicon.ico             # Favicon\n│   ├── og-image.jpg            # Open Graph image\n│   ├── manifest.json           # PWA manifest\n│   ├── browserconfig.xml       # Microsoft tile config\n│   └── ...                     # Other icons and images\n├── scripts/                    # Build scripts\n│   └── generate-metadata.js    # Metadata generation\n├── .env.example                # Environment variables template\n├── .env.local                  # Your environment variables (not in repo)\n├── next.config.js              # Next.js configuration\n├── tailwind.config.ts          # Tailwind CSS configuration\n├── tsconfig.json               # TypeScript configuration\n└── package.json                # Dependencies and scripts\n```\n\n## 🔧 Development Commands\n\n```bash\n# Development server\nnpm run dev\n\n# Production build\nnpm run build\n\n# Start production server\nnpm start\n\n# Lint code\nnpm run lint\n\n# Generate metadata (runs automatically during build)\nnpm run generate-metadata\n\n# Clean build artifacts\nnpm run clean\n\n# Fresh build (clean + build)\nnpm run fresh-build\n```\n\n## 🛡️ Security Features\n\n### **Comments Security (Valine + LeanCloud)**\n- **Math Captcha**: Prevents automated spam\n- **Content Moderation**: Real-time filtering and admin dashboard\n- **Rate Limiting**: Prevents comment flooding\n- **IP Tracking**: Monitor and block problematic users\n- **User Verification**: Optional email validation\n\n### **General Security**\n- **HTTPS Enforced**: SSL/TLS encryption\n- **Security Headers**: XSS, CSRF protection via `_headers` file\n- **Input Sanitization**: Secure data handling\n- **Environment Variables**: Sensitive data protection\n\n## 📈 Performance Features\n\n- **Static Export**: Pre-rendered pages for maximum speed\n- **Image Optimization**: WebP/AVIF conversion, lazy loading\n- **Code Splitting**: Automatic bundle optimization\n- **Edge Deployment**: Global CDN distribution\n- **Core Web Vitals**: Optimized for Google's performance metrics\n\n## 🎯 SEO Features\n\n- **Structured Data**: JSON-LD for rich snippets\n- **Open Graph**: Social media optimization\n- **Twitter Cards**: Twitter-specific metadata\n- **XML Sitemap**: Auto-generated and updated\n- **RSS Feed**: Auto-generated content feed\n- **Meta Tags**: Comprehensive SEO metadata\n- **Canonical URLs**: Prevent duplicate content issues\n\n## 📱 PWA Features\n\n- **App Manifest**: Installable web app\n- **Service Worker**: Offline functionality (can be enabled)\n- **App Icons**: Multiple sizes for different devices\n- **Splash Screens**: Custom loading screens\n- **Theme Colors**: Consistent branding\n\n## 🤝 Contributing\n\nThis is a commercial project. For customization help or feature requests, please contact the development team.\n\n## 📄 License\n\nThis project uses a commercial license. See the `LICENSE` file for details.\n\n## 📞 Support\n\nFor technical support or customization assistance:\n- **Email**: support@ailodi.tech\n- **Documentation**: This README and inline code comments\n- **Issues**: Use GitHub issues for bug reports\n\n---\n\n**Built with ❤️ using Next.js 14, TypeScript, and Tailwind CSS.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferolleddev%2Failodi-wtih-cmx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferolleddev%2Failodi-wtih-cmx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferolleddev%2Failodi-wtih-cmx/lists"}