{"id":30348005,"url":"https://github.com/rpuls/ghost-boilerplate","last_synced_at":"2025-08-28T23:49:04.816Z","repository":{"id":269032212,"uuid":"886946558","full_name":"rpuls/ghost-boilerplate","owner":"rpuls","description":"Ghost publishing platform, tweaked for Railway","archived":false,"fork":false,"pushed_at":"2025-08-15T00:11:37.000Z","size":33248,"stargazers_count":2,"open_issues_count":2,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-18T17:45:39.656Z","etag":null,"topics":["ghost","ghost-blog","ghost-cms","railway","railway-app"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rpuls.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}},"created_at":"2024-11-11T22:33:47.000Z","updated_at":"2025-06-20T07:19:31.000Z","dependencies_parsed_at":"2025-08-10T15:32:24.002Z","dependency_job_id":null,"html_url":"https://github.com/rpuls/ghost-boilerplate","commit_stats":null,"previous_names":["rpuls/ghost-boilerplate"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rpuls/ghost-boilerplate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fghost-boilerplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fghost-boilerplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fghost-boilerplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fghost-boilerplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rpuls","download_url":"https://codeload.github.com/rpuls/ghost-boilerplate/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rpuls%2Fghost-boilerplate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272582506,"owners_count":24959419,"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-08-28T02:00:10.768Z","response_time":74,"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":["ghost","ghost-blog","ghost-cms","railway","railway-app"],"created_at":"2025-08-18T17:30:19.990Z","updated_at":"2025-08-28T23:49:04.795Z","avatar_url":"https://github.com/rpuls.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://ghost.org\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://res.cloudinary.com/hczpmiapo/image/upload/v1731276441/Static%20assets/Logos/ghost_vgwnyq.png\"\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://res.cloudinary.com/hczpmiapo/image/upload/v1731276441/Static%20assets/Logos/ghost_vgwnyq.png\"\u003e\n      \u003cimg alt=\"Ghost logo\" src=\"https://res.cloudinary.com/hczpmiapo/image/upload/v1731276441/Static%20assets/Logos/ghost_vgwnyq.png\" width=100\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://railway.app/template/ZQcedl?referralCode=-Yg50p\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://railway.app/brand/logo-light.svg\"\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://railway.app/brand/logo-dark.svg\"\u003e\n      \u003cimg alt=\"Railway logo\" src=\"https://railway.app/brand/logo-light.svg\" width=100\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e \n\n\u003ch2 align=\"center\"\u003e\n  Ghost Blog Starter\u003cbr\u003e\n  \u003ca href=\"https://railway.app/template/ZQcedl?referralCode=-Yg50p\"\u003eOne-click deploy on Railway!\u003c/a\u003e\n\u003c/h2\u003e\n\n\u003cp align=\"center\"\u003e\n  A professional publishing platform built on Node.js, featuring MySQL database support, Cloudinary image storage, and Mailgun email integration\n\u003c/p\u003e\n\n## About this boilerplate\n\nThis boilerplate is a pre-configured Ghost blog setup optimized for deployment on [Railway](https://railway.app?referralCode=-Yg50p). It includes a complete backend and admin dashboard, with support for MySQL database, Cloudinary image storage, and Mailgun email integration. The project is ready to use as-is when hosted on Railway.\n\nUpdated to `version 5.112.0` 🥳\n\n## Preconfigured Features \u0026 Integrations\n\n- **MySQL Database**: Robust and reliable database storage\n- **Cloudinary Integration**: Cloud-based image storage with local fallback\n- **Mailgun Integration**: Professional email delivery service\n- **Admin Dashboard**: Full-featured content management system\n- **SEO Optimized**: Built-in SEO tools and features\n\n### Railway Setup (Recommended)\n\n1. Use the one-click deploy template:\n\n[![Deploy on Railway](https://railway.app/button.svg)](https://railway.app/template/ZQcedl?referralCode=-Yg50p)\n\n2. Railway will automatically configure the following environment variables:\n```env\nDB_HOST=\"${MySQL.MYSQLHOST}\"\nDB_NAME=\"${MySQL.MYSQLDATABASE}\"\nDB_USER=\"${MySQL.MYSQLUSER}\"\nDB_PASSWORD=\"${MySQL.MYSQLPASSWORD}\"\nPUBLIC_URL=\"https://${RAILWAY_PUBLIC_DOMAIN}\"\nNODE_ENV=\"production\"\n```\n\n3. Optional: Configure additional integrations:\n```env\n# Cloudinary Configuration (optional)\nCLOUDINARY_URL=\"\" # Example: cloudinary://\u003cid\u003e:\u003csecret\u003e@\u003ccloud-name\u003e\n\n# Mailgun Configuration (optional)\nMAILGUN_SMTP_LOGIN=\"\" # Example: your@mail.com\nMAILGUN_SMTP_PASSWORD=\"\"\n```\n\n### Local Development (Optional)\n\nWhile the project is ready to use as-is on Railway, if you need to make customizations:\n\n1. Deploy to Railway first (using button above)\n2. Use Railway's \"Eject to Git Repository\" feature to create your own repository\n3. Clone your ejected repository locally\n\nThis approach ensures your local development remains connected to Railway's CI/CD pipeline.\n\nAfter cloning your ejected repository:\n\n1. Install dependencies:\n   ```bash\n   npm install\n   ```\n\n2. Set up your environment configuration:\n   - Copy `.env.example` to `.env`:\n     ```bash\n     cp .env.example .env\n     ```\n   - Configure your `.env` file with appropriate values:\n     ```env\n     # Basic Configuration\n     PUBLIC_URL=http://localhost:2368\n     PORT=2368\n\n     # Database Configuration\n     DB_HOST=localhost\n     DB_USER=your_database_user\n     DB_PASSWORD=your_database_password\n     DB_NAME=ghost\n\n     # Mail Configuration (optional)\n     MAILGUN_SMTP_LOGIN=postmaster@your-domain.mailgun.org\n     MAILGUN_SMTP_PASSWORD=your_mailgun_password\n\n     # Cloudinary Configuration (optional)\n     CLOUDINARY_URL=cloudinary://your_api_key:your_api_secret@your_cloud_name\n     CLOUDINARY_FOLDER=ghost-blog-images\n     ```\n\n3. Run post-installation setup:\n   ```bash\n   npm run postinstall\n   ```\n\n4. Start the development server:\n   ```bash\n   npm run dev\n   ```\n\n### Requirements\n\n- **Railway Account** for deployment\n- **MySQL Database** (automatically provisioned by Railway)\n- **Cloudinary Account** (optional, falls back to local storage)\n- **Mailgun Account** (optional, for email delivery)\n\n### Commands\n\n- `npm install` - Install dependencies\n- `npm run postinstall` - Run post-installation setup\n- `npm run dev` - Start development server\n- `npm start` - Start production server\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://funkyton.com/\"\u003e\n    A template by,\n    \u003cbr\u003e\u003cbr\u003e\n    \u003cpicture\u003e\n      \u003cimg alt=\"FUNKYTON logo\" src=\"https://res-5.cloudinary.com/hczpmiapo/image/upload/q_auto/v1/ghost-blog-images/funkyton-logo.png\" width=200\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frpuls%2Fghost-boilerplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frpuls%2Fghost-boilerplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frpuls%2Fghost-boilerplate/lists"}