This repository contains experiments with Tauri and different frontend frameworks:
- Tauri + Svelte + Typescript + Tailwindcss
- Tauri + Solidjs + Typescript + Tailwindcss
- Tauri + Vue (composition) + Typescript + Tailwindcss
- Tauri + Leptos + Tailwindcss
This contains multiple different implementations of the exact same UI, a very barebone sysinfo GUI.
The backend is always the same, with some simple APIs provided by tauri to
retrieve information on the system (using the sysinfo
crate).
The frontend however is written in different frameworks, so that they can be compared.
There are also some other design decisions that are shared by all implementations.
-
All implementations must have good type checking. For JS frameworks this means
Typescript
, and a good implementation of it. Notably, this excludesVue.js
with the option API, and if possible, it uses the strictest configuration possible. -
All implementations use
tailwind
for CSS. No particular reason here, just wanted to try it, and using the same one for all also allows some comparison.
There are four implementations for the moment, each one lives in the corresponding folder, with a README file containing some observations.
Svelte
Solidjs
Vue
Leptos
Please note that the code is not particularly well designed, in fact it's even intentionally weirdly designed in some places. This is to force some situations that could occur on a more complex application, and see how to handle them with each framework.
A few things that are tested:
- A component displaying some "complex" data, ie mostly a derived value from a
reactive store that is initialized asynchronously. See the
component/Processes
file in each framework. - Modal display, with a child component as a slot of the Modal, see the
component/Modal
file. - Props that are not trivial values, and whether they are properly typed, see
the
component/ProcessDetails` file. - Child that "emits" events that the parent reacts to for its display, see the
App
andcomponents/Sidebar
files. - Using a dependency,
chart.js
, directly (i.e. not with an already existing wrapper, likesvelte-chartjs
or something). See thecomponents/CpuChart
component.
This is quite barebone for the moment but functional. The main thing still missing is testing, so that component testing can be compared.