{"id":30045248,"url":"https://github.com/meysam81/tarzan","last_synced_at":"2025-10-14T21:03:59.434Z","repository":{"id":294804790,"uuid":"988117870","full_name":"meysam81/tarzan","owner":"meysam81","description":"🌟 Revolutionary email-powered blogging platform. Transform your inbox into a publishing powerhouse! Send emails to create beautiful blog posts instantly. Self-hosted, zero dependencies, lightning-fast Go backend with Vue.js frontend. PWA ready, Docker support, Kubernetes deployment included. 📧✨","archived":false,"fork":false,"pushed_at":"2025-09-22T18:10:34.000Z","size":5303,"stargazers_count":3,"open_issues_count":15,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-29T00:02:02.838Z","etag":null,"topics":["air-gap-compatible","content-management-system","docker-containerized","email-powered-blogging","email-to-blog","go-web-framework","inbound-email-processing","kubernetes-deployment","postmark-integration","progressive-web-app","rss-feed-generator","self-hosted-blog","single-binary-deployment","sqlite-database","static-site-generator","tailwindcss-styling","twelve-factor-app","vuejs-frontend","webhook-integration","zero-dependencies"],"latest_commit_sha":null,"homepage":"https://tarzan.meysam.io","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meysam81.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","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},"funding":{"github":"meysam81","patreon":"meysam81","buy_me_a_coffee":"meysam"}},"created_at":"2025-05-22T04:47:06.000Z","updated_at":"2025-08-23T10:33:49.000Z","dependencies_parsed_at":"2025-06-16T18:33:09.586Z","dependency_job_id":"85696cca-bb4a-4cf2-9d44-dbb3e4acf999","html_url":"https://github.com/meysam81/tarzan","commit_stats":null,"previous_names":["meysam81/blog-with-postmark-inbound","meysam81/tarzan"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/meysam81/tarzan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meysam81%2Ftarzan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meysam81%2Ftarzan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meysam81%2Ftarzan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meysam81%2Ftarzan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meysam81","download_url":"https://codeload.github.com/meysam81/tarzan/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meysam81%2Ftarzan/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279021054,"owners_count":26086992,"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-10-14T02:00:06.444Z","response_time":60,"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":["air-gap-compatible","content-management-system","docker-containerized","email-powered-blogging","email-to-blog","go-web-framework","inbound-email-processing","kubernetes-deployment","postmark-integration","progressive-web-app","rss-feed-generator","self-hosted-blog","single-binary-deployment","sqlite-database","static-site-generator","tailwindcss-styling","twelve-factor-app","vuejs-frontend","webhook-integration","zero-dependencies"],"created_at":"2025-08-07T07:39:55.792Z","updated_at":"2025-10-14T21:03:59.428Z","avatar_url":"https://github.com/meysam81.png","language":"Vue","funding_links":["https://github.com/sponsors/meysam81","https://patreon.com/meysam81","https://buymeacoffee.com/meysam"],"categories":[],"sub_categories":[],"readme":"# 🌟 Tarzan - Revolutionary Email-Powered Blogging Platform\n\n\u003cdiv align=\"center\"\u003e\n\n\u003c!-- Project Status \u0026 Quality Badges --\u003e\n\n[![CI/CD Pipeline](https://github.com/meysam81/tarzan/actions/workflows/ci.yml/badge.svg)](https://github.com/meysam81/tarzan/actions/workflows/ci.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/meysam81/tarzan)](https://goreportcard.com/report/github.com/meysam81/tarzan)\n[![Vulnerability Scan](https://img.shields.io/badge/🛡️_Zero_Vulnerabilities-Kubescape_Verified-brightgreen?style=flat-square)](https://github.com/meysam81/tarzan/actions)\n\n\u003c!-- Release \u0026 Distribution --\u003e\n\n[![Latest Release](https://img.shields.io/github/v/release/meysam81/tarzan?style=flat-square\u0026logo=github\u0026color=blue)](https://github.com/meysam81/tarzan/releases/latest)\n[![Docker Image](https://img.shields.io/badge/docker-meysam81%2Ftarzan-blue?style=flat-square\u0026logo=docker)](https://ghcr.io/meysam81/tarzan)\n[![Docker Pulls](https://img.shields.io/docker/pulls/meysam81/tarzan?style=flat-square\u0026logo=docker)](https://ghcr.io/meysam81/tarzan)\n[![Docker Image](https://img.shields.io/docker/image-size/meysam81/tarzan?style=flat-square\u0026logo=docker)](https://ghcr.io/meysam81/tarzan)\n[![Container Security](https://img.shields.io/badge/🔐_Container-Cosign_Signed-green?style=flat-square)](https://github.com/meysam81/tarzan/actions)\n\n\u003c!-- License \u0026 Community --\u003e\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-green.svg?style=flat-square\u0026logo=apache)](LICENSE)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/meysam81?style=flat-square\u0026logo=github\u0026color=pink)](https://github.com/sponsors/meysam81)\n[![Contributors](https://img.shields.io/github/contributors/meysam81/tarzan?style=flat-square\u0026logo=github)](https://github.com/meysam81/tarzan/graphs/contributors)\n[![Community Chat](https://img.shields.io/badge/💬_Chat-Zulip-brightgreen?style=flat-square)](https://developer-friendly.zulipchat.com/)\n\n\u003c!-- Technical Stack --\u003e\n\n[![Go Version](https://img.shields.io/github/go-mod/go-version/meysam81/tarzan?style=flat-square\u0026logo=go)](go.mod)\n[![Vue.js](https://img.shields.io/badge/Frontend-Vue.js_3-4FC08D?style=flat-square\u0026logo=vue.js)](https://vuejs.org/)\n[![TailwindCSS](https://img.shields.io/badge/Styling-TailwindCSS-38B2AC?style=flat-square\u0026logo=tailwind-css)](https://tailwindcss.com/)\n[![SQLite | Redis](https://img.shields.io/badge/Database-SQLite_|_Redis-003B57?style=flat-square\u0026logo=sqlite)](https://sqlite.org/)\n\n\u003c!-- Code Quality \u0026 Tools --\u003e\n\n[![oxlint](https://img.shields.io/badge/Linting-oxlint-FF6B6B?style=flat-square\u0026logo=eslint)](https://oxc-project.github.io/docs/guide/usage/linter.html)\n[![Pre-commit](https://img.shields.io/badge/Quality-pre--commit_hooks-FAB040?style=flat-square\u0026logo=pre-commit)](https://pre-commit.com/)\n[![12-Factor App](https://img.shields.io/badge/Architecture-12--Factor_App-blueviolet?style=flat-square)](https://12factor.net/)\n[![PWA Ready](https://img.shields.io/badge/📱_PWA-Ready-purple?style=flat-square)](https://web.dev/progressive-web-apps/)\n\n\u003c!-- Features \u0026 Capabilities --\u003e\n\n[![Email Powered](https://img.shields.io/badge/✉️_Email--Powered-Revolutionary-ff6b35?style=flat-square)](https://postmarkapp.com/inbound-email)\n[![Self Hosted](https://img.shields.io/badge/🏠_Self--Hosted-Zero_Dependencies-success?style=flat-square)](docs/email-setup.md)\n[![Air Gap Ready](https://img.shields.io/badge/🔒_Air--Gap-Compatible-darkgreen?style=flat-square)](#deployment-excellence)\n[![RSS \u0026 Sitemap](https://img.shields.io/badge/📡_RSS_\u0026_Sitemap-Native_Support-orange?style=flat-square)](#technical-superiority)\n\n\u003c!-- Demo \u0026 Documentation --\u003e\n\n[![Demo](https://img.shields.io/badge/🚀_Live_Demo-tarzan.meysam.io-blue?style=for-the-badge)](https://tarzan.meysam.io)\n[![Sponsor](https://img.shields.io/badge/💖_Sponsor_on_GitHub-@meysam81-pink?style=for-the-badge)](https://github.com/sponsors/meysam81)\n\n\u003c/div\u003e\n\n\u003e **Transform your inbox into a publishing powerhouse with revolutionary email-powered blogging.**\n\nTarzan revolutionizes content creation by turning every email you send into a beautifully rendered blog post. Built with cutting-edge technology and an unwavering commitment to simplicity, Tarzan empowers creators to publish content effortlessly while maintaining complete control over their data and infrastructure.\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n- [✨ Why Choose Tarzan?](#-why-choose-tarzan)\n  - [🎯 **Effortless Publishing**](#-effortless-publishing)\n  - [🔒 **Complete Ownership \u0026 Privacy**](#-complete-ownership--privacy)\n  - [⚡ **Lightning-Fast Performance**](#-lightning-fast-performance)\n  - [🎨 **Stunning Visual Design**](#-stunning-visual-design)\n- [🚀 Key Features](#-key-features)\n  - [**📦 Deployment Excellence**](#-deployment-excellence)\n  - [**🛠 Technical Superiority**](#-technical-superiority)\n  - [**🔐 Security \u0026 Authentication**](#-security--authentication)\n  - [**🌟 Open Source Excellence**](#-open-source-excellence)\n- [🚀 Quick Start](#-quick-start)\n  - [Docker Compose (Recommended)](#docker-compose-recommended)\n  - [Docker](#docker)\n  - [Binary Download](#binary-download)\n  - [Kubernetes Deployment (Enterprise Ready)](#kubernetes-deployment-enterprise-ready)\n- [⚙️ Configuration](#-configuration)\n- [📧 Email Integration](#-email-integration)\n- [🎨 Customization](#-customization)\n- [🤝 Community \u0026 Support](#-community--support)\n  - [Get Help](#get-help)\n  - [Support Development](#support-development)\n- [📈 Performance \u0026 Reliability](#-performance--reliability)\n- [🔄 Migration \u0026 Vendor Freedom](#-migration--vendor-freedom)\n- [📱 Modern Web Standards](#-modern-web-standards)\n- [🏗️ Architecture](#-architecture)\n- [📄 License](#-license)\n- [🎯 What's Next?](#-whats-next)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## ✨ Why Choose Tarzan?\n\n### 🎯 **Effortless Publishing**\n\nSimply send an email to your configured domain, and watch as Tarzan transforms it into a polished blog post. No complex interfaces, no learning curves—just pure, intuitive content creation.\n\n### 🔒 **Complete Ownership \u0026 Privacy**\n\nYour content, your rules. Tarzan is completely self-hostable with no vendor lock-in, ensuring your valuable content remains under your complete control.\n\n### ⚡ **Lightning-Fast Performance**\n\nBuilt with Go and powered by native SQLite, Tarzan delivers exceptional speed and efficiency, making your blog blazingly fast for both you and your readers.\n\n### 🎨 **Stunning Visual Design**\n\nExperience exceptional styling and UI with beautiful colors and responsive design that adapts seamlessly across all devices and screen sizes.\n\n## 🚀 Key Features\n\n### **📦 Deployment Excellence**\n\n- **Single Binary Deployment**: Entire application packaged in one compiled binary with all batteries included\n- **No Dynamic Dependencies**: Perfect for air-gapped environments and secure deployments\n- **12-Factor App Compliance**: Highly configurable and cloud-native ready\n- **Docker Support**: Containerized with native Docker Compose support - deploy with one command\n- **PWA Ready**: Install as a Progressive Web App on any desktop or mobile device\n\n### **🛠 Technical Superiority**\n\n- **Go Backend**: Ultra-fast, minimal dependencies, exceptional performance\n- **Vue.js Frontend**: Modern, component-based UI compiled with Vite into minified static assets\n- **SQLite Native**: Local data storage with configurable database location\n- **TailwindCSS**: Future-proof styling with extensive customization capabilities\n- **RSS \u0026 Sitemap**: Built-in support for content syndication and SEO\n- **Oxlint Integration**: Blazingly fast ESLint alternative for superior code quality and performance\n- **Pre-commit Hooks**: Comprehensive automated checks ensuring consistent code formatting, security, and maintainability\n\n### **🔐 Security \u0026 Authentication**\n\n- **Basic Authentication**: Secure webhook endpoints with configurable credentials\n- **Inbound Email Processing**: Seamless integration with Postmark's inbound email system\n- **SEO Optimized**: Configurable SEO settings (create your own robots.txt)\n\n### **🌟 Open Source Excellence**\n\n- **Apache 2.0 License**: OSI-approved permissive licensing\n- **Professional CI/CD**: State-of-the-art pipeline with cosign-signed releases\n- **Zero Vulnerabilities**: Kubescape security scans on every commit ensure container images \u0026 compiled binaries remain vulnerability-free\n- **Exceptional Code Organization**: DRY, KISS principles with dependency injection\n- **Long-term Maintainability**: Static typing, separation of concerns, modular architecture\n\n## 🚀 Quick Start\n\n### Docker Compose (Recommended)\n\nGet Tarzan running in seconds with our one-command deployment:\n\n```bash\ncurl -o .env https://raw.githubusercontent.com/meysam81/tarzan/main/.env.example\ncurl -o docker-compose.yml https://raw.githubusercontent.com/meysam81/tarzan/main/compose.yml\n# modify the .env as desired\ndocker compose up -d\n```\n\nYour blog will be accessible at `http://localhost:8000`\n\n### Docker\n\n```bash\ndocker run -d \\\n  --name tarzan \\\n  -p 8000:8000 \\\n  -v tarzan-data:/data \\\n  ghcr.io/meysam81/tarzan:latest\n```\n\n### Binary Download\n\nDownload the latest release for your platform:\n\n```bash\n# Linux/macOS\ncurl -L https://github.com/meysam81/tarzan/releases/latest/download/tarzan_linux_amd64.tar.gz | tar xz\n./tarzan\n\n# Windows\n# Download from GitHub releases page\n```\n\n### Kubernetes Deployment (Enterprise Ready)\n\nTarzan includes official Kubernetes deployment manifests that are security-hardened for production environments:\n\n```yaml\n# tarzan/kustomization.yml\nresources:\n  - https://github.com/meysam81/tarzan//deploy/k8s?ref=v1.0.0\u0026timeout=2m\n\nnamespace: default\n```\n\nAnd then apply this resource:\n\n```shell\nkubectl apply -k ./tarzan/\n```\n\nThe Kubernetes deployment includes:\n\n- **Security-hardened containers**: Non-root user, read-only filesystem, dropped capabilities\n- **Health checks**: Configurable liveness and readiness probes\n- **Resource management**: Optimized for efficient cluster resource usage\n- **Persistent storage**: Configurable PVC for data persistence\n- **Production-ready**: Rolling updates with zero-downtime deployment strategy\n\n## ⚙️ Configuration\n\nTarzan follows 12-factor app principles for maximum flexibility:\n\n```bash\n# Basic configuration\nexport TARZAN_PORT=8000\nexport TARZAN_BASE__URL=https://yourdomain.com\nexport TARZAN_AUTH_USERNAME=your-username\nexport TARZAN_AUTH_PASSWORD=your-secure-password\n\n# Advanced options\nexport TARZAN_DIR_DB=/path/to/database.db\nexport TARZAN_DIR_STORAGE=/path/to/attachments\n```\n\n## 📧 Email Integration\n\nConfigure your domain's MX record to point to Postmark's inbound servers:\n\n1. **Set MX Record**: Point your domain to `inbound.postmarkapp.com`\n2. **Configure Webhook**: Set your Tarzan instance as the webhook endpoint\n3. **Start Publishing**: Send emails to your domain and watch them become blog posts\n\n_For detailed setup instructions, visit our [Email Integration Guide](docs/email-setup.md)_\n\n## 🎨 Customization\n\nTarzan's beautiful interface is built with TailwindCSS, making customization straightforward:\n\n- Modify color schemes and typography\n- Adjust responsive breakpoints\n- Customize component layouts\n- Add your brand identity\n\n## 🤝 Community \u0026 Support\n\n### Get Help\n\n- **Community Chat**: Join our [Zulip Server](https://developer-friendly.zulipchat.com/) for real-time support\n- **Issues**: Report bugs or request features on GitHub\n\n### Support Development\n\nLove Tarzan? Consider supporting continued development:\n\n[![Sponsor](https://img.shields.io/badge/💖_Sponsor_on_GitHub-@meysam81-pink?style=for-the-badge)](https://github.com/sponsors/meysam81)\n\nYour support helps maintain this project and develop new features that benefit the entire community.\n\n## 📈 Performance \u0026 Reliability\n\n- **Sub-millisecond Response Times**: Go's efficiency meets SQLite's speed\n- **Minimal Resource Usage**: Runs efficiently on modest hardware\n- **Air-Gap Compatible**: No external dependencies\n- **Automated Testing**: Comprehensive CI/CD with release automation\n- **Production Ready**: Battle-tested in real-world deployments\n\n## 🔄 Migration \u0026 Vendor Freedom\n\nTarzan believes in data portability and vendor freedom:\n\n- Export your content in multiple formats\n- SQLite database ensures easy data access\n- No proprietary formats or lock-in mechanisms\n- Migrate to/from other platforms effortlessly\n\n## 📱 Modern Web Standards\n\n- **Progressive Web App**: Install and use like a native application\n- **Responsive Design**: Perfect experience across all device types\n- **Accessibility**: WCAG compliant with screen reader support\n- **Modern JavaScript**: ES6+ with optimal browser compatibility\n\n## 🏗️ Architecture\n\nTarzan's architecture prioritizes maintainability and extensibility:\n\n```\n┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐\n│   Vue.js SPA    │    │   Go HTTP Server │    │  SQLite Database│\n│  (TailwindCSS)  │◄──►│                  │◄──►│   (Local File)  │\n└─────────────────┘    └──────────────────┘    └─────────────────┘\n         │                       │                       │\n         │                       ▼                       │\n         │              ┌──────────────────┐             │\n         └─────────────►│  Static Assets   │◄────────────┘\n                        │  (Embedded)      │\n                        └──────────────────┘\n```\n\n## 📄 License\n\nTarzan is proudly open source under the [Apache License 2.0](LICENSE). This OSI-approved license ensures maximum freedom for both personal and commercial use while maintaining attribution to the original creators.\n\n## 🎯 What's Next?\n\n- **Plugin System**: Extensible architecture for community contributions\n- **Multi-language Support**: Internationalization for global audiences\n- **Advanced Theming**: Visual theme marketplace and customization tools\n- **Enhanced Analytics**: Detailed insights into content performance\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Ready to revolutionize your blogging experience?**\n\n[🚀 **Start Your Journey**](https://tarzan.meysam.io) | [📖 **Read the Docs**](docs/) | [💬 **Join Community**](https://developer-friendly.zulipchat.com/)\n\n_Built with ❤️ by [@meysam81](https://github.com/meysam81) and the open source community_\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeysam81%2Ftarzan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeysam81%2Ftarzan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeysam81%2Ftarzan/lists"}