
Learn to build a fully native electron app with Firebase, including authentication, routing, offline or online status, and real-time chat, using the Ariake UI and Firestar queries.
Learn to build a simple chat app in Electron with TypeScript, featuring a text area, submit button, and a chat with OpenAI GPT, including main process code and components.
Learn to efficiently resolve issues across languages by inspecting error messages, googling fixes, and comparing your code with the instructor’s GitHub repository, then apply targeted debugging steps.
Build a basic electron app with a browser window and a preload script to expose the electron API, and learn how the main process creates the window and loads index.html.
Initialize electron by setting up the environment, installing node and npm, creating a main.js, and running with electron to see hello world while using html and javascript.
Create an Electron browser window by loading index.html, configuring height and background color, and using dev tools to inspect the window's HTML content.
Explore how Electron uses a main process to create browser windows and how the renderer process runs the UI, including window lifecycle and development tools.
Learn how to build an Electron app with notifications by using the main and renderer processes, creating browser windows, and leveraging Node.js modules to access the operating system.
Understand how Chromium powers rendering in Chrome and Electron, and how the V8 engine executes JavaScript, with Node.js modules and native access in renderer and main processes.
Explains how node integration works in renderer and main processes in Electron, compares Chrome and Electron, and demonstrates safeguards like content security policy and avoiding unsafe inline scripts.
Learn practical code cleanup for an Electron and React chat app by removing unused integrations, safely enabling Node modules, and configuring context isolation and secure JavaScript execution.
Install React and React DOM in an Electron project, load the app into index.html, and render it with React DOM. Compile the code so Electron runs it despite import errors.
Explore how Webpack bundles JavaScript for browser use, configure Babel and loaders, and set up an Electron target with an entry point and watch mode.
Discover how Babel compiles and bundles code in Electron and React apps. Understand source maps for debugging and manage live refresh and recompile workflows.
Install and configure electron-reload to automatically reload the Electron app when JavaScript files change in development. Use the isDevelopment check to disable reloading in production.
Explore how to implement main–renderer communication in Electron by sending IPC events to trigger native notifications, while highlighting security risks of node integration and how to secure context isolation.
Explore secure communication between main and renderer processes using preload scripts, exposing safe IPC functions, addressing context isolation, and preventing security issues in an Electron and React chat app.
Learn to securely bridge the main and renderer processes in Electron by using contextBridge with contextIsolation and a preload script to expose a safe notification API, preventing unsafe evaluation.
Explore the chat app layout with a left chat list and right content, a global settings view, and fetching chats from firebase along with login and register flows.
Set up the initial layout for the Electron and React chat app by installing Bootstrap and applying a full-height background to enable a right-side chat area and left-side navigation.
Learn to split a chat app layout into reusable components, including a home view and chat search, and organize left and right panels with available and joined chats.
Learn to implement routing in an electron and react app using a router to switch between home, settings, login, and register, with a shared navigation bar.
Learn to implement a back button and programmatic navigation using history to return to the previous screen, and set up settings, login, and register views.
Implement the chat view in an Electron and React app, displaying joiners and messages in a chat room. Create reusable chat users and chat messages components with navigation to home.
Learn to build a chat interface with Electron and React, routing to chat pages using dynamic parameters, placeholders, and title updates from channel id, plus navigation and refresh considerations.
Learn how to set up Firebase for a chat app by creating a project, choosing a Spark plan, and using Cloud Firestore with collections and documents for data storage.
Learn to set up Firebase, initialize Firestore, connect to the chats collection, and fetch document data using snapshots to display chat details in your application.
Learn to move firebase configuration into a dotenv environment file for the Electron and React chat app, exposing api key, domain, and project details.
Explore building a chat app with Electron and React, implementing Redux architecture using actions, a store, dispatching, and selectors via React Redux provider for real-time data flow.
Create and dispatch asynchronous chat actions in a Redux setup, fetch data from an API, and wire middleware to expose dispatch through the store.
Dispatch chat actions in redux to fetch data, handle action types in the chat reducer, and update the store's default state with chat items.
Fetch chats through the store, dispatch actions, and render a chat list with each chat's image, online status, and name, preparing for login and Firebase-based registration.
Implement login and registration flows with form validation and error handling, including loading states and Firestore authentication events. Show user name and avatar for logged-in users and enable logout.
Refactor the welcome view in an electron and react app by consolidating login and register forms into components and wiring them with firebase authentication.
Learn to toggle between login and register forms in a React Electron chat app by using a boolean state, a ternary render, and dynamic text to switch views.
Learn to get form values with a React form setup using useForm, register inputs, and handleSubmit to collect name, email, and password and then submit to Firebase.
Register a user with Firebase authentication by building a register API that accepts email and password from a form and returns the user.
Register a user and create a Firestore profile using the UID as the document ID, storing username, email, avatar, and joined chats via a create user profile helper.
Learn to listen for Firebase auth state changes using onAuthStateChanged, dispatch authentication results, and update UI and routes when users log in or out in a React app.
Implement an auth reducer that monitors authentication state, updates a user object and isChecking flag, dispatches success or failure actions, and redirects authenticated users to the home page.
Implement a logout feature by wiring a red logout button to Firebase signOut and dispatching a logout action, updating the UI to reflect the logged-out state.
Implement login and logout with Firebase authentication, including register flow and dispatching login actions using email and password.
Explore building a reusable loading view and spinner for a chat app, passing dynamic messages via props and integrating with login flow and state-driven loading indicators.
Fetch the current user profile when authenticated, retrieving the uid, avatar, email, and username from the profiles collection for display in the navbar.
Refactor the authentication reducer by splitting state into two producers—user and is checking—and combine them into the radio service. Align actions, initial states, and login/logout flow with firebase authentication.
Learn to display errors in login and register flows by wiring reducers and producers to manage state, handle error cases, and show messages in forms.
Create and combine login and register reducers to manage authentication state in a chat app using Electron and React, turning actions into a reusable, composable producer.
Refactor the chat app's error handling by implementing a reusable error reducer and a shared producer for login and register actions, enabling a consistent action flow.
Implement a reusable fetching reducer for a chat app by using producers that respond to action types and manage loading states like is checking to support login and registration flows.
Learn to implement and debug login and registration flows in an Electron and React chat app, including authenticating with Firebase, managing loading states, and redirecting to home after success.
Refactor a chat app by introducing a store provider, wiring use dispatch and use selector to manage login, loading, and auth-based redirects.
Build an authenticated route component that checks the current user, redirects unauthenticated users to the login screen, and wraps the app with a central provider for secured access.
Improve user experience by implementing a base layout that wraps app views with navigation, conditionally showing back and bottom bars, and refining authentication flow for restricted content.
Fix logout loading by ensuring the login success dispatch resets loading and navigates to the home view. Ensure API responses return a user object and profile for login and registration.
Master layout with a higher-order component that wraps views in a base layout, passing back navigation and configuration props to each screen in the chat app.
Explore how the offline notification appears when the internet disconnects, with the app showing disabled states across screens, including the login screen.
Learn to monitor internet connectivity in a React chat app using window.navigator online status and online/offline events, update the user interface accordingly, and unsubscribe listeners during cleanup.
Move online status logic into actions and a connection handler that dispatches online or offline actions, then listen for connection changes and unsubscribe on cleanup.
Learn to implement a connection reducer that listens for online and offline events, dispatches actions, and exposes an online status selector to drive ui changes in a radio service.
Explore how to implement a middleware in an Electron and React chat app to monitor online and offline state, dispatch actions, and display in-app notifications as side effects.
Implement a notification utility for the chat app by creating utils/notifications.js, exposing a setup function that requests permission and displays notifications, and integrating it in the home view.
Build a notification utility in Electron and React, with setup and show functions that request permission and display notifications reflecting the app’s online or offline connection status.
Introduce traveling chat in an asset management app built with electron and react, showing how to create and join chats and subscribe to chat and user profile updates via api.
Develop a chat create view in a React and Electron app by initializing a new view, wrapping it in the base layout, and wiring navigation links for starting a chat.
Create a chat form by duplicating the login form, centering content, and adding inputs for name, description, and image, then submit to the Firestar database.
Create a chat using a firestore-backed api, handling form data, validating input, and creating document references to profiles and joint users within a chat collection.
Create and join chats by wiring user and chat references in Firebase Firestore and updating both documents. Use Firebase field value unions and API calls to manage the join flow.
Sort chats by separating joined and available chats for the currently authenticated user, by mapping each chat's joint users to user IDs and updating state via async dispatch.
Build a chat app by creating multiple chats and user avatars, then display sorted and available chats with filtering, using reducers and actions in Electron and React JS.
Restart the app state after logout by introducing a restart action that resets data and charts to empty defaults, ensuring smooth login and chat experience on slow networks.
Implement a join chat workflow in a react app by confirming the join, invoking the join-chat API with chat and user data, and dispatching updates to reflect the joined chat.
Implement real-time join functionality by dispatching join actions, handling join success, and updating the UI to remove joined chats from the available list.
Learn to implement real-time chat subscriptions in a React and Electron app by subscribing to a chat, handling incoming updates with a callback, and unsubscribing on exit.
Learn how to extract chat users by resolving user references to actual profiles, fetch snapshots asynchronously, and display usernames and avatars within chats.
Create a reducer to manage active chats and their joint users, dispatch actions to update state, store multiple chats by id, and access the active chat with selectors.
Display joined users from the active chat, map over them to render avatars and an online status indicator, and handle undefined chat data until the chat name loads.
Implement a subscriber function to monitor online status of chat users, subscribe to profiles, and update state via actions, handling joint users in an active chat.
Learn how to manage chat subscriptions by subscribing to user profiles and unsubscribing when leaving a chat, using a returned unsubscribe function and preserving subscription state across renders.
Learn to monitor user connection in a chat app by using Firebase Realtime Database's info/connected reference, handling value changes, snapshots, and dispatching connection status updates in React and Electron.
Learn to save a user online status to the database, update the status as online or offline with a timestamp, and reflect changes in the chat app UI.
Learn how to fix online status after logout by wrapping connection checks in the API to guard against undefined snapshots, ensuring accurate online/offline propagation and reliable login/logout behavior.
Explore displaying state changes by subscribing to user profiles, monitoring online and offline status in a chat app built with Electron and React JS, and updating the UI accordingly.
Improve chat user experience by displaying data only after load and showing loading indicators. Refactor chat functions as callbacks to boost performance and handle chat states and offline status updates.
Explore the core messaging feature of the Electron and React JS chat app by joining chats, exchanging real-time messages, and subscribing to updates via firestorm.
Learn to build a messenger component for a chat app using React, with a text area input, enter-to-send handling, local state management, and a send message workflow.
Learn to build a messenger component with a robust message object, including content and timestamp, and prevent empty messages by trimming whitespace, using Firebase timestamp utilities.
Develops a send message action that stores chat messages with a timestamp and user references in a messages collection. Guides building the API, message object, and UI publishing.
Implement sending messages and real-time chat updates by subscribing to the messages collection in Firestore, handling snapshot changes, and rendering live messages in your Electron and React JS app.
Subscribe to messages and display them by creating a messages reducer, wiring actions and selectors, and rendering the active chat’s message list from the state.
Extract messages with author by iterating messages, retrieving user snapshots for each message to display avatar and username, and optimize with a local cache to reduce repeated data fetches.
Learn how to register and manage message subscriptions in a chat app, preventing duplicate messages on reentry, while keeping subscriptions active and providing unsubscribe functionality.
Move the logged-in user's messages to the right side to improve chat readability, and conditionally render messages by sender while formatting timestamps as time-ago with moment.
Create a reference to the end of the message list and use scroll into view to show the latest chat message.
Explore how to clean up application state on logout by unsubscribing from chats, clearing messages and active chats, and resetting state to prevent outdated subscriptions.
Unsubscribe from chat messages by iterating over message subscriptions in the store during logout, unsubscribing each chat to prevent further messages and keep the state clean.
Learn to build a settings view in an Electron and React chat app, wiring inputs to update settings via actions and persist dark theme and notification preferences across sessions.
Explore building a settings reducer for an electron and react chat app, define initial state (theme, show notifications, plays sound), and connect it to settings view via store and selectors.
Store and update chat app settings in local storage using setItem and getItem, stringify objects, merge current settings, and persist changes under the app settings key.
Store and retrieve user settings from local storage and initialize the app state on load. Dispatch an initial settings action to preload from local storage and ensure persistence.
Build a local storage API with get and set helpers, refactor into a utils storage module, and apply it to manage settings and default state in the chat app.
Apply dark and light themes to a chat app by reading theme settings, conditionally changing background colors, fonts, and hover styles, and updating loading screen visuals.
Learn how to preserve and reset settings in an Electron and React chat app using a saveable state flag, and manage themes, logout, and notifications.
Troubleshoot connection issues in an Electron and React chat app by testing network toggles, adjusting index.html to allow dynamic Firebase URLs, and verifying WebSocket fallback behavior.
Explore building a cross-platform chat app with Electron and React, featuring splash screens, a menu with icons, and packaging into Windows, Linux, and Mac executables for production.
Create and customize the application menu in an electron project, integrate a template, and configure icons, display settings, accelerators, and submenu items for a chat app.
Learn to create and manage multiple windows in an Electron and React JS chat app. Open a second window, load its HTML content, and control focus with a menu.
Set up Electron app icons by creating an assets/images folder, importing SVG icons, and updating the main process to display a custom dock icon for the chat app.
Learn to create a tray icon in Electron, import icon assets, and build a customizable tray menu with icons and buttons for your chat app.
Learn to implement a splash screen in an electron and react app using a frameless splash window with a loading message; destroy it when the main window is ready.
Enhance the app splash screen by refining the splash HTML and CSS, centering content, adding a rotating logo animation, and tuning colors and fonts, plus building an executable for distribution.
Set up a production environment with webpack by merging common configurations and adding a production config. Build the app with a production script, inspect the build, and prepare an executable.
Reconfigure the production setup to build the chat app into cross-platform executables for Mac, Linux, and Windows. Install Electron Builder and test the signed production package.
Build and test a native Electron and React chat app by compiling executables, implementing login, chats, and real-time messaging with notifications and settings.
Initialize a new electron app with electron forge using the webpack plus TypeScript template, name it electron-chatgpt, and set up the main and renderer processes with React.
Discover how to implement and verify a content security policy in an Electron Forge chat app, wiring the policy into index.html via a webpack plugin and forge config.
Address security warnings by enforcing a self-only default-src meta tag and managing evals in development. Illustrate integrating react with typescript in electron forge and basic rendering of hello world.
Update your electron and react app by migrating to react 18's createRoot from react-dom/client, mounting to a div id app in App.tsx, and outlining a simple base layout.
Build a basic Electron and React chat app layout with a TSX home component, CSS, and a prompt UI that sends questions to GPT via the main and renderer processes.
Learn to capture text area input with React state by creating a prompt state, wiring an onChange handler to update it, and display the current value.
Explore handling submit in an Electron and React chat app by capturing textarea input in state, wiring onClick, clearing the prompt, and simulating sending to chatGPT.
Learn to implement a chat messages state in an Electron and React JS app. Build a messages array with text, id, and outer, then render it with map.
Define a TypeScript Message type with text, id, and author, where author can be human or AI, and type the messages state as an array of that Message.
simulate a chat response by delaying one second, appending a hard-coded AI message after a human question, and prepare to send prompts to a GPT model via the main process.
refactor a chat app by extracting the message item into its own component, type its props with a message type, pass the message data, and resolve typing errors.
Implement a typewriter effect for the chat app by progressively revealing the AI answer through a text state, useEffect, and a 50-millisecond timeout.
Fix the typewriter effect by initializing with the full message and slicing to reveal the AI response instantly, and wire the prompt from renderer to the main process for ChatGPT.
Expose the chat gpt api via a context bridge in preload.ts, letting the renderer call getCompletion in home.tsx and prepare for main-process communication, while fixing duplicate keys with math.random.
Define a global electron type in a TypeScript declaration file to expose the ChatGPT API's get completion function through the preload, enabling type-safe access in renderer processes.
Expose the prompt via the context bridge, send it from the renderer to the main process using IPC renderer on get completion, and handle the value in the main process.
Learn how to get a response from chat GPT by wiring the electron preload with invoke, awaiting a string result, and sending the answer back to the user interface.
Learn to prevent submitting empty messages in an electron and react chat app by trimming whitespace and checking length in home.tsx before sending.
Sign up for OpenAI, obtain API keys, and configure billing and usage limits. Install the OpenAI library, securely store keys, and test the API key in your app.
Explore chat model basics with ChatGPT explanations, test prompts in playground, and tune model settings like temperature and max tokens, while noting secure handling of secret keys.
Configure and call the OpenAI completion API in a React Electron app, tuning the text-davinci-003 model, prompt, temperature, and max tokens to fetch GPT responses and display loading states.
Handle errors in an Electron React app by wrapping OpenAI create completion API calls in a try-catch, returning a message or an optional error in the response.
Wrap the OpenAI create completion call in a try/catch and display the resulting error in home.tsx, using messages like 'Oops, something went wrong'.
Fix the main process error by removing the hard-coded throw and demonstrate generating prompts with an AI persona and a completion API for a React/Electron chat app.
Publish the chat app using Electron Forge to build an executable for your OS. npm run publish detects your OS and generates macOS arm64 or Windows exe.
Electron: Transform your web development skills into desktop app creation with Electron. This powerful framework streamlines the process of building native applications, utilizing familiar web technologies such as JavaScript, HTML, and CSS. By letting Electron handle the intricacies, you can focus on the core elements of your application.
React JS: Explore React, the library that makes interactive UI creation seamless. Design simple views for each state in your application, and watch as React efficiently updates and renders the appropriate components when your data changes.
Firebase: Unlock the potential of Firebase, a platform that provides analytics, databases, messaging, and crash reporting. Accelerate your development process and keep your focus on delivering a user-centric experience while Firebase manages the backend complexities.
Course Overview:
Electron Basics:
Gain a solid understanding of Electron concepts.
Explore the main and renderer processes.
Utilize React for UI design and Webpack for efficient source file bundling.
View Creation and Firestore Integration:
Develop multiple views (Home, Chat, Settings) with integrated routing.
Utilize Firestore queries for data manipulation.
Implement state management using the Redux architecture.
Authentication:
Create secure login and register forms.
Handle errors from Firestore.
Restrict application access to logged-in users.
Redux Middleware and Notifications:
Explore advanced Redux middleware concepts.
Implement a Notification feature for tracking user online/offline status changes
Chat Management:
Focus on creating and joining chats.
Display user online status in real-time.
Enhance the chat interface for a seamless user experience.
Messaging Features:
Add real-time messaging capabilities.
Enable users to write and send synchronized messages across all active clients.
Electron Environment Adjustments:
Fine-tune the Electron environment.
Customize the application menu, tray icon, and appearance.
Configure build options for Windows, Linux, and macOS.
Bonus Content:
Electron Forge App:
Initialize an app using Electron Forge, integrating React and Typescript.
ChatGPT Integration:
Gain insights into integrating ChatGPT into your application.
Embark on a comprehensive learning journey with hands-on projects, and elevate your development skills. Join us to build exciting applications and unlock the full potential of Electron, React, and Firebase. See you in the course!