{"id":15403935,"url":"https://github.com/jejacks0n/protosite","last_synced_at":"2025-04-16T20:42:45.227Z","repository":{"id":39526574,"uuid":"156912436","full_name":"jejacks0n/protosite","owner":"jejacks0n","description":"Protosite: A flexible Vue and Rails based CMA/CMS.","archived":false,"fork":false,"pushed_at":"2023-01-03T23:13:23.000Z","size":1647,"stargazers_count":4,"open_issues_count":36,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T05:41:28.301Z","etag":null,"topics":["cms","graphql","protosite","rails","vue"],"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/jejacks0n.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}},"created_at":"2018-11-09T20:07:12.000Z","updated_at":"2023-02-10T09:45:03.000Z","dependencies_parsed_at":"2023-02-01T12:46:18.314Z","dependency_job_id":null,"html_url":"https://github.com/jejacks0n/protosite","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/jejacks0n%2Fprotosite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jejacks0n%2Fprotosite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jejacks0n%2Fprotosite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jejacks0n%2Fprotosite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jejacks0n","download_url":"https://codeload.github.com/jejacks0n/protosite/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249274908,"owners_count":21242176,"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":["cms","graphql","protosite","rails","vue"],"created_at":"2024-10-01T16:10:45.332Z","updated_at":"2025-04-16T20:42:45.210Z","avatar_url":"https://github.com/jejacks0n.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Protosite\n=========\n\n[![Build Status](https://travis-ci.org/jejacks0n/protosite.svg?branch=master)](https://travis-ci.org/jejacks0n/protosite)\n[![Maintainability](https://api.codeclimate.com/v1/badges/2fe64b2099900239713a/maintainability)](https://codeclimate.com/github/jejacks0n/protosite/maintainability)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/2fe64b2099900239713a/test_coverage)](https://codeclimate.com/github/jejacks0n/protosite/test_coverage)\n[![License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://opensource.org/licenses/MIT)\n[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)\n\n\nProtosite is a CMA/CMS that's comprised of a client layer and an API layer that can be used together, or in their\ncomponent parts.\n\nThe API layer is built with Rails and GraphQL, and the client layer is built using Vue.\n\nProtosite has a core concept of that by defining the shape of all data we can provide standard tooling to manipulate\nand present that data. Which in practical terms manifests by simply using JSON Schema to define all CMSable component\ndata. We can define validation rules, input style (checkboxes vs. multi select for instance), and any number of\nadditional attributes to enable expressive ways to collect data from content teams.\n\nFurther, and maybe more importantly, the schema is useful in keeping code and data inline and versioned. If data doesn't\nmatch the schema of the component trying to present it (for instance if the component has been updated with new\nattributes), we can provide tooling to migrate data forward, or notify someone of the issue. \n\n\n## Installation\n\nTo create a new Rails app based on Protosite you can use the template when creating your app.\n\n```shell\nrails new -m https://raw.githubusercontent.com/jejacks0n/protosite/master/template.rb\n```\n\nExisting apps can use a similar technique, but require webpack to be installed and vue to be setup (via.\n`rails webpacker:install:vue`) before running the template.\n\n```shell\nrails app:template LOCATION=https://raw.githubusercontent.com/jejacks0n/protosite/master/template.rb\nrails protosite:install:migrations db:migrate\n```\n\nThis adds a npm package and gem to your project. It also installs the boilerplate code that you can expand on with your\ncustom implementation.\n\n### Configuration\n\nAfter installation, you can configure it in your initializers (`config/initializers/protosite.rb`). You may also want to\nreview and make changes to the basic client implementation in the `application.js` file and editor implementation in the\n`protosite.js` file.\n\nThe plan is to get things working nicely and then provide documentation and tutorials on how to customize all aspects of\nProtosite. Protosite is written at a core level in such a way that makes customization possible, with the intent to also\nkeep a certain level of simplicity.\n\n\n## Development / Contributing\n\nClone the repo, and have ruby and node installed. Install dependencies for development using bundler and yarn.\n\n- `bundle install` to install ruby dependencies\n- `yarn unlink` (just in case)\n- `yarn link \u0026\u0026 yarn link \"@protosite/vue-protosite\"` to use the local package in dev\n- `yarn install` to install node dependencies\n\nNext, because of how node_modules works, we need to link it inside our test app.\n\n- `ln -s spec/dummy/node_modules node_modules`\n\nNext, you'll want a database with a user and some page data. This will give you an admin user, with the login of\n`admin@protosite` / `password` and some default page data that's good for examples.\n\n- `rake app:db:migrate`\n\nNow you should now be able to run the specs.\n\n- `rake` to run rubocop and the specs\n- `rake spec` to just run the specs\n\nYou can start the server with foreman (or whatever you want to do, but this works nice).\n\n- `foreman start -f spec/dummy/Procfile`\n\nAfter you have the server running locally, you can [login to protosite](http://localhost:3000/protosite) locally using\n`admin@protosite` / `password` login. This will redirect you back to the root of the application which has a small demo of\nProtosite in action.\n\nYou can also browse to [the graphiql interface](http://localhost:3000/protosite/graphiql) to inspect the schema and to run\ntest queries etc.\n\n\n## License\n\nLicensed under the [MIT License](http://creativecommons.org/licenses/MIT/)\n\nCopyright 2016 [jejacks0n](https://github.com/jejacks0n)\n\nAll licenses for the bundled Javascript libraries are included (MIT/BSD).\n\n\n## Make Code Not War\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjejacks0n%2Fprotosite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjejacks0n%2Fprotosite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjejacks0n%2Fprotosite/lists"}