{"id":21197521,"url":"https://github.com/vafdaf12/transistor","last_synced_at":"2025-07-12T12:39:19.123Z","repository":{"id":208710151,"uuid":"722278092","full_name":"Vafdaf12/transistor","owner":"Vafdaf12","description":"Educational tool for building boolean logic circuits","archived":false,"fork":false,"pushed_at":"2024-02-12T20:52:22.000Z","size":11895,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-21T14:29:10.758Z","etag":null,"topics":["boolean-algebra","cpp","sfml"],"latest_commit_sha":null,"homepage":"","language":"C++","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/Vafdaf12.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}},"created_at":"2023-11-22T19:56:56.000Z","updated_at":"2024-01-17T07:49:05.000Z","dependencies_parsed_at":"2023-12-29T11:22:53.667Z","dependency_job_id":"92dfb046-b7a5-4dde-84ea-369497aa527b","html_url":"https://github.com/Vafdaf12/transistor","commit_stats":null,"previous_names":["vafdaf12/transistor"],"tags_count":1,"template":false,"template_full_name":"Vafdaf12/cmake-project","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vafdaf12%2Ftransistor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vafdaf12%2Ftransistor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vafdaf12%2Ftransistor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vafdaf12%2Ftransistor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vafdaf12","download_url":"https://codeload.github.com/Vafdaf12/transistor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243652702,"owners_count":20325610,"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":["boolean-algebra","cpp","sfml"],"created_at":"2024-11-20T19:45:15.942Z","updated_at":"2025-03-14T22:10:04.943Z","avatar_url":"https://github.com/Vafdaf12.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transistor\nTransistor is an attempt to make a high-performance digital logic simulator that can be used in an educational context to showcase the complex circuitry behind the concepts taught in computer architecure classes. It uses SFML for Graphics and nlohmann's JSON library for saving circuits.\n\n![image](https://github.com/Vafdaf12/transistor/assets/25525445/58ce5173-615b-4394-a9ce-5552eb62693b)\n\n# Building\nBuilding this project requires CMake. In most cases you should be able to configure and build the project with\n```sh\ncmake -S . --preset default \ncmake --build build\n```\n\nThe build output can be found in `build/src/`. The exact location of the binary depends on your generator\n\n# Usage\nBy default, Transistor will attempt to open a the file `data/world.json`. This can be overridden by passing a path as an argument when executing Transistor:\n```\n./Transistor path/to/world.json\n```\n\nThe basic controls of Transistor are as follows:\n- `Up/Down Arrow` increases/decreases the number of output pins respectively\n- `Alt +Up/Down Arrow` increases/decreases the number of input pins respectively\n- `Control+C`/`Control+V` copies/pastes the selected circuits respectively\n- `Delete` deletes the selected circuits\n\nPrimitive gates can be dragged and dropped into the world from the top bar. \n\n## Custom Circuits\nCustom circuits are loaded from a a JSON file in the `data` folder. In general, if you have a file `data/xxx.json`, it corresponds to the custom circuit type `xxx`. Currently there is no way to add custom circuits in Transistor through the GUI, requiring some manual text editing:\n1. Open a circuit file in the `data` folder, e.g. `data/my_custom_circuit.json`\n2. Edit the circuit as you see fit\n3. In a different circuit file, manually add the custom circuit in the file by using the format:\n```json\n{\n    \"id\": \"\u003csome-id-here\u003e\",\n    \"type\": \"my_custom_circuit\",\n    \"position\": { \"x\": 0, \"y\": 0 }\n}\n```\n4. Once loaded into the world, you can use copy-paste to retrieve multiple circuits\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvafdaf12%2Ftransistor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvafdaf12%2Ftransistor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvafdaf12%2Ftransistor/lists"}