A web app and a server app to simulate logic circuits and visualize wanted signals.
To do a simulation, you must upload (to the server via the web interface) a circuit file descriptor, and an input file descriptor. These files have respectively .logic and .simu extensions, and some examples can be found in examples/ directory.
- GNU/Linux
The simulator needs this operating system to work.
- Java and ANTLR lib
The first simulator part needs a Java environment with ANTLR library. You must build the Java circuit creator to use the simulator, see README in simulator/ for details.
- make and C++ compiler
The second simulator part needs make and g++.
- Docker
The MySQL database used to store circuit and simulation files informations is deployed with docker-compose.
- Yarn (or npm)
It uses a series of packages listed in package.json.
Run yarn
to install the packages.
The main packages are: Nx for the project management, Nest for the server app, and React for the interface app.
Some scripts are also defined in package.json, run yarn script-name [optional-arguments]
to execute one of them.
Run docker-compose up
to deploy the database on port 3036.
Run yarn nx serve server
to deploy the server app on port 8080.
Run yarn nx serve interface
to deploy the interface app on port 4200. Visit http://localhost:4200/ in your browser.
To see the several components of the interface, run yarn nx run ui:storybook
to launch storybook on port 4400. Visit http://localhost:4400/ in your browser.
Note: The apps will automatically reload if you change any of the source files.
To deploy the project in a production environment, Dockerfiles are used to create environment, server and interface production images. They are used in docker-compose.prod.yml but Traefik service still needs to be configured.
Run yarn nx test server
to execute the unit and end-to-end tests of server app via Jest.
If some errors are thrown, it might be because of parallel execution. So consider using yarn nx test server --runInBand
to execute one test after another.
Run yarn doc:server
to generate and deploy server documentation. You will be able to see dependency graphs and read comments of server app on your browser.