{"id":13819010,"url":"https://github.com/xaviershay/enki","last_synced_at":"2025-05-16T11:05:19.961Z","repository":{"id":391340,"uuid":"8986","full_name":"xaviershay/enki","owner":"xaviershay","description":"A Ruby on Rails blogging app for the fashionable developer. It's better than Mephisto or SimpleLog","archived":false,"fork":false,"pushed_at":"2022-12-14T14:09:33.000Z","size":12764,"stargazers_count":821,"open_issues_count":8,"forks_count":274,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-09T06:08:23.266Z","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":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xaviershay.png","metadata":{"files":{"readme":"README.textile","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}},"created_at":"2008-04-11T23:54:11.000Z","updated_at":"2025-02-23T12:26:32.000Z","dependencies_parsed_at":"2023-01-11T15:23:04.603Z","dependency_job_id":null,"html_url":"https://github.com/xaviershay/enki","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviershay%2Fenki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviershay%2Fenki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviershay%2Fenki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xaviershay%2Fenki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xaviershay","download_url":"https://codeload.github.com/xaviershay/enki/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254518384,"owners_count":22084374,"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-08-04T08:00:37.620Z","updated_at":"2025-05-16T11:05:14.949Z","avatar_url":"https://github.com/xaviershay.png","language":"Ruby","funding_links":[],"categories":["Happy Exploring 🤘"],"sub_categories":[],"readme":"h1. This project is no longer actively developed\n\nBoth of the core collaborators have switched their blogs to \"Jekyll\":https://jekyllrb.com/ or similar static site generators. We're still reviewing and merging PRs for Enki, but doing no active development ourselves.\n\nh1. Enki\n\n!https://travis-ci.org/xaviershay/enki.png?branch=master!:https://travis-ci.org/xaviershay/enki\n\nA Ruby on Rails blogging app for the fashionable developer.\n\nPreferences are for the masses. Any real coder knows the easiest and best way to customize something is by *hacking code*. Because you want your blog to be you, not bog standard install #4958 with 20 posts per page instead of 15. For this you need a *clean, simple, easy to understand code base* that stays out of your way. No liquid drops and templates hindering your path, no ugly PHP(Hypertext Preprocessor) stylings burning your eyeballs.\n\nh2. Quick start\n\n\u003cpre\u003e\u003ccode\u003e  git clone git://github.com/xaviershay/enki.git enki\n  cd enki\n  git checkout -b myblog # Create a new work branch\n  bundle install         # Install all the required gems\n\n  cp config/database.example.yml config/database.yml\n  # Edit config/enki.yml and config/database.yml to taste\n\n  # Next step needs libxml2 and libxslt1 and their headers\n  # On Debian-based systems: apt-get install libxml2-dev libxslt1-dev\n  # On Mac OS X: no action required\n\n  rake secret # Paste output into place in config/initializers/secret_token.rb\n  rake db:migrate\n  rake            # Run tests\n  rails server    # Start the server\n  # Load http://localhost:3000/admin in your browser\u003c/code\u003e\u003c/pre\u003e\n\nOr for bonus points, fork \"Enki at github\":https://github.com/xaviershay/enki/tree/master and clone that instead.\n\nh2. More info\n\nEnki is a compact, easily extendable base for your blog. It does this by being highly opinionated, for example:\n\n* Public facing views should adhere to standards (HTML5, Atom)\n* /yyyy/mm/dd/post-title is a good URL for your posts\n* Live comment preview should be provided by default\n* Google does search better than you or I\n* You don't need a plugin system when you've got decent source control\n* If you're not using something more than just a basic username/password, you're a chump\n* Hacking code is the easiest way to customize something\n\nh2. Setting up authentication\n\nEnki uses \"OmniAuth\":https://github.com/intridea/omniauth for authentication. By default Enki supports \"Google OpenID Connect (OAuth 2.0 for Login)\":https://developers.google.com/identity/protocols/OpenIDConnect via the \"omniauth-google-oauth2\":https://github.com/zquestz/omniauth-google-oauth2 strategy and OpenID 2.0 via the \"omniauth-openid\":https://github.com/intridea/omniauth-openid strategy. Should you wish to use a different form of authentication, you can implement any of the \"available OmniAuth strategies\":https://github.com/intridea/omniauth/wiki/List-of-Strategies, or write your own strategy.\n\nh3. Using Google OpenID Connect for authentication\n\nYou will need a Google account, then:\n\n* Go to \"https://console.developers.google.com\":https://console.developers.google.com\n* Select (or create) your project\n* Click 'APIs \u0026 auth'\n* Make sure 'Contacts API' and 'Google+ API' are enabled\n* Go to the Consent Screen, and provide an 'Email address' and 'Product name'\n* Click on 'Credentials' under 'APIs \u0026 auth' and take note of your 'Client ID' and 'Client secret'\n* Wait 10 minutes for changes to take effect\n\nCreate a new file called \u003ccode\u003egoogle_oauth2.yml\u003c/code\u003e in your \u003ccode\u003econfig\u003c/code\u003e directory, add your 'Client ID' and 'Client secret' to the file thusly:\n\n\u003cpre\u003e\u003ccode\u003eGOOGLE_CLIENT_ID: ADD_YOUR_CLIENT_ID_HERE\nGOOGLE_CLIENT_SECRET: ADD_YOUR_CLIENT_SECRET_HERE\n\u003c/code\u003e\u003c/pre\u003e\n\nIf you are deploying to Heroku, you will need to set the above as \u003ccode\u003eENV\u003c/code\u003e variables instead of using \u003ccode\u003egoogle_oauth2.yml\u003c/code\u003e. For example:\n\n\u003cpre\u003e\u003ccode\u003e$ heroku config:set GOOGLE_CLIENT_ID=my_client_id\n$ heroku config:set GOOGLE_CLIENT_SECRET=my_client_secret\u003c/code\u003e\u003c/pre\u003e\n\nOpen up \u003ccode\u003econfig/enki.yml\u003c/code\u003e and make sure that the \u003ccode\u003egoogle_oauth2_email\u003c/code\u003e value matches the email address of your Google OpenID Connect identity.\n\nh3. Using OpenID 2.0 for authentication\n\nOpen up \u003ccode\u003econfig/enki.yml\u003c/code\u003e and make sure that one or more of your OpenID identity URLs are included in the \u003ccode\u003eopen_id\u003c/code\u003e value(s).\n\nh2. Upgrading to Enki 2016\n\nAs of January 2016, Enki no longer uses \"acts_as_taggable_on_steroids\":https://github.com/jviney/acts_as_taggable_on_steroids as it has been replaced with \"ActsAsTaggableOn\":https://github.com/mbleigh/acts-as-taggable-on. Commit \"5e97796\":https://github.com/xaviershay/enki/commit/5e977967cfeae6b98976b82b9bf260ee276be00f contains database migrations that update the existing tag-related tables to be compatible with ActsAsTaggableOn. This is a non-destructive migration so any existing tag records in your database should be unaffected. However, just to be safe you may wish to back up your database before running \u003ccode\u003ebundle install\u003c/code\u003e and \u003ccode\u003erake db:migrate\u003c/code\u003e to upgrade your Enki install.\n\nh2. Upgrading to Enki 2015\n\nAs of April 2015, Enki no longer uses the \"open_id_authentication\":https://github.com/Velir/open_id_authentication gem. Commit \"ec85aef\":https://github.com/xaviershay/enki/commit/ec85aef26ee82f17e8225be5cbe03ea459d1f112 contains database migrations that remove both tables used by open_id_authentication and add a new table to store OmniAuth response information. Should you wish to keep any data that you may have currently stored in either the open_id_authentication_nonces or open_id_authentication_associations tables, retrieve this information before you run \u003ccode\u003erake db:migrate\u003c/code\u003e to upgrade your Enki install.\n\nh2. URL path prefix\n\nEnki can run your blog with a URL path prefix.  For example, you can run it at example.com/*blog* instead of blog.example.com.  You can do so with the RAILS_RELATIVE_URL_ROOT environment variable, set either before starting the server or in config/application.rb before Enki::Application.  Uncommenting this line in config/application.rb will enable this behavior in all environments:\n\n\u003cpre\u003e\u003ccode\u003eENV['RAILS_RELATIVE_URL_ROOT'] = '/blog'\u003c/code\u003e\u003c/pre\u003e\n\nh2. How it differs from Mephisto\n\nMephisto is feature packed and quite customizable. It can however be daunting trying to find your way around the code, which isn’t so good if you’re trying to hack in your own features. Enki strips out a lot of the features that you probably don’t need (multiple authors and liquid templates, for example), and focuses on keeping a tight code base that is easy to comprehend and extend.\n\nh2. How it differs from SimpleLog\n\nEnki embodies much of the philosophy of SimpleLog, but does so in a style that is much more consistent with Rails best practices, making it easier to understand and hack the code.\n\nh2. Compatibility\n\nUses Ruby 1.9.3 or newer and Rails 4. Runs on MySQL or Postgres. Works on Heroku.\n\nh2. Contributors, these guys rock\n\n\u003cpre\u003e\u003ccode\u003egit log | grep Author | sort | uniq\u003c/code\u003e\u003c/pre\u003e\n\nIf you want to help out, try tackling an \"open issue\":https://github.com/xaviershay/enki/issues. Please include specs for any fixes. Enki is by design feature light. Unless you feel very strongly your feature should be in core, add a link to your fork in the wiki instead.\n\nh2. License\n\nGPL(General Public License) - See LICENSE\n\nAdmin design heavily inspired by \"Habari\":http://www.habariproject.org/en/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaviershay%2Fenki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxaviershay%2Fenki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxaviershay%2Fenki/lists"}