{"id":20564032,"url":"https://github.com/comake/solid-on-rails","last_synced_at":"2026-02-18T02:35:21.655Z","repository":{"id":60603693,"uuid":"517807537","full_name":"comake/solid-on-rails","owner":"comake","description":"A web-application framework for building highly configurable \u0026 decentralized apps using Node.js and Solid.","archived":false,"fork":false,"pushed_at":"2025-02-04T02:58:17.000Z","size":3583,"stargazers_count":1,"open_issues_count":12,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-09-04T02:42:44.793Z","etag":null,"topics":["bull","linked-data","nodejs","rdf","solid","typeorm","typescript"],"latest_commit_sha":null,"homepage":"https://comake-1.gitbook.io/solid-on-rails/","language":"TypeScript","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/comake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2022-07-25T20:14:40.000Z","updated_at":"2023-03-22T05:28:34.000Z","dependencies_parsed_at":"2025-03-06T08:38:41.412Z","dependency_job_id":null,"html_url":"https://github.com/comake/solid-on-rails","commit_stats":{"total_commits":101,"total_committers":3,"mean_commits":"33.666666666666664","dds":"0.13861386138613863","last_synced_commit":"f7fe6b8d7d034b001a838dcf9ff1207aefcac577"},"previous_names":["comake/skl-app-server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/comake/solid-on-rails","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comake%2Fsolid-on-rails","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comake%2Fsolid-on-rails/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comake%2Fsolid-on-rails/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comake%2Fsolid-on-rails/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/comake","download_url":"https://codeload.github.com/comake/solid-on-rails/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/comake%2Fsolid-on-rails/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29566402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"online","status_checked_at":"2026-02-18T02:00:09.468Z","response_time":162,"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":["bull","linked-data","nodejs","rdf","solid","typeorm","typescript"],"created_at":"2024-11-16T04:23:32.847Z","updated_at":"2026-02-18T02:35:21.635Z","avatar_url":"https://github.com/comake.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/comake/solid-on-rails\"\u003e\n    \u003cimg src=\"./resources/solid-on-rails.png\" width=\"150\" height=\"150\"\u003e\n  \u003c/a\u003e\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n  \u003ch2\u003eSolid on Rails\u003c/h2\u003e\n  \u003cp\u003e\n    A web-application framework for building highly configurable \u0026 decentralized apps \u003cbr/\u003e using \u003ca href=\"https://nodejs.org/\"\u003eNode.js\u003c/a\u003e and \u003ca href=\"https://solidproject.org/\"\u003eSolid\u003c/a\u003e.\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"#features\"\u003e\u003cstrong\u003eFeatures\u003c/strong\u003e\u003c/a\u003e ·\n    \u003ca href=\"#requirements\"\u003e\u003cstrong\u003eRequirements\u003c/strong\u003e\u003c/a\u003e ·\n    \u003ca href=\"#quick-start\"\u003e\u003cstrong\u003eQuick Start\u003c/strong\u003e\u003c/a\u003e ·\n    \u003ca href=\"https://comake-1.gitbook.io/solid-on-rails/\"\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e\u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/comake/solid-on-rails/actions/workflows/ci.yml\"\u003e\n      \u003cimg src=\"https://github.com/comake/solid-on-rails/actions/workflows/ci.yml/badge.svg\"\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n  \u003cbr\u003e\n  \u003cbr\u003e\n\u003c/div\u003e\n\n---\n\u003cbr/\u003e\n\nSolid on Rails was created to make it easy for developers to get up an running with [SKL](https://www.comake.io/skl) and [Solid](https://solidproject.org/). Taking inspiration from the success of [Ruby on Rails](https://rubyonrails.org/), it comes pre-configured with everything needed to create an application that can:\n\n- Store application data in a database (relational or key-value)\n- Expose an API (REST, GraphQL, etc.)\n- Run asyncronous workloads in the background\n- (Coming Soon) Store user data in a [Solid](https://solidproject.org/) pod\n- (Coming Soon) Authenticate users with [Solid OIDC](https://solid.github.io/solid-oidc/)\n\n## Features\n\n### Dependency Injection\n\nThe Solid on Rails framework is designed to be flexible such that people can easily run different configurations. To do so, Solid on Rails uses the [dependency injection](https://martinfowler.com/articles/injection.html) framework [Components.js](https://componentsjs.readthedocs.io/). \n\nComponents.js allows components to be instantiated and wired together declaratively using semantic configuration files. Solid on Rails also uses [Components-Generator.js](https://github.com/LinkedSoftwareDependencies/Components-Generator.js) to automatically generate the necessary description configurations of all classes. Components are configured in JSON files, which makes it so that changing the configuration does not require any changes to the code.\n\n[Get started configuring your application](https://comake-1.gitbook.io/solid-on-rails/guides/getting-started)\n\n### Storage\n\nSolid on Rails utilizes the [Data Mapper Pattern](https://en.wikipedia.org/wiki/Data\\_mapper\\_pattern) to separate an application's domain logic and it's usage of databases to store data. This means that you can create applications that are loosely coupled, and thus hightly scalable and maintainable.\n\nThe Data Mapper Pattern is implemented using [TypeORM](https://typeorm.io/). It includes a system to run migrations on data in the database.\n\n[Learn more about Storage](https://comake-1.gitbook.io/solid-on-rails/guides/storage)\n\n### Routes\n\nLike Rails, routes to connect URLs to code for the application's API or web pages are defined in a configuration file. Each route matches a URL pattern and HTTP method to a specific handler (or a chain of handlers). These handlers are defined in JSON using the dependency injection framework Components.js.\n\n[Learn more about Routes](https://comake-1.gitbook.io/solid-on-rails/guides/routes)\n\n### Background Jobs\n\nSolid on Rails comes with a built in system for scheduling background jobs to be executed outside of the main process. Background job queues can solve many different problems, from smoothing out processing peaks to creating robust communication channels between microservices or offloading heavy work from one server to many smaller workers, etc.\n\nA variety of queuing backends can be used but the default configuration uses [Bull](https://optimalbits.github.io/bull/).\n\n[Learn more about Background Jobs](https://comake-1.gitbook.io/solid-on-rails/guides/background-jobs)\n\n## Requirements \n\nPlease ensure your operating system has the following software installed:\n* [Git](https://git-scm.com/) - see [GitHub's tutorial](https://help.github.com/articles/set-up-git/) for installation\n* [Node.js](https://nodejs.org/) - use [nvm](https://github.com/creationix/nvm) to install it on any OS, or [brew](https://brew.sh/) on a mac\n* [Redis](https://redis.io/)  - follow the [Redis installation guide](https://redis.io/docs/getting-started/installation/) for your OS. Alternatively, run the [Redis Docker image](https://hub.docker.com/_/redis).\n* A database - for storage of application data (if required). See [TypeORM's Data Source documentation](https://typeorm.io/data-source-options) for options that work out-of-the-box. Run your database as a service on your OS or with Docker.\n\n{% hint style=\"info\" %}\nIf your application doesn't need background job processing, you don't need to run Redis (See [How to remove Background Jobs](https://comake-1.gitbook.io/solid-on-rails/guides/background-jobs#remove)).\n{% endhint %}\n\n{% hint style=\"info\" %}\nIf your application doesn't need to store applicaton data, you don't need to run a database (See [How to remove application data storage](https://comake-1.gitbook.io/solid-on-rails/guides/storage#remove)).\n{% endhint %}\n\n## Quick Start\n\nCreate a Node.js application (if you haven't already):\n```\nmkdir my-application\ncd my-application\nnpm init\n```\n\nInstall the latest server version from the npm package repository:\n\n```\nnpm install --save @comake/solid-on-rails\n```\n\nAdd the start command to `scripts` in your `package.json`\n\n```json\n\"scripts\": {\n  \"start\": \"npx solid-on-rails\"\n}\n```\n\nStart the server! 🚀\n```\nnpm run start\n```\n\nContinue to the [Getting Started guide](https://comake-1.gitbook.io/solid-on-rails/guides/getting-started) to learn how to create your own [Components.js](https://componentsjs.readthedocs.io/) configuration to customize your application with your own routes, plugins, background jobs, and more.\n\n---\n\n### TODO\n - [ ] Break up BaseHttpServerFactory createServer function\n - [ ] UiEnabledConverter?\n - [ ] Add integration tests for Storage Accessor\n - [ ] Add migration documentation\n - [ ] Add CLI documentation\n\n### Note\nThere's a bug with typeorm and componentsjs-generator\nYou have to add `\"./package.json\": \"./package.json\",` to the exports of `node_modules/typeorm/package.json`.\nSee:\n- https://github.com/typeorm/typeorm/issues/9178\n- https://github.com/LinkedSoftwareDependencies/Components-Generator.js/issues/83\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomake%2Fsolid-on-rails","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcomake%2Fsolid-on-rails","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcomake%2Fsolid-on-rails/lists"}