{"id":13483410,"url":"https://github.com/CultivateLabs/storytime","last_synced_at":"2025-03-27T14:31:17.955Z","repository":{"id":16826220,"uuid":"19585523","full_name":"CultivateLabs/storytime","owner":"CultivateLabs","description":"Storytime is a Rails 4+ CMS and blogging engine, with a core focus on content. It is built and maintained by @cultivatelabs","archived":false,"fork":false,"pushed_at":"2023-03-10T15:37:09.000Z","size":6513,"stargazers_count":752,"open_issues_count":40,"forks_count":81,"subscribers_count":37,"default_branch":"master","last_synced_at":"2024-09-27T09:18:53.719Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/CultivateLabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2014-05-08T19:09:30.000Z","updated_at":"2024-09-20T02:44:34.000Z","dependencies_parsed_at":"2023-07-22T06:39:24.455Z","dependency_job_id":null,"html_url":"https://github.com/CultivateLabs/storytime","commit_stats":null,"previous_names":["flyoverworks/storytime"],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CultivateLabs%2Fstorytime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CultivateLabs%2Fstorytime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CultivateLabs%2Fstorytime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CultivateLabs%2Fstorytime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CultivateLabs","download_url":"https://codeload.github.com/CultivateLabs/storytime/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245863073,"owners_count":20684784,"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","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":"2024-07-31T17:01:10.937Z","updated_at":"2025-03-27T14:31:16.904Z","avatar_url":"https://github.com/CultivateLabs.png","language":"Ruby","funding_links":[],"categories":["Happy Exploring 🤘","Ruby","CMS"],"sub_categories":[],"readme":"![Storytime](https://flyoverworks-com.s3.amazonaws.com/uploads/storytime/media/file/125/final-st-logo-02_thumb.png) \n\n[![Circle CI](https://circleci.com/gh/CultivateLabs/storytime/tree/master.svg?style=svg)](https://circleci.com/gh/CultivateLabs/storytime/tree/master)\n\nStorytime is a Rails 4+ CMS and blogging engine, with a core focus on content. It is built and maintained by [CultivateLabs](https://www.cultivatelabs.com/?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=github) / [@cultivatelabs](http://twitter.com/cultivatelabs)\n\n## Features\n\n* [Simple integration with Rails 4+ apps](https://github.com/CultivateLabs/storytime/wiki/Setup) - Quickly get set up using a guided, automated, or manual setup experience, whatever suits your fancy.\n* [Quick access dashboard](https://github.com/CultivateLabs/storytime/wiki/Using-the-Quick-Access-Menu) - Access Storytime's dashboard from anywhere on your site with our quick access menu.\n* [Multi-site support](https://github.com/CultivateLabs/storytime/wiki/Multi-site-Support) - Manage multiple sites with one Storytime deployment.\n* [Inline text snippet editing](https://github.com/CultivateLabs/storytime/wiki/Text-Snippets) - Create and edit snippets of content that can be re-used throughout your Storytime site.\n* [Admin of other Rails models](https://github.com/CultivateLabs/storytime/wiki/Admin-of-Rails-Models) - Manage your models from the Storytime dashboard.\n* [Custom Post Types](https://github.com/CultivateLabs/storytime/wiki/Using-Custom-Post-Types) - Add custom post types to alter functionality or appearance of posts.\n* [Email list building](https://github.com/CultivateLabs/storytime/wiki/Email-Subscriptions) - Collect and manage emails using a simple view helper.\n* [New post notifications](https://github.com/CultivateLabs/storytime/wiki/Working-with-New-Post-Notifications) - Send notifications to your site's subscribers whenever you publish a post.\n* [Built-in search](https://github.com/CultivateLabs/storytime/wiki/Using-Storytime%27s-Post-Search) - Easily search through Storytime's posts using built-in search adapters or request parameters.\n\n## Separation of Concerns\n\nStorytime is built around several opinions regarding the responsibilities and concerns of the CMS and the host app.\n\nStorytime is responsible for:\n* Editing **content**, **copy**, and very **basic formatting** (basic formatting roughly = things you could do in markdown)\n* Enabling customization, extension, and theming\n* Basic CRUD administration of other Rails models\n\nHost app is responsible for:\n* Complex page structure (HTML), styling (CSS), and interactions (JavaScript)\n* App-specific details or customizations (e.g. Storytime tells the host app to send a post notification email, host app decides how to send the email, whether it should be in a background job, etc.) \n* Presentation details -- we like to think of the host app as providing the \"theme\" for the Storytime site.\n\nThis separation is intended to provide several benefits and/or solve several problems:\n* *Problem:* Building complex page structure and styling inside the CMS prevents the code from going into version control\n* *Problem:* If complex page structure is in the CMS, it becomes much easier to break on production sites.\n\n* *Benefit:* If complex page structure stays in the host app and CMS users just edit content/copy, code goes into version control and pages are much less likely to break.\n* *Benefit:* Combining admin and CMS/blog features in one place gives site administrators **a single place to edit content** (rather than requiring both a CMS/blog and something like ActiveAdmin or RailsAdmin).\n\n## Sample App\n\n[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/CultivateLabs/storytime-example/blob/master)\n\n## Installation\n\nAdd Storytime to your Gemfile:\n\n```ruby\ngem \"storytime\"\n```\n\nRun the bundle command to install it.\n\nAfter you install Storytime and add it to your Gemfile, you can either setup Storytime through a [guided command line interface](#guided-setup), a speedy [automated setup](#automated-setup), or [manually](#manual-setup).\n\n**Note:** To use the image upload feature, Storytime requires you to have Imagemagick installed on your system.\n\n### Guided Setup\n\nStorytime can set up your routes file, initializer, user model, copy migrations, migrate your database, and copy views into your app through a simple command line interface (CLI). In order to use the CLI, first create a binstub of Storytime by running the following command:\n\n```terminal\n$ bundle binstub storytime\n```\n\nAfter creating the binstub just run the following command to get started with the guided setup:\n\n```terminal\n$ storytime install\n```\n\nAfter answering the prompts, fire up your Rails server and access the Storytime dashboard, by default located at `http://localhost:3000/storytime`.\n\n### Automated Setup\n\nThe automated setup goes through all of the steps in the [Guided Setup](#guided-setup), but instead of prompting you for values it just uses all the defaults, allowing you to setup Storytime in seconds.\n\nIn order to use the automated setup, first create a binstub of Storytime (see [Guided Setup](#guided-setup)). Next, run the install command with the -d option:\n\n```terminal\n$ storytime install -d\n```\n\nAfter the setup is complete, fire up your Rails server and access the Storytime dashboard, by default located at `http://localhost:3000/storytime`.\n\n### Manual Setup\n\nManual setup of Storytime assumes that your host app has an authentication system, like [Devise](https://github.com/plataformatec/devise), already installed. *Before proceeding make sure you have properly set up Devise.*\n\nAfter you install Storytime and add it to your Gemfile, you should run the install generator:\n\n```terminal\n$ rails generate storytime:install\n```\n\nThe install generator will create a Storytime initializer containing various configuration options. Be sure to review and update the generated initializer file as necessary.\n\nRunning the install generator will also insert a line into your routes file responsible for mounting the Storytime engine. \n\nBy default, Storytime is mounted at `/`. If you want to keep that mount point make sure that the Storytime mount is the **last** entry in your routes file:\n\n```ruby\nmount Storytime::Engine =\u003e \"/\"\n```\n\nInstall migrations:\n\n```ruby\nrake storytime:install:migrations\nrake db:migrate\n```\n\nAdd `storytime_user` to your user class:\n\n```ruby\nclass User \u003c ActiveRecord::Base\n  devise :database_authenticatable, :registerable,\n         :recoverable, :rememberable, :trackable, :validatable\n\n  storytime_user\nend\n```\n\nFinally, fire up your Rails server and access the Storytime dashboard, by default located at `http://localhost:3000/storytime`.\n\n*Optional:* While not necessary, you may want to copy over the non-dashboard Storytime views to your app for customization:\n\n```console\n$ rails generate storytime:views\n```\n\n## Getting Started\n\nSee the [Storytime Wiki](https://github.com/CultivateLabs/storytime/wiki) for more documentation and information on using Storytime's various features.\n\n## Screen Shots\n\nPage List:\n![Page List](https://raw.githubusercontent.com/CultivateLabs/storytime/master/screenshots/page-list.png \"Page List\")\n\nPost Editor:\n![Post Editor](https://raw.githubusercontent.com/CultivateLabs/storytime/master/screenshots/post-editor.png \"Post Editor\")\n\nAdmin of Custom Rails Models:\n![Admin of Custom Rails Models](https://raw.githubusercontent.com/CultivateLabs/storytime/master/screenshots/admin.png \"Admin of Custom Rails Models\")\n\nText Snippets:\n![Text Snippets](https://raw.githubusercontent.com/CultivateLabs/storytime/master/screenshots/text-snippets.png \"Text Snippets\")\n\nUser Management:\n![User Management](https://raw.githubusercontent.com/CultivateLabs/storytime/master/screenshots/user-management.png \"User Management\")\n\nSite Settings:\n![Site Settings](https://raw.githubusercontent.com/CultivateLabs/storytime/master/screenshots/site-settings.png \"Site Settings\")\n\nMedia Uploads:\n![Media Uploads](https://raw.githubusercontent.com/CultivateLabs/storytime/master/screenshots/media.png \"Media Uploads\")\n\n## Copyright\nCopyright © 2014-2015 CultivateLabs Inc. Storytime is released under the [MIT-LICENSE](MIT-LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCultivateLabs%2Fstorytime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCultivateLabs%2Fstorytime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCultivateLabs%2Fstorytime/lists"}