{"id":14967425,"url":"https://github.com/joeylemon/nfa-to-dfa","last_synced_at":"2026-03-15T16:01:54.393Z","repository":{"id":44867974,"uuid":"368609392","full_name":"joeylemon/nfa-to-dfa","owner":"joeylemon","description":"a visual NFA to DFA converter","archived":false,"fork":false,"pushed_at":"2024-03-15T13:18:08.000Z","size":1637,"stargazers_count":90,"open_issues_count":3,"forks_count":12,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-06T04:37:46.129Z","etag":null,"topics":["eslint","flexbox","github-actions","html5-canvas","javascript","mochajs","shouldjs"],"latest_commit_sha":null,"homepage":"https://joeylemon.github.io/nfa-to-dfa/","language":"JavaScript","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/joeylemon.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":"2021-05-18T17:10:20.000Z","updated_at":"2025-05-30T16:25:14.000Z","dependencies_parsed_at":"2024-08-23T14:34:42.831Z","dependency_job_id":null,"html_url":"https://github.com/joeylemon/nfa-to-dfa","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/joeylemon/nfa-to-dfa","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joeylemon%2Fnfa-to-dfa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joeylemon%2Fnfa-to-dfa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joeylemon%2Fnfa-to-dfa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joeylemon%2Fnfa-to-dfa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joeylemon","download_url":"https://codeload.github.com/joeylemon/nfa-to-dfa/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joeylemon%2Fnfa-to-dfa/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279077248,"owners_count":26098234,"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-10-15T02:00:07.814Z","response_time":56,"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":["eslint","flexbox","github-actions","html5-canvas","javascript","mochajs","shouldjs"],"created_at":"2024-09-24T13:38:02.516Z","updated_at":"2025-10-15T12:09:30.690Z","avatar_url":"https://github.com/joeylemon.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Visual NFA to DFA Converter\n![Lint and Test](https://github.com/joeylemon/nfa-to-dfa/workflows/Lint%20and%20Test/badge.svg)\n\nhttps://joeylemon.github.io/nfa-to-dfa/\n\n## Overview\n\n\u003cimg alt=\"Screenshot of the main application interface\" src=\"https://user-images.githubusercontent.com/8845512/125208072-67ba5500-e25e-11eb-8b6e-c798ece6caf1.png\"\u003e\n\nThis tool is used to convert [non-deterministic finite automata](https://en.wikipedia.org/wiki/Nondeterministic_finite_automaton) (NFA) to [deterministic finite automata](https://en.wikipedia.org/wiki/Deterministic_finite_automaton) (DFA) through an interactive and visual interface. More specifically, you can:\n- Create an NFA interactively or from a saved JSON file\n- Export an NFA to a JSON file\n- View the description of both the NFA and the DFA, including a full delta transition table\n- Convert the NFA to an equivalent DFA in three possible ways:\n    - **Step-by-step**: the DFA is constructed in controlled increments\n    - **All at once**: completely convert the NFA to the DFA in one leap\n    - **Animated**: watch the conversion process take place automatically\n\n### Technology\n\n![image](https://user-images.githubusercontent.com/8845512/121960347-f907db80-cd33-11eb-9ec1-f249496ae452.png)\n\n_Originally created by [Alex Klibisz](https://github.com/alexklibisz) and [Connor Minton](https://github.com/c-minton), COSC 312, Spring 2015, University of Tennessee, Knoxville._\n\n_Rewritten and enhanced by [Joey Lemon](https://github.com/joeylemon) and [Camille Williford](https://github.com/awillif), COSC 493, Fall 2021, University of Tennessee, Knoxville._\n\n## Contributing\n\n### Prerequisites\n\nYou must have [Node.js v12.19.0+ and npm](https://nodejs.org/en/) installed to run the application locally. Node versions below v12.19.0 are unable to run the unit tests.\n\n### Running Application\n\nTo set up the application locally, first clone this repository:\n```shell\n\u003e git clone https://github.com/joeylemon/nfa-to-dfa.git\n```\n\nThen, install the dependencies:\n```shell\n\u003e cd nfa-to-dfa\n\u003e npm install\n```\n\nThen, simply run the start script to create a local webserver:\n```shell\n\u003e npm start\n```\n\nRunning this script should give an output similar to below:\n```shell\n\u003e nfa-to-dfa@0.0.2 start ~/Desktop/nfa-to-dfa\n\u003e browser-sync start -s -f . --no-notify --host localhost --port 8000\n\n[Browsersync] Access URLs:\n --------------------------------------\n       Local: http://localhost:8000\n    External: http://192.168.1.127:8000\n --------------------------------------\n          UI: http://localhost:3001\n UI External: http://localhost:3001\n --------------------------------------\n[Browsersync] Serving files from: ./\n[Browsersync] Watching files...\n```\n\nYou can now navigate to `http://localhost:8000` in the browser to view the application. The website will automatically reload upon changes to the code.\n\n### Linting\nPrior to adding changes to the repository, you should run the linter on the code to ensure there are no syntax errors and to maintain a uniform coding style:\n```shell\n\u003e npm run lint\n```\n\nTo automatically lint files before committing them, you should add a pre-commit hook. Copy the `pre-commit.sample` file to `.git/hooks/pre-commit`:\n```shell\n\u003e cp pre-commit.sample .git/hooks/pre-commit\n```\n\nNow, git will automatically lint all changed files before committing them to the repository.\n\n### Testing\nYou should also test your changes before committing them to the repository:\n```shell\n\u003e npm test\n```\n\nThis will run all unit tests in the `src/js/test` directory and report any errors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoeylemon%2Fnfa-to-dfa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoeylemon%2Fnfa-to-dfa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoeylemon%2Fnfa-to-dfa/lists"}