{"id":15513704,"url":"https://github.com/sebouchu/unique-nested-app","last_synced_at":"2025-03-28T21:42:40.276Z","repository":{"id":84592296,"uuid":"454732505","full_name":"SebouChu/unique-nested-app","owner":"SebouChu","description":"A WIP Rails application around nested forms and unique attributes.","archived":false,"fork":false,"pushed_at":"2022-02-03T10:18:15.000Z","size":300,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-03T08:01:49.417Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/SebouChu.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}},"created_at":"2022-02-02T10:37:03.000Z","updated_at":"2022-02-02T10:37:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"1eade229-3938-4247-b0da-0492ea5e755a","html_url":"https://github.com/SebouChu/unique-nested-app","commit_stats":{"total_commits":20,"total_committers":1,"mean_commits":20.0,"dds":0.0,"last_synced_commit":"18cae1bcac7e4023d4b6d3eed14a3ba5a286d381"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebouChu%2Funique-nested-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebouChu%2Funique-nested-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebouChu%2Funique-nested-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SebouChu%2Funique-nested-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SebouChu","download_url":"https://codeload.github.com/SebouChu/unique-nested-app/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246106673,"owners_count":20724400,"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-10-02T09:54:43.197Z","updated_at":"2025-03-28T21:42:40.251Z","avatar_url":"https://github.com/SebouChu.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unique Nested App\n\nA WIP Rails application around nested forms and unique attributes.\n\n- Nested forms are handled by [the `cocoon` Ruby gem](https://github.com/nathanvda/cocoon).\n- Sort feature is handled by [the `Sortable` JS library](https://github.com/SortableJS/Sortable).\n\n## Models\n\n### Person\n\nA `Person` has a `first_name`, a `last_name`, and can have many `Involvements`.\n\n### Program\n\nA `Program` has a `title`, a `description` as rich text and can have many direct `Involvements` and `Roles` (with `Involvements` associated to them).\n\n### Role\n\nA `Role` has a `description`, a `position`, an optional polymorphic `target` and can have many *sortable* `Involvements`.\n\nThey are ordered by position, based on the target they are associated with.\n\n### Involvements\n\nAn `Involvement` creates a **unique** link between a `Person` with a polymorphic `target`. It also has:\n  - a `kind` based on the `target_type`\n    - `administrator` for `Role`\n    - `teacher` for `Program`\n  - a `description` (omitted when `target_type` is `Role`)\n  - a `position`\n\nThey are ordered by position, based on the target they are associated with, like `Roles`.\n\n## Currently\n\nWe can create `People` and `Programs`. We can create *target-less* `Roles` with `Involvements`, either in the `Role` form, or through nested controllers.\n\n## In the future\n\n- We should be able to add `Involvements` to `Programs`\n- We should be able to add `Roles` to `Programs`, and `Involvements` to those `Roles`\n- Nested `Involvement` fields inside `Role` form should have dynamic `Person` field based on the current selected `People`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebouchu%2Funique-nested-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebouchu%2Funique-nested-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebouchu%2Funique-nested-app/lists"}