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.jswith the option API, and if possible, it uses the strictest configuration possible. -
All implementations use
tailwindfor 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.
SvelteSolidjsVueLeptos
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/Processesfile in each framework. - Modal display, with a child component as a slot of the Modal, see the
component/Modalfile. - Props that are not trivial values, and whether they are properly typed, see
thecomponent/ProcessDetails` file. - Child that "emits" events that the parent reacts to for its display, see the
Appandcomponents/Sidebarfiles. - Using a dependency,
chart.js, directly (i.e. not with an already existing wrapper, likesvelte-chartjsor something). See thecomponents/CpuChartcomponent.
This is quite barebone for the moment but functional. The main thing still missing is testing, so that component testing can be compared.