
Initialize a Solid JS TypeScript project from GitHub templates, install dependencies with npm or pnpm, and set up a project folder to run the twitter-like app with Firebase.
Learn how to initialize and integrate Tailwind CSS in a Solid JS project, install dependencies, configure Tailwind, import index.css, and apply Tailwind utilities to build the layout.
Refactor the base layout into modular components by creating a main sidebar and a trends sidebar, organizing them under a components folder with proper imports for cleaner code.
Create and use layouts as reusable components that wrap content with a main layout, pass children via props, and render dynamic components like hello and goodbye inside a shared wrapper.
Create a new glide post component to separate the content of the glide post, place it in the components folder, and render glides by iterating the glide array.
Create intermediate getters for the glide post and user data to shorten access from props, enabling concise expressions like user.avatar and nickname.
Define a multi-screen architecture with home, login, and register screens inside a screens folder, then prep for a router to render views based on the URL.
Wrap the application in the Solid JS router, install and import the router, then define routes for home, login, and register to render the corresponding screens.
Learn to implement lifecycle functions by mounting and cleaning up components, create and import a hello world component, and use a show component with a fallback to render content conditionally.
Create a simple popup component in Solid JS, display content conditionally with an is open signal and a trigger button, and integrate it into the sidebar.
Introduces create effect, a lifecycle function that runs on mount and reacts to reactive value changes to display or hide the pop up.
Open and close the popup in Solid JS by adding a click listener to close on outside clicks, with mount and cleanup, a closePopup function, and stopImmediatePropagation to ignore clicks.
Set up a provider in Solid JS to share auth context values across the app, using signals for isAuthenticated and loading tied to Firebase authentication state on app mount.
Simulate a login flow with an async authenticate user function using a timeout and promise to toggle is authenticated and loading on mount, including try-catch-finally error handling.
Route layouts in Solid JS with a main and out layout and outlet to render home, login, and register screens. Redirect users to login and show home when logged in.
Navigate between main and out layouts by checking authentication state, redirecting unauthenticated users to login and authenticated users to home, using solid router navigate with replace option.
Learn to wire a submit callback into the form submission flow with a form hook, capture form data on submit, and pass it to the register screen for server submission.
Define generic TypeScript forms with a base string key-value type and extend it for login and registration, enabling type-safe data in useForm submissions.
Move the validate logic out by refactoring to use form, exposing the validate function, and wiring it to on blur for input fields.
Is this course right for you?
This course covers creating a Twitter-like application with Solid JS and minimal 3rd party dependencies. Almost every feature is made from scratch without any dependency package. This covers - Form Validation, Pagination, Modal, Popups, Snackbar, and more.
The course covers the explanation of Solid JS library API by working on an actual project. This course will give you the confidence and skills required to start any project.
Students should have basic javascript knowledge to start working on this course.
What is Solid JS?
Solid JS is a reactive UI library inspired by React JS. It utilizes Component-like architecture, reactive data binding, and JSX.
Every Component executes once, and the Hooks and bindings execute many times as their dependencies update.
Solid follows the same philosophy as React with unidirectional data flow, read/write segregation, and immutable interfaces. It, however, has an entirely different implementation that forgoes using a Virtual DOM.
What is Typescript?
TypeScript is an open-source language that builds on JavaScript, one of the world's most used tools, by adding static type definitions.
What are you going to work on?
Students will build a Twitter-like app from scratch - the HTML layout part is not part of the course (This will be provided in the course materials to save time and focus purely on Solid JS). The focus of this course is coding and not writing HTML content.
You will learn how to use Typescript language - a superset of Javascript providing additional features and a static type checker.
The course starts with the preparation of the base layout of the application. All designs - images, and content are provided by the instructor.
Content can be briefly summarized in these points:
Layout preparation - A few lectures to prepare the HTML for your application. Separation of layout into the Solid JS components.
Solid JS Router - This part explains how to create a "multi-page" application. Students will learn how to create a routing with different routing strategies and navigation to the routes. Covers the creation of Profile, Login, and Register pages.
Signals & Reactivity - Explains how to create and manage reactive data with createSignal and stores.
Lifecycle function - How to use onMount and onCleanup
Auth Forms - Students will learn how to create a reactive form and bind the data to form inputs.
Custom Form Validation - Covers creating a custom input/form validation and error handling from scratch.
Firebase/Firestore - Initialization of Firebase application (data storage)
Hook Functions - Important part of the projects. Allows the feature-related code to be separated into its context.
Authentication - This part covers creating a login, register, and logout functionality. Students will learn how to authenticate a user upon the application visit.
Provider and Context - This creates a provider component, which can hold the data on the root level and provide them to underlying components.
Snackbars - App-wise functionality created with Provider to display any message as a toast popup.
Glide Creation - Covers how to create a new glide and display it on the main page. From this point on, students will often work with Firebase/Firestore.
Follow Functionality - Follow functionality allows users to subscribe to other users.
Display Glides from Following - Subscription (Following) to other users will allow seeing the Glides (messages) they post.
Paginate Glides - It would be inefficient to fetch/display all of the glides on the initial load. Students will learn how to implement their lazy loaded pagination when data are loaded as the users browse the application.
Create Sub-Glides - It's essential to have a way to respond to glides. This feature enables a user to create subglides, which is an answer to the glide.
Modal Messenger - Students will learn how to create a modal component from scratch. This will be used to display a messenger component on any page.
Deployment to Vercel - Finally, the application will be live hosted on Vercel. Anybody on the internet will be able to visit your application.
Persistence - This section explains how to store data on the application level and persist them for later use.
While working on the features above, the students will learn and understand Solid JS features. They will know how to architecture applications and will be able to create their applications with Solid JS.