πŸ¦€πŸ”¨ DevBcn Workshop - Full Stack Rust - Actix - Postgres - Shuttle - Dioxus

Overview

Building a Movie Collection Manager - Full Stack Workshop with Rust, Actix, SQLx, Dioxus, and Shuttle

Welcome to the this workshop! In this hands-on workshop, we will guide you through the process of building a full stack application using Rust for the API, Actix-Web as the web framework, SQLx for database connectivity, Dioxus for the front-end, and Shuttle for deployment. This workshop assumes that you have a basic understanding of Rust and its syntax.

Throughout the workshop, you will learn how to set up a Rust project with Actix-Web, implement CRUD operations for movies, establish database connectivity with PostgreSQL using SQLx, design a responsive front-end with Dioxus, and deploy the application to a hosting environment using Shuttle.

By the end of the workshop, you will have built a functional movie collection manager application. You will understand how to create APIs with Actix-Web, work with databases using SQLx, design and develop the front-end with Dioxus, and deploy the application using Shuttle. This workshop will provide you with practical experience and insights into building full stack applications with Rust.

Workshop Guide

You can find the workshop guide here.

You might also like...
An html macro for dioxus applications.

dioxus html macro This crate offers an html! like macro for dioxus applications. It expands to the equivalent rsx! macro call you would have made othe

A library to provide abstractions to access common utilities when developing Dioxus applications.

🧰 Dioxus Standard Library πŸš€ A platform agnostic library for supercharging your productivity with Dioxus. dioxus-std is a Dioxus standard library tha

 (Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.
(Pre-Release Software) Secure, Encrypted, P2P chat written atop Warp, IPFS, LibP2P, Dioxus and many more awesome projects and protocols.

Uplink Privacy First, Modular, P2P messaging client built atop Warp. Uplink is written in pure Rust with a UI in Dioxus (which is also written in Rust

A gui tool written in Dioxus to make it easy to release a workspace of crates to crates.io
A gui tool written in Dioxus to make it easy to release a workspace of crates to crates.io

Easy-Release: a visual tool for releasing workspaces of libraries A work-in-progress GUI for releasing a large workspace of crates manually, but easil

🧬 Material Icons for Dioxus

🧬 Dioxus Material Icons This project provides a simple but configurable component to render Google's Material Icons in Dioxus. πŸš€ How to get started

Fully-typed, async, reusable state management and synchronization for Dioxus 🧬

dioxus-query πŸ¦€ ⚑ Fully-typed, async, reusable state management and synchronization for Dioxus 🧬. Inspired by TanStack Query. ⚠️ Work in progress ⚠️

Resize observer hooks for Dioxus 🧬

dioxus-resize-observer Resize observer hooks for Dioxus 🧬. Support 0.1.0 - Dioxus v0.4 🧬 git - Dioxus v0.5 Web renderer (WASM) Example use dioxus::p

Fully-typed global state management with a topics subscription system for Dioxus 🧬

dioxus-radio πŸ“‘πŸ¦€ ⚠️ Work in progress !! ⚠️ . Fully-typed global state management with a topics subscription system for Dioxus 🧬. Who is this for You

Fermyon Spin + Dioxus - Client Side Rendering (CSR) template with TailwindCSS
Fermyon Spin + Dioxus - Client Side Rendering (CSR) template with TailwindCSS

spin-dioxus-csr Fermyon Spin + Dioxus - Client Side Rendering (CSR) template with Tailwind Setup Accomodate "chicken & egg" issue for https://github.c

Comments
  • for users of Jetbrains IDEs: a HTTP Client script corresponding to `api.http`

    for users of Jetbrains IDEs: a HTTP Client script corresponding to `api.http`

    What it is good for

    I have taken the vscode testing script file api.http and adapted it to a script for the HTTP Client, which is a free plugin for IDEs from Jetbrains.

    It features (grand word, isn't it)

    • distinct environments (local dev, remote shuttle)
    • asserting reponses' status codes
    • tracking of film_id of a newly created film

    Where to find the script

    There are two files needed. You can find both of them in this gist: https://gist.github.com/bronsen/509f5087b2b463d0268750bd6f236d87

    Please make use of them! πŸ˜„

    Where you could put the script

    I have put them in api/lib/tests, alongside health.rs. However, you can put them whereever you like, as long as you keep those two files (rest-api.http, http-client.env.json) together.

    How to use the script

    1. Open rest-api.http in your Jetbrains IDE where you have installed the HTTP Client plugin.
    2. At the top of the file tab, select the appropriate environment from Run with:
    3. Click the green double arrow
    4. Observe the results

    How the script works

    Just like the original api.http file, it's a bunch of http calls (GET, POST, etc) seperated by markers (###). There are placeholders (for example {{host}}), that are filled from the corresponding env file.

    GET {{host}}/health HTTP/1.1
    

    HTTP Client also has so-called Response handlers, which are javascript and can access the response object of the previous call, and can also set variables. One such variable is film_id that is used to fill the {{film_id}} placeholder.

    #shortened example
    POST {{host}}/v1/films 
    
    {"some": "data"}
    
    > {%
    client.global.set("film_id", response.body["id"]);
    # from now on we can use {{film_id}} in the script
    %}
    

    I hope this is useful to others, who follow that exhaustive tutorial πŸ˜… πŸ‘πŸΎ


    opened by bronsen 0
Releases(v0.0.6)
  • v0.0.6(Jul 12, 2023)

    What's Changed

    • Feat/front docs by @piny4man in https://github.com/BcnRust/devbcn-workshop/pull/3
    • Feat/fronnnnt docs by @piny4man in https://github.com/BcnRust/devbcn-workshop/pull/4
    • docs: add event handlers section by @piny4man in https://github.com/BcnRust/devbcn-workshop/pull/5
    • docs: add admonish and fix front crate creation docs by @piny4man in https://github.com/BcnRust/devbcn-workshop/pull/6
    • Fix Spelling. by @program247365 in https://github.com/BcnRust/devbcn-workshop/pull/7
    • docs: fix typos by @robjtede in https://github.com/BcnRust/devbcn-workshop/pull/9

    New Contributors

    • @program247365 made their first contribution in https://github.com/BcnRust/devbcn-workshop/pull/7
    • @robjtede made their first contribution in https://github.com/BcnRust/devbcn-workshop/pull/9

    Full Changelog: https://github.com/BcnRust/devbcn-workshop/compare/v0.0.5...v0.0.6

    Source code(tar.gz)
    Source code(zip)
  • v0.0.2(Jun 25, 2023)

Owner
BcnRust
Barcelona Rust user group
BcnRust
A template for starting a dioxus project to be used with dioxus-cli

A template for starting a dioxus project to be used with dioxus-cli

Dioxus 6 Nov 25, 2022
A Nix template for full-stack web apps in Rust using Leptos

leptos-fullstack A Nix template for full-stack web apps in Rust using Leptos. Tech used: Leptos full-stack framework server functions ssr + hydration

Sridhar Ratnakumar 6 Aug 4, 2023
Dragonfly, POC full-stack web app DSL

Dragonfly Dragonfly is a toy DSL that explores ways to describe the structure of full-stack web applications. You should not use it in production. For

Bas Dirks 9 Mar 15, 2023
Noir, Circom, and Halo2 exercises for DSL workshop at ZKSummit10

ZKSummit10 - Exploring Noir, Circom, halo2 Workshop Prompt Write Noir, Halo2 and Circom circuits that constrain integer division i.e decimals are trun

Richard Liang 4 Sep 21, 2023
GraphQL Summit 2023 Workshop Demo for Federated Subscriptions in GraphOS.

Kahoot Clone Demo App - Subgraphs Welcome to the project for GraphQL Summit 2023 "Federated Subscriptions in GraphOS" workshop! ⚠️ Before the workshop

Apollo GraphQL 4 Oct 10, 2023
Open source email client written in Rust and Dioxus. Under πŸ—οΈ

Blazemail A full-featued, beautiful, mail client that doesn't suck. Works on mac, windows, linux, mobile, web, etc. Features, status Blazemail is curr

Jon Kelley 13 Dec 19, 2022
A cross-platofrm desktop app to manage your ports made with Dioxus and Rust.

Port Manager A cross-platofrm desktop app to manage your ports made with Dioxus and Rust. This app has been tested only on macOS. Test on other platfo

Muideen 3 Mar 30, 2024
global state management for dioxus built on the concept of atoms. currently under πŸ—

Fermi: A global state management solution for Dioxus, inspired by Recoil.Js Fermi provides primitives for managing global state in Dioxus applications

Dioxus 15 Feb 12, 2022
Deploy dioxus-web to Vercel.

Dioxus demo This demo shows how to use Dioxus to build a static web application and deploy it to Vercel. Local development To run the demo locally, yo

Zihua Wu 8 Dec 28, 2022
Make data-driven table rendering easy with Dioxus

Dioxus Table Make data-driven table rendering easy with Dioxus Installation Until the next release of Dioxus this requires Dioxus nightly from git. Th

null 9 Oct 9, 2022