{"id":21075059,"url":"https://github.com/hackworthltd/primer-app","last_synced_at":"2025-08-14T08:53:26.330Z","repository":{"id":170434962,"uuid":"409589818","full_name":"hackworthltd/primer-app","owner":"hackworthltd","description":"DEPRECATED: Primer's old React frontend application.","archived":false,"fork":false,"pushed_at":"2025-05-12T16:21:00.000Z","size":6014,"stargazers_count":4,"open_issues_count":125,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-12T16:53:09.496Z","etag":null,"topics":["deprecated","education","functional-programming","primer","programming","programming-language","react","typescript","web"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hackworthltd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-09-23T12:49:44.000Z","updated_at":"2025-05-12T16:16:04.000Z","dependencies_parsed_at":"2023-09-24T05:54:49.924Z","dependency_job_id":"52ab510b-4ac2-4522-b1f4-773d37e1fcf0","html_url":"https://github.com/hackworthltd/primer-app","commit_stats":null,"previous_names":["hackworthltd/primer-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hackworthltd/primer-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hackworthltd","download_url":"https://codeload.github.com/hackworthltd/primer-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hackworthltd%2Fprimer-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270391568,"owners_count":24575797,"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","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"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":["deprecated","education","functional-programming","primer","programming","programming-language","react","typescript","web"],"created_at":"2024-11-19T19:19:26.385Z","updated_at":"2025-08-14T08:53:26.271Z","avatar_url":"https://github.com/hackworthltd.png","language":"TypeScript","readme":"# Deprecation notice\n\n**Note**: this TypeScript \u0026 React-based frontend for the [Primer\npedagogical functional programming\nlanguage](https://github.com/hackworthltd/primer) has been deprecated\nin favor of a Haskell-native frontend web app, which can be found in\nthat project's repository, along with the core Primer implementation.\n\nAll work on this project has been halted, but we'll keep the repo\naround for historical interest, and as a comparative reference for the\nnew frontend.\n\n# Historical notes\n\n## Primer App\n\nPrimer is a pedagogical functional programming language. This\nrepository contains a collection of [React](https://react.dev)\ncomponents to support Primer programming-related activities, including\nreading, writing, running, and debugging Primer programs. The project\nalso provides a web application which integrates these components into\na novel visual programming environment, featuring a\n[tree-based](https://en.wikipedia.org/wiki/Abstract_syntax_tree)\n[structure editor](https://en.wikipedia.org/wiki/Structure_editor).\n\nFor the moment, we're focusing on the development of the integrated\nweb app, but our long-term goal is to make it possible to use the\nproject's React components to integrate Primer programming activities\ninto interactive applications and games.\n\nThe web app in this project currently requires that a Primer language\nserver instance is available. We provide a Haskell implementation of a\nPrimer language server in this project's companion repository,\n[`primer`](https://github.com/hackworthltd/primer). Both projects are\nlicensed under the terms of [version 3 (or later) of the GNU Affero\nGeneral Public License](COPYING), and can be freely copied, modified,\nand distributed, so long as the license is preserved.\n\n## Important caveats\n\nThe Primer programming language, our Primer language server\nimplementation, and this web app are all still under heavy\ndevelopment. Expect lots of breaking changes until we reach stable\nreleases of all of these components. Please note that we don't\ncurrently have any accurate time estimates for when we expect to reach\nthese milestones.\n\nThis web app, in particular, should be considered to be of\nalpha-release quality. There are many incomplete and altogether\nmissing features, known bugs, and visual \u0026 usability defects. While\nit's already possible to write at least some Primer programs using\nthis web app, **please keep in mind the following important caveats\nabout the current state of the project**:\n\n* We've yet to do any rigorous testing of Primer with students, and\n  none at all in classrooms. Primer may turn out not be an effective\n  way to teach functional programming to novices! That said, if you're\n  an educator and you'd like to know more about the limited testing we\n  *have* done to date, please reach out to us. As some important\n  features are still missing from the web app, we don't recommend that\n  you try to use Primer for any serious teaching at this time.\n\n* At the moment, this project requires access to a Primer language\n  server instance, so you should also familiarize yourself with [that\n  project's\n  caveats](https://github.com/hackworthltd/primer#important-caveats),\n  as well. Running a Primer language server instance is relatively\n  easy if you're a developer, as we provide a [Docker image for\n  it](https://github.com/hackworthltd/primer/pkgs/container/primer-service),\n  but we're aware that many educators may not have the time or\n  knowledge to do this themselves. In the not-too-distant future, we\n  hope to be able to run the development environment in the browser,\n  without requiring a server instance.\n\n* All of our UX design has been done with\n  [accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility)\n  (*a11y*) in mind, and our 1.0 release will have robust support for\n  it, but the current implementation is lacking. As we're not a11y\n  experts, if you'd like to make an important\n  [contribution](#contributing) to the project, this would be a\n  particularly impactful area in which to do it.\n\n* One of the primary goals of the Primer programming language is to\n  support programming activities in the student's native language, so\n  that the ability to read and write English is not a prerequisite for\n  learning to program. As such, the Primer language server API is\n  mostly natural language-neutral; e.g., the API reports errors as\n  symbolic values, rather than as text strings intended to be shown to\n  the student verbatim. Full\n  [internationalization](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization)\n  (*i18n*) support is left to clients of the Primer API, such as this\n  web app. However, for practical and resource-related reasons, our\n  initial web app implementation only fully supports English. We'll\n  make a best-effort attempt to support a few other widely-spoken\n  natural languages in our 1.0 release, and robust i18n support will\n  be a high priority in post-1.0 releases, but this is another area in\n  which community members could make an impactful\n  [contribution](#contributing) to the project.\n\n* At the moment, Primer is a pure functional programming language,\n  with no effects system. This means, for example, it's not currently\n  possible to [draw animated cats](https://scratch.mit.edu) using\n  Primer. We plan to implement an effects system in version 2.0 of the\n  language specification and this web app, but that will work will not\n  begin for some time. Version 1.0 of Primer will focus on teaching\n  fundamental functional programming concepts, such as functions,\n  types, expressions, and program evaluation.\n\n## Contributing\n\nWe welcome contributions from the community! Please read our\n[contributing guide](CONTRIBUTING.md) if you think you'd like to help.\n\nWe also provide a comprehensive [development\nguide](docs/development-guide-toc.md) for anyone who'd like to build\nand run the project locally.\n\n## Third-party licenses\n\nSome third-party assets that we distribute together with this\nproject's source code (e.g., open source fonts) are licensed\nseparately from the source code. For each such asset, there's a\ncorresponding license file in the `licenses` subdirectory of the\nproject.\n\nWe have also \"vendored\" some source code from third-party libraries;\ni.e., we have included a few third-party source code files directly in\nthis project, rather than linking to them as a pre-built dependency.\nWhen this is the case, the source files will include their license and\ncopyright notice directly in the source file.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackworthltd%2Fprimer-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackworthltd%2Fprimer-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackworthltd%2Fprimer-app/lists"}