{"id":13565056,"url":"https://github.com/NUKnightLab/learncms","last_synced_at":"2025-04-03T22:30:36.939Z","repository":{"id":35681362,"uuid":"39957233","full_name":"NUKnightLab/learncms","owner":"NUKnightLab","description":"Learn.Knightlab.com CMS version","archived":false,"fork":false,"pushed_at":"2023-11-07T21:00:09.000Z","size":10395,"stargazers_count":8,"open_issues_count":38,"forks_count":5,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-02-17T16:25:05.499Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HTML","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/NUKnightLab.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}},"created_at":"2015-07-30T15:17:18.000Z","updated_at":"2023-11-07T21:00:14.000Z","dependencies_parsed_at":"2024-01-16T19:13:16.076Z","dependency_job_id":null,"html_url":"https://github.com/NUKnightLab/learncms","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/NUKnightLab%2Flearncms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NUKnightLab%2Flearncms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NUKnightLab%2Flearncms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NUKnightLab%2Flearncms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NUKnightLab","download_url":"https://codeload.github.com/NUKnightLab/learncms/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247089706,"owners_count":20881822,"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-01T13:01:39.977Z","updated_at":"2025-04-03T22:30:31.926Z","avatar_url":"https://github.com/NUKnightLab.png","language":"HTML","funding_links":[],"categories":["HTML"],"sub_categories":[],"readme":"# learn.knightlab.com CMS\n\nLearn.knightlab.com is a website created by students, for students, to help develop web making skills.\n\n# Developing the CMS\n\n## Prereqs\nIf you are going to work on developing the CMS, you need to have installed Python 3 and Postgres 9.x. Then you have to create a virtual environment and initialize the database.\n\nSee [SETUP.md](SETUP.md) for details.\n\nIn most respects, the CMS is a standard Django application. The object model is meant to be light, because we are trying to leave a lot of flexibility for the content of lessons.\nWe're using web components to support authoring rich lessons with sophisticated behavior while minimizing the specialist knowledge needed to write a lesson.\n\nAuthors do need to understand how to include other pieces of content by reference: the `LessonView` scans the markup in the `Lesson.content` field and, for\nspecific web components, interprets a `ref` attribute value as the `slug` for a companion `model instance` in the CMS with which to \"fill-in\" attributes of the component. This ensures content\nconsistency while leaving flexible how the components can be used.\n\nOtherwise, there's a slightly hackish `GeneralImage` model which provides a way to upload images (or really, any media) so that it can be served to readers of the site. The idea is that once an image\nis uploaded, its URL can be copied into the lesson content.\n\nOver time, we hope to make the content authoring provide more tools to manage these relationships, but in our case, we're not interested in hiding the details from our authors, so it's not\nthe top priority. To be honest, there's more than a whiff of [bad code smell](http://martinfowler.com/bliki/CodeSmell.html) around the `GeneralImage` but it's where we are now.\n\n# Developing Webcomponents\n\nWork on the webcomponents is as simple as running a local webserver in the `components` directory. If you have the python\n`virtualenv` installed as described in [SETUP.md](SETUP.md), then it can be as simple as this:\n\n    $ cd components \u0026\u0026 python -m http.server 8000\n\nOtherwise, the components are meant to be self-documenting. The `index.html` file should be kept up to date if new components are added\nor if guidelines need to be set.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNUKnightLab%2Flearncms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNUKnightLab%2Flearncms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNUKnightLab%2Flearncms/lists"}