{"id":21199186,"url":"https://github.com/r167/int-ipa","last_synced_at":"2025-07-10T06:30:57.869Z","repository":{"id":42346676,"uuid":"310687798","full_name":"R167/int-ipa","owner":"R167","description":"Interactive IPA transcription and learning tool","archived":false,"fork":false,"pushed_at":"2025-03-17T02:26:08.000Z","size":21163,"stargazers_count":10,"open_issues_count":2,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-05T11:22:34.936Z","etag":null,"topics":["educational-software","ipa","phonetics","react"],"latest_commit_sha":null,"homepage":"https://ipa.wdurand.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/R167.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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":"2020-11-06T19:26:46.000Z","updated_at":"2025-02-21T21:29:47.000Z","dependencies_parsed_at":"2025-03-17T05:15:47.823Z","dependency_job_id":null,"html_url":"https://github.com/R167/int-ipa","commit_stats":null,"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/R167/int-ipa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R167%2Fint-ipa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R167%2Fint-ipa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R167%2Fint-ipa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R167%2Fint-ipa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/R167","download_url":"https://codeload.github.com/R167/int-ipa/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/R167%2Fint-ipa/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264538581,"owners_count":23624436,"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":["educational-software","ipa","phonetics","react"],"created_at":"2024-11-20T19:59:38.108Z","updated_at":"2025-07-10T06:30:57.191Z","avatar_url":"https://github.com/R167.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Interactive IPA transcription\n\nInt IPA is a tool for teaching IPA transcription with incremental feedback. See some examples at\n[ipa.wdurand.com](https://ipa.wdurand.com)!\n\n- [Interactive IPA transcription](#interactive-ipa-transcription)\n  - [Features](#features)\n  - [Config](#config)\n  - [Hosting](#hosting)\n    - [Prebuilt release](#prebuilt-release)\n    - [Hosted](#hosted)\n    - [Custom build](#custom-build)\n  - [Tools](#tools)\n    - [Planned additional tools](#planned-additional-tools)\n  - [Versioning](#versioning)\n    - [Example](#example)\n  - [Contributing](#contributing)\n  - [License](#license)\n\n## Features\n\n* Everything is client side\n  * No student data is saved to any server, etc. You just provide a config and then everything runs\n    locally in browser\n* Full interactive IPA keyboard\n* Multiple classes/assignment groupings\n* Verifiable submission codes\n  * includes student entered text (e.g. their name), timestamp, and verification.\n* Word segment matchers\n  * Segment macros, allowing the same message for multiple possible entries\n  * Wildcards to capture \"any\" type patterns\n* Unicode normalization\n* Saves incremental progress on an assignment\n\nFor a full list of changes, please see the [changelog](CHANGELOG.md).\n\n## Config\n\nThe application supports having multiple classes and multiple assignments for each class. All configuration\nis done using static files so that any file server can be used. Because of this, under [`/config`](public/config), there\nis a [`manifest.yaml`](public/config/manifest.yaml) that specifies a list of all classes. Each class is a folder with the given name\nand a [`tasks.yaml`](public/config/ex-lign101/tasks.yaml). The task file contains a list of all assignments\nfor this class, what the assignment is called, and a short description.\n\nThe assignment file itself contains metadata about the assignment, instructions, and the list\nof all words to be transcribed (specified again as a list of correct and incorrect options). Here is\na [sample](public/config/ex-lign101/format.sample.yaml) with annotations about which fields are required\nor optional. Additionally, [`assignment1.yaml`](public/config/ex-lign101/assignment1.yaml) is a full\nassignment using all of the available features. Finally, an assignment may attach sound files. All URLs\nare assumed relative to the given config file. This means you can easily have assignments fully self\ncontained in a folder as shown in the [nested](public/config/ex-lign101/nested) example.\n\nMore details on configuration is available [here](public/config/README.md)\n\n## Hosting\n\nThere are several different options for hosting an instance of Int IPA.\n\n### Prebuilt release\n\nGo to the [latest release](https://github.com/R167/int-ipa/releases/tag/latest) and download one of\nthe build assets. In most cases, you want `relative-path-assets.zip`. Unzip the contents and place\nit wherever you want hosted on your statically hosted webserver.\n\nThe `assets` and `static` folders must be copied to the server as well as `index.html`. The other\nfiles are optional and useful if this is the root folder of your site.\n\n`config` is where all config files live. An example configuration is included (it's largely the same\nas the [hosted](#hosted) version). Check out the [config section](#config) for more info.\n\n### Hosted\n\nA prebuilt version of this website exists at [ipa.wdurand.com](https://ipa.wdurand.com).\n\nEventually, there will be a tool to write custom assignments and have them hosted remotely for verified\nusers. At present, if you have interest in having your assignments hosted here as examples,\n please reach out to Winston Durand at wdurand@ucsd.edu.\n\n### Custom build\n\nFinally, you can create a custom build of the site. This involves compiling the site from source. To do\nso, install node and yarn, then run `yarn install`. After that, you can change any environment variables\nyou want in `.env.production` and run `yarn build` to compile a new build. Most features are documented\nin the `.env` files. This installation process mostly makes sense if you are forking this repository,\nat which point you should probably be looking at the [contribution](#contributing) section below.\n\n## Tools\n\nThis site currently has a tool to validate student submissions. It is available at an unlisted `/tools`\nURL on all builds, but can be most easily reached at [ipa.wdurand.com/#/tools/validate](https://ipa.wdurand.com/#/tools/validate).\n\n### Planned additional tools\n\n- Assignment creator\n- Hosted assignment creation\n\n## Versioning\n\nThis project aims to adhere to [Semantic Versioning 2.0.0](https://semver.org/). Violations of this\nscheme should be reported as bugs. While this should generally be the case for functionality across\nthe whole site, it will be specifically adhered to for all configuration files. MINOR versions will\n**only** contain backwards compatible/additional features and deprecations. Any removal of\nfunctionality will **only** come in major versions.\n\n### Example\n\nFor version `MAJOR.MINOR.PATCH`, the following is allowed\n\n- `MAJOR`: Any changes. Config files may need to be updated.\n  - Example: New required fields\n- `MINOR`: Backwards compatible changes. Older config files will continue to work.\n  - Example: New optional fields\n- `PATCH`: Bug fixes/copy changes/internal improvements.\n\n\u003c!-- TODO: Remove once we hit v1.0.0 --\u003e\nNote, this project is currently still on `0.Y.Z`. As per SemVer 2.0.0, breaking changes will only be\nmade by bumping `Y`.\n\n## Contributing\n\nFollow the steps below to setup Int IPA locally:\n\n```bash\n$ git clone https://github.com/R167/int-ipa\n$ cd int-ipa\n$ brew install yarn\n$ yarn install\n# Start dev server\n$ yarn start\n```\n\n## License\n\nSource code and examples released under the [MIT license](http://opensource.org/licenses/MIT).\nWebsite and documentation licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr167%2Fint-ipa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fr167%2Fint-ipa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fr167%2Fint-ipa/lists"}