2024-10-17 19:00:23 +02:00
|
|
|
[Documentation](https://tuono.dev) | [Tutorial](https://tuono.dev/documentation/tutorial) |
|
2024-11-19 16:43:58 +01:00
|
|
|
[Discord](https://discord.com/invite/khQzPa654B) | [✨Contributing](https://tuono.dev/documentation/contributing)
|
2024-05-18 11:50:56 +02:00
|
|
|
|
2024-08-15 20:34:58 +02:00
|
|
|
# Tuono
|
|
|
|
|
|
|
|
|
|
<img align="right" src="https://raw.githubusercontent.com/Valerioageno/tuono/main/assets/logo.png" width="160px">
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|

|
|
|
|
|
|
2024-11-20 18:57:43 +01:00
|
|
|
**Tuono is a full-stack web framework for building React applications using Rust as the backend with
|
|
|
|
|
a strong focus on usability and performance.**
|
2024-05-02 20:49:46 +02:00
|
|
|
|
2024-11-10 10:44:36 +01:00
|
|
|
Tuono (Italian word for "thunder", pronounced /2 Oh No/).
|
2024-05-02 20:49:46 +02:00
|
|
|
Why Tuono? Just a badass name.
|
2024-04-27 10:10:50 +02:00
|
|
|
|
2024-11-10 10:44:36 +01:00
|
|
|
If you have experience with [Next.js](https://nextjs.org/) you will feel home here.
|
2024-08-20 14:30:46 +02:00
|
|
|
|
2024-11-10 10:44:36 +01:00
|
|
|
Some of its features are:
|
|
|
|
|
|
|
|
|
|
- 🟦 Native Typescript
|
|
|
|
|
- 🌐 Next.js like Routing
|
|
|
|
|
- 🍭 CSS/SCSS modules
|
|
|
|
|
- 🧬 Server Side Rendering
|
|
|
|
|
- 🔥 Hot Module Reload
|
2024-08-20 14:34:37 +02:00
|
|
|
|
|
|
|
|
## 📖 Documentation
|
|
|
|
|
|
|
|
|
|
The [documentation](https://tuono.dev/documentation) is available on
|
|
|
|
|
[tuono.dev](https://tuono.dev/).
|
2024-06-06 20:54:09 +02:00
|
|
|
|
2024-06-05 21:17:26 +02:00
|
|
|
## Introduction
|
|
|
|
|
|
2024-10-12 19:03:05 +02:00
|
|
|
**NodeJs/Deno/Bun are the only runtimes that allow a React app to be full-stack right? (no)**
|
2024-06-05 21:17:26 +02:00
|
|
|
|
2024-11-10 10:44:36 +01:00
|
|
|
Tuono is a full-stack React framework with the server side written in Rust.
|
2024-10-12 19:03:05 +02:00
|
|
|
Because of this, Tuono is extremely fast, and the requests are handled by a multithreaded Rust server.
|
2024-06-21 19:33:01 +02:00
|
|
|
React is still React - it is just superpowered.
|
|
|
|
|
|
2024-10-12 19:03:05 +02:00
|
|
|
**Rust is a hard language, then writing server-side code is hard as well, right? (no again)**
|
2024-06-21 19:33:01 +02:00
|
|
|
|
|
|
|
|
Tuono provides a collection of utilities to handle the server side code seamlessly with the React code.
|
2024-10-12 19:03:05 +02:00
|
|
|
Each server-side route is managed in a separate file alongside the React route. The routing is handled
|
2024-06-23 20:15:33 +02:00
|
|
|
by Tuono based on the files defined within the `./src/routes` directory.
|
2024-06-05 21:17:26 +02:00
|
|
|
|
2024-11-10 10:44:36 +01:00
|
|
|
**How is Tuono different from Next.js?**
|
|
|
|
|
|
|
|
|
|
The Tuono API tries to stick as much as possible to the Next.js one (or at least takes a huge inspiration
|
|
|
|
|
from it). The major difference is the backend system. While Next.js relies entirely on Node/Deno/Bun,
|
|
|
|
|
Tuono runs the server without any intermediary runtime. This enables impressive performance improvements
|
|
|
|
|
(check the benchmarks [here](https://github.com/Valerioageno/tuono/tree/main/benches)).
|
|
|
|
|
|
2024-06-21 19:33:01 +02:00
|
|
|
## Getting started
|
2024-06-05 21:17:26 +02:00
|
|
|
|
2024-11-10 10:44:36 +01:00
|
|
|
Tuono is the CLI that provides all the needed commands to handle the full-stack project.
|
2024-10-12 19:03:05 +02:00
|
|
|
To download it is required [cargo](https://doc.rust-lang.org/cargo/), which is the [rust](https://www.rust-lang.org/)
|
2024-06-21 19:33:01 +02:00
|
|
|
package manager.
|
2024-05-18 11:50:56 +02:00
|
|
|
|
2024-07-12 11:01:55 +02:00
|
|
|
Then run `cargo install tuono`.
|
2024-05-18 20:45:35 +02:00
|
|
|
|
2024-10-12 19:03:05 +02:00
|
|
|
To list all the available commands, run `tuono -h`
|
2024-07-12 11:01:55 +02:00
|
|
|
|
2024-11-10 10:44:36 +01:00
|
|
|
To create a new project, run `tuono new [NAME]` (optionally, you can pass the `--template` (or `-t`) flag - check the
|
2024-06-21 19:33:01 +02:00
|
|
|
[examples](https://github.com/Valerioageno/tuono/tree/main/examples) folder).
|
2024-05-18 20:45:35 +02:00
|
|
|
|
2024-11-21 11:30:02 +01:00
|
|
|
Then, to run the local development environment, install the JS dependencies (`npm install`) and run inside the project folder `tuono dev`
|
2024-05-18 11:50:56 +02:00
|
|
|
|
2024-10-12 19:03:05 +02:00
|
|
|
Finally, when the project is ready to be deployed, just run `tuono build` to create the final React assets
|
|
|
|
|
and to set the server project in `production` mode.
|
2024-06-23 20:15:33 +02:00
|
|
|
|
|
|
|
|
Now to execute it just run `cargo run --release`.
|
2024-06-21 19:33:01 +02:00
|
|
|
|
2024-06-17 13:45:21 +02:00
|
|
|
## Contributing
|
2024-11-10 10:44:36 +01:00
|
|
|
|
2024-06-23 20:15:33 +02:00
|
|
|
Any help or suggestion will be appreciated and encouraged.
|
2024-08-20 14:30:46 +02:00
|
|
|
Check the [✨Contributing](https://tuono.dev/documentation/contributing) page
|
2024-06-17 13:45:21 +02:00
|
|
|
|
2024-06-05 21:17:26 +02:00
|
|
|
## License
|
2024-05-11 15:08:49 +02:00
|
|
|
|
2024-06-05 21:17:26 +02:00
|
|
|
This project is licensed under the MIT License.
|