This project demonstrates how to build a complex web application using Rust, WebAssembly (Wasm), and the Yew framework. It covers various aspects of frontend development, including authentication, routing, form handling, state management, and asynchronous requests. The project aims to showcase the power and flexibility of Rust in web development, providing a comprehensive guide for developers looking to explore Rust and WebAssembly for frontend applications.
- Authentication: Secure user authentication and session management.
- Routing: Multiple routes and pages including Home, Login, and NotFound pages.
- Forms for CRUD Operations: Create, Read, Update, and Delete functionalities for interacting with backend APIs.
- State Management: Efficient state handling using Yew's context and custom hooks.
- Async Requests: Making asynchronous requests to web APIs using the browser's fetch API.
- Initial Setup: Project structure and basic features implementation.
- Login Form: Creating a Login form and logging user input to the console.
- Backend Connection: Establishing a connection with the backend using Rocket in Docker and implementing successful API calls from the frontend form.
- Routing: Implementing routing for Home and NotFound pages.
- User Context: Creating and integrating user context for enhanced user experience.
- Sidebar: Adding a sidebar for improved navigation.
- Session Storage and Logout: Implementing session storage and a logout button for session management.
- CRUD Interface for Rustaceans: Starting the CRUD interface for the
/rustaceans
endpoint. - CRUD Interface for Crates: Completing the CRUD interface for the
/crates
endpoint.
- Good knowledge of Rust
- Understanding of HTTP, REST, JSON, HTML, and CSS
- Experience with frontend frameworks (React-like frameworks)
Once the project is running, you can access it in your web browser. Navigate through different routes, interact with forms, and experience the seamless integration of Rust and WebAssembly in a modern web application.
Contributions are welcome! Feel free to open issues or submit pull requests.