Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Build a Full-Stack X/Twitter Clone with Rust
Orientation
Project Demo (3:31)
Project FAQ
Project Resources
Exercise: Meet Your Classmates and Instructor
Set Your Learning Streak Goal
Introduction
Tool Installation (3:27)
Design Documentation (6:38)
Viewing Code Changes (1:30)
User Registration
Registration Page (5:50)
Adding a Route (4:12)
Creating the Registration Form (4:20)
Managing State with Hooks (4:56)
Username Input Field (5:54)
Username Handler (6:04)
Password Input (1:47)
Domain Types (7:00)
Username and Password Types (5:48)
Keyed Notifications (6:55)
Keyed Notifications Template (5:43)
Displaying Registration Errors (4:10)
Disabling Form Submission (6:39)
Application Architecture
API Server State (7:30)
API Server CLI (5:40)
API Server Main Function - Part 1 (5:23)
API Server Main Function - Part 2 (4:43)
Creating a Router (5:12)
Configure Environment (6:08)
Database User ID (6:58)
Database Overview (2:56)
Create New User (8:01)
Routing Layers (6:41)
Endpoint Crate (7:08)
API Error Handling (8:56)
Database Connection Extractor (6:27)
Handling Public API Requests (6:59)
Finishing User Registration
New User Handler (5:32)
Making an API Request (9:25)
Confirming the API Request (1:41)
User-facing Error Messages (5:42)
User Login
Login Page (6:36)
Database IDs (3:03)
Making New Sessions (9:54)
Querying Sessions (3:07)
Performing User Login (8:15)
Creating a Session (5:40)
Frontend User Login (6:17)
Checking User Login (2:52)
Routing to the Home Page (4:05)
Autologin After Registration (6:49)
Navigation Bar
Creating a Navigation Bar (5:52)
Adding Navbar Buttons (6:06)
New Post Popup (7:55)
Making a New Post
Defining Chat Data Types (4:35)
Defining Post Data Types (5:11)
Authorized Requests (8:57)
Generic Authorized Handler (1:53)
Database Types (7:04)
Create a New Handler (5:25)
Endpoint URL Macro (3:42)
New Chat Page
UI Overview (6:18)
Chat Message (9:07)
Chat Headline (2:13)
Validating the Chat (7:39)
Posting a Chat (4:27)
Toast Messages
Setting Up Toast Messages (8:22)
Toast Message Templates (8:37)
Removing Old Toasts (5:49)
Adding Toasts to New Chat (2:50)
Displaying Posts
Public Post Data Type (6:53)
Trending Endpoint (7:11)
Public Post Data (6:37)
Post Query (4:44)
Trending Page (5:15)
Post Manager (6:20)
Populating the Post Manager (5:01)
Content Template (8:07)
Header Template (3:30)
Post Action Bar
Action Bar Template (3:12)
Bookmarking a Post (5:21)
Bookmark Queries (9:00)
Bookmark Status (5:20)
Reaction Query (6:18)
Reaction Endpoint (4:28)
Reaction Button Logic (5:06)
Reaction Button Template (3:57)
Aggregate Reaction Query (6:29)
Current Like Status (2:06)
Boost Queries (2:35)
Boost Endpoint (2:35)
Boost Button Logic (5:03)
Autoreloading the Backend (3:22)
Quick Response Template (6:46)
Quick Response Input Box (7:14)
Checking the Quick Respond Box (2:59)
Posting Images
Saving & Loading Images (10:39)
Generating Image URLs (7:09)
Updating the Content Endpoint (5:11)
Updating the New Post Handler (6:29)
Post Image Template (6:35)
Uploading an Image (5:37)
Previewing Uploaded Images (7:25)
Allowing Large Image Uploads (2:34)
Showing Image Posts (5:28)
Making Polls
Poll Query (5:02)
Poll Endpoint (4:15)
Aggregate Queries (5:20)
Updating The to_public Function (3:09)
New Poll Page (6:13)
Submitting a Poll (4:26)
Adding Choices to a Poll (6:46)
Routing (3:49)
Showing Poll Results - Part 1 (6:49)
Showing Poll Results - Part 2 (4:06)
Vote Endpoint (3:03)
Vote Handler (4:18)
Application Bar
App Bar Layout (6:48)
App Bar Buttons (5:45)
Add App Bar to New Chat Page (7:45)
Add App Bar to New Image & New Poll Pages (3:58)
Home Page
Home Page Query (7:41)
Like & Bookmark Queries (4:11)
Endpoints (4:18)
Home Page (7:02)
Like & Bookmark Pages (5:17)
Editing Profiles
Profile Endpoint (7:13)
Profile Update Query (3:29)
View My Profile Handler (6:14)
Update My Profile Handler (5:29)
Update Profile Page (4:16)
Image Upload (5:52)
Email Domain Type (5:57)
Email Field (4:59)
Display Name Field (2:43)
Password & Confirmation Fields (10:41)
Disable Submit Button (3:46)
Submitting Profile Info (5:59)
Checking Profile Submission (6:10)
Add App Bar (1:10)
Viewing Profiles
Endpoint (5:31)
View Profile Page & Routing (5:18)
Fetching a User Profile (3:39)
View Profile Template (5:56)
Post View Profile Click Handler (4:17)
Checking the View Profile Page (2:29)
Displaying the Profile Image (1:42)
Follow/Unfollow Endpoint + Backend (5:31)
Follow/Unfollow Fetch (5:21)
Local Profile (7:47)
Populating the Local Profile (4:32)
Finishing Touches and Bugfixes
Sidebar Setup (4:13)
Sidebar Template (6:04)
Sidebar Buttons (5:30)
Sidebar Profile Image (4:40)
Home Page Help Message (4:51)
Fixing Up the Trending Posts Page (4:29)
Return Absolute URLs (4:47)
No Self-Follow & Sync Follow Status (9:31)
Login & Registration Page Links (3:08)
Hide Navigation Bar (3:16)
Show Profile Image at Login (2:27)
Show Messages on Liked & Bookmarked Pages (4:09)
Show Login Errors (3:04)
Better Server Error Messages (6:16)
Testing
Database Testing (8:09)
Running Tests (3:47)
API Testing Utility Functions (6:41)
Writing an API Test (9:19)
Using a Different Test Runner (1:44)
Deployment (2:08)
Fixing Warnings (6:45)
Where To Go From Here?
Thank You! (0:26)
Review This Project
Defining Chat Data Types
This lecture is available exclusively for ZTM Academy members.
If you're already a member,
you'll need to login
.
Join ZTM To Unlock All Lectures