{"id":15659172,"url":"https://github.com/john-hamnavoe/rails-trello-clone","last_synced_at":"2026-02-27T08:34:28.687Z","repository":{"id":169336429,"uuid":"321389460","full_name":"john-hamnavoe/rails-trello-clone","owner":"john-hamnavoe","description":"Trello Clone using Ruby on Rails 7.2, Turbo 8, Stimulus, and Sortable JS","archived":false,"fork":false,"pushed_at":"2024-11-08T22:07:09.000Z","size":290,"stargazers_count":26,"open_issues_count":0,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-07T20:07:01.462Z","etag":null,"topics":["morph","rails","sortablejs","stimulus-js","turbo"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/john-hamnavoe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-12-14T15:24:04.000Z","updated_at":"2025-04-22T23:28:21.000Z","dependencies_parsed_at":"2024-05-21T22:43:02.319Z","dependency_job_id":"451d5d81-2f34-4a28-acf6-baa4c272d476","html_url":"https://github.com/john-hamnavoe/rails-trello-clone","commit_stats":null,"previous_names":["john-hamnavoe/rails-trello-clone"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/john-hamnavoe/rails-trello-clone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/john-hamnavoe%2Frails-trello-clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/john-hamnavoe%2Frails-trello-clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/john-hamnavoe%2Frails-trello-clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/john-hamnavoe%2Frails-trello-clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/john-hamnavoe","download_url":"https://codeload.github.com/john-hamnavoe/rails-trello-clone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/john-hamnavoe%2Frails-trello-clone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29888181,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T08:34:21.514Z","status":"ssl_error","status_checked_at":"2026-02-27T08:32:38.035Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["morph","rails","sortablejs","stimulus-js","turbo"],"created_at":"2024-10-03T13:15:30.176Z","updated_at":"2026-02-27T08:34:28.668Z","avatar_url":"https://github.com/john-hamnavoe.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# README\n\n## Introduction\n\nVery basic trello clone. [See here](https://rtc.hamnavoecode.com)\n\nMakes use of new turbo morphing feature. \n\nThe hardest part so far is trying to not refresh the editor open on a second browser. This [demo](https://github.com/basecamp/turbo-8-morphing-demo/tree/page-refreshes) project from 37 signals shows the problem if you have two browsers open and in browser one you have some text in Add Task input box but have not saved, adding a task in browser two will cause refresh and loss of data from the input box.\n\nSo far the best I have come up with is that when adding/editing tasks and lists a modal will pop up, it has ```data-turbo-permanent: \"\"``` so will not get refreshed by the broadcast refresh. The modal is closed when the form is submitted by checking the ```turbo:submit-end``` event I need to check for success and also redirection as the way I have implemented modals means this event fires when a new event occurs. I think overall this gives a better user experience, retaining the broadcast refreshes but not losing work on the browser that is refreshed. \n\n## Technology\n\n* Ruby version 3.2.2\n\n* Rails Version 7.2\n\n* Stimulus\n\n* Sortable js\n\n* Tailwind\n\n* acts_as_list\n\n* view_component\n\n* Turbo 8 - Morphing\n\n* Database Postgresql \n\n  * rails db:migrate\n\n* No tests \n\n* Run:\n\n  * Deploy Database ```rails db:create db:migrate```\n  * ./bin/dev\n\n## Quick Walk Through of Implementation\n\n### Create Rails App\n\n```rails new APP_NAME --database postgresql --javascript esbuild --css tailwind```\n\n#### Gems\n```bundle add acts_as_list```\n```bundle add view_component```\n\n#### Yarn \n```yarn add sortablejs```\n```yarn add @rails/request.js```\n```yarn add @tailwindcss/aspect-ratio```\n```yarn add @tailwindcss/forms```\n```yarn add @tailwindcss/line-clamp```\n```yarn add @tailwindcss/typography```\n\n...tbc...\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohn-hamnavoe%2Frails-trello-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohn-hamnavoe%2Frails-trello-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohn-hamnavoe%2Frails-trello-clone/lists"}