web-devkits / webinizer

Webinizer is a collection of tools to convert native applications, such as these programmed by C/C++/Rust, to Web applications which are constructed by HTML/CSS/JavaScript and WebAssembly.
Apache License 2.0
20 stars 7 forks source link

Webinizer

[!IMPORTANT]\ Webinizer is now in Beta trial. We'd greatly appreciate your feedback!

About

Webinizer is a collection of tools to convert native applications, such as these programmed by C/C++/Rust, to Web applications which are constructed by HTML/CSS/JavaScript and WebAssembly.

Webinizer consists of two parts; a core engine that analyzes the code and then either fixes or highlights issues, and a web frontend to configure projects and display results. This repo consists of the core engine, for the web frontend see the webinizer-webclient repo.

We also provide the webinizer-demo repo that holds the demo projects and build scripts to setup Webinizer.

Setting up Webinizer

Run with Docker (recommended)

Webinizer provides scripts to build a Docker image that will setup everything for you and make Webinizer ready to use out of the box.

Please follow the Docker installation and setup guide for the detailed instructions.

Run locally

The Webinizer also supports running locally without Docker. Currently this is validated on Linux (Ubuntu 20.04).

Please follow the Run locally guide for the detailed instructions.

Documentation

Webinizer User Manual is available under documentation/ folder with below structure.

Using Webinizer

Extending Webinizer

Webinizer provides an extension mechanism for developers to extend the capabilities of the tool.

Areas under development

We're considering how to create a package format and repository hosting for libraries and applications ported to Wasm. There are proposals for module format and registry hosting in our wiki.

Setting up the development environment

The steps to setup the development environment are similar to those described in Run Webinizer locally.

Basic commands

Recommended IDE setup

It's preferred to use VS Code for development.

It's preferred to use Prettier formatter, along with Format on Save. Please setup the Prettier and ESLint extensions and configure them accordingly.

NOTE that we set printWidth as 100 and tab width as 2.

Contributing

We welcome contributions to Webinizer. You can find more details in CONTRIBUTING.md .