https://github.com/singh1aryan/complete-firebase-guide
Learn firebase through this introductory guide and free resources mentioned. Super easy and fast.
https://github.com/singh1aryan/complete-firebase-guide
firebase firebase-auth firebase-database firebase-realtime-database firestore supabase supabase-auth supabase-js
Last synced: 4 months ago
JSON representation
Learn firebase through this introductory guide and free resources mentioned. Super easy and fast.
- Host: GitHub
- URL: https://github.com/singh1aryan/complete-firebase-guide
- Owner: singh1aryan
- Created: 2022-12-05T08:38:00.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-12-05T08:38:16.000Z (over 3 years ago)
- Last Synced: 2025-09-13T15:27:16.003Z (10 months ago)
- Topics: firebase, firebase-auth, firebase-database, firebase-realtime-database, firestore, supabase, supabase-auth, supabase-js
- Homepage: https://youtube.com/blocktrain
- Size: 5.86 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Complete Firebase and Supabase Guide
## Introduction to firebase
Firebase is a platform for building mobile and web applications. It provides a variety of services and tools that help developers to quickly and easily build, deploy, and manage their applications.
Some of the key features of Firebase include:
- Real-time database: A cloud-hosted NoSQL database that allows developers to store and sync data across multiple clients in real-time.
- Authentication: A set of tools and libraries that enable developers to easily add user authentication to their applications.
- Hosting: A hosting platform that allows developers to deploy their web applications and static files to the cloud with a single command.
- Storage: A cloud-based object storage service that enables developers to store and serve user-generated content, such as photos, videos, and files.
- Functions: A serverless platform that allows developers to run their code in the cloud without having to worry about managing servers or infrastructure.
- Analytics: A comprehensive analytics platform that enables developers to track and measure the usage and performance of their applications.
Firebase is a popular platform among developers because it provides a complete set of tools and services that make it easy to build and manage modern applications. It is also highly scalable and offers a generous free tier, which makes it an attractive option for small teams and startups.
Example with HTML
Here is an example of how to integrate Firebase with a HTML web application:
First, include the Firebase JavaScript library in your HTML page:
```jsx
```
Then, initialize the Firebase app and set the configuration values for your project:
```jsx
// Your web app's Firebase configuration
var firebaseConfig = {
apiKey: "AIzaSyDpvf4B_ZnpJFHhFzveW8Kvj-FyMWCpX9k",
authDomain: "my-app.firebaseapp.com",
databaseURL: "https://my-app.firebaseio.com",
projectId: "my-app",
storageBucket: "my-app.appspot.com",
messagingSenderId: "1234567890",
appId: "1:1234567890:web:abcdefghijklmnopqrstuvwxyz"
};
// Initialize the Firebase app
firebase.initializeApp(firebaseConfig);
```
After the app is initialized, you can access the Firebase services and use them in your HTML page. For example, to use the Firebase Realtime Database to read and write data:
```jsx
// Get a reference to the Realtime Database
const database = firebase.database();
// Get a reference to the "users" collection
const usersRef = database.ref('users');
// Read data from the "users" collection
usersRef.on('value', snapshot => {
// Do something with the data
});
// Write data to the "users" collection
usersRef.push({
name: 'John Doe',
age: 30,
});
```
In this example, the Firebase Realtime Database is used to read and write data to a collection named **`users`**. The **`on`** method is used to listen for changes to the data, and the **`push`** method is used to add new data to the collection.
This is just a simple example of how to integrate Firebase with a HTML web application. You can use other Firebase services, such as authentication and storage, in a similar way.
## Integration with React
Here is an example of how to integrate Firebase with a React web application:
First, install the Firebase JavaScript library using npm:
```bash
npm install firebase
```
Then, import the Firebase library and initialize the Firebase app in your React component:
```jsx
import firebase from 'firebase';
// Your web app's Firebase configuration
const firebaseConfig = {
apiKey: "AIzaSyDpvf4B_ZnpJFHhFzveW8Kvj-FyMWCpX9k",
authDomain: "my-app.firebaseapp.com",
databaseURL: "https://my-app.firebaseio.com",
projectId: "my-app",
storageBucket: "my-app.appspot.com",
messagingSenderId: "1234567890",
appId: "1:1234567890:web:abcdefghijklmnopqrstuvwxyz"
};
// Initialize the Firebase app
firebase.initializeApp(firebaseConfig);
function MyComponent() {
// Use the Firebase services in your component
}
```
After the app is initialized, you can access the Firebase services and use them in your React component. For example, to use the Firebase Realtime Database to read and write data:
```jsx
class MyComponent extends React.Component {
// define the initial state of the component
state = {
users: [],
name: '',
age: '',
};
// get a reference to the Realtime Database when the component is mounted
componentDidMount() {
// get a reference to the Realtime Database
const database = firebase.database();
// get a reference to the "users" collection
const usersRef = database.ref('users');
// read data from the "users" collection
usersRef.on('value', snapshot => {
// update the state with the data from the "users" collection
this.setState({ users: snapshot.val() });
});
}
// handle changes to the "name" and "age" input fields
handleChange = event => {
// update the state with the new values of the input fields
this.setState({ [event.target.name]: event.target.value });
};
// handle the submission of the form
handleSubmit = event => {
event.preventDefault();
// get the values of the "name" and "age" input fields
const { name, age } = this.state;
// get a reference to the Realtime Database
const database = firebase.database();
// get a reference to the "users" collection
const usersRef = database.ref('users');
// write the data to the "users" collection
usersRef.push({ name, age });
// reset the form
this.setState({ name: '', age: '' });
};
render() {
// destructure the state
const { users, name, age } = this.state;
return (
Name:
Age:
Submit
);
}
}
```
## Authentication with Firebase
Here is an example of how to implement user authentication using Firebase in a React web application:
First, enable the authentication methods you want to use in the Firebase Console. For example, if you want to enable email/password authentication, go to the "Authentication" section in the Firebase Console and click on the "Sign-in method" tab. Then, enable the "Email/password" provider and save your changes.
Then, import the Firebase authentication library in your React component:
```bash
import firebase from 'firebase/app';
import 'firebase/auth';
```
Next, define the initial state of the component and add a reference to the Firebase authentication instance:
```jsx
class MyComponent extends React.Component {
// define the initial state of the component
state = {
user: null,
error: null,
};
// add a reference to the Firebase authentication instance
auth = firebase.auth();
// ...
}
```
After that, you can use the Firebase authentication methods to sign in and out users and manage their sessions. For example, to sign in a user using their email and password:
```jsx
class MyComponent extends React.Component {
// ...
// handle the submission of the sign in form
handleSignIn = event => {
event.preventDefault();
// get the values of the email and password input fields
const formData = new FormData(event.target);
const email = formData.get('email');
const password = formData.get('password');
// sign in the user using the email and password
this.auth
.signInWithEmailAndPassword(email, password)
.then(user => {
// update the state with the signed in user
this.setState({ user });
})
.catch(error => {
// update the state with the error
this.setState({ error });
});
};
// ...
}
```
In this example, the **`signInWithEmailAndPassword`** method is used to sign in the user using the email and password provided in the form. If the sign in is successful, the user object is added to the component state. If there is an error, it is also added to the component state.
You can also use other Firebase authentication methods, such as **`createUserWithEmailAndPassword`** to create new user accounts, **`signOut`** to sign out the current user, and **`onAuthStateChanged`** to listen for changes to the authentication state.
Here is an example of how to use these methods to implement a complete authentication flow in a React component:
```jsx
class MyComponent extends React.Component {
// define the initial state of the component
state = {
user: null,
error: null,
};
// add a reference to the Firebase authentication instance
auth = firebase.auth();
// listen for changes to the authentication state when the component is mounted
componentDidMount() {
this.auth.onAuthStateChanged(user => {
// update the state with the current user
this.setState({ user });
});
}
// handle the submission of the sign in form
```
## Things you can do
- Realtime Database: a cloud-hosted NoSQL database that allows you to store and sync data across multiple devices in realtime.
- Cloud Firestore: a scalable, cloud-hosted NoSQL document database that allows you to store and query data.
- Cloud Functions: a serverless platform that allows you to run your code in response to events and automatically scale to handle traffic.
- Authentication: a set of security and user management features that allow you to authenticate users using email and password, social media accounts, phone numbers, and more.
- Cloud Storage: a scalable, secure object storage service that allows you to store and serve files, such as images, videos, and audio.
- Hosting: a static web hosting platform that allows you to deploy and serve your web apps.
- Crashlytics: a realtime crash reporting tool that helps you track, prioritize, and fix stability issues in your app.
- Performance Monitoring: a performance analysis tool that allows you to measure the performance and stability of your app.
- Test Lab: a cloud-based testing platform that allows you to test your app on real devices and simulate a variety of conditions.
- App Distribution: a tool that allows you to distribute your app to testers and stakeholders for testing and feedback.
- Remote Config: a tool that allows you to change the behavior and appearance of your app without deploying a new version.
- Dynamic Links: a tool that allows you to create deep links that work across different app platforms and versions.
- Predictions: a machine learning tool that allows you to make predictions about user behavior and provide personalized experiences.
- A/B Testing: a tool that allows you to test different versions of your app and measure their performance.
## Predictions with firebase
To use Firebase for predictions, you need to enable the "Firebase Predictions" feature in the Firebase Console. To do this, go to the "Grow" section in the Firebase Console and click on the "Predictions" card. Then, click on the "Try Predictions" button and follow the on-screen instructions to enable the feature.
Once the feature is enabled, you can use the **`Predictions`** class in the Firebase JavaScript SDK to make predictions about user behavior. For example, you can use the **`Predictions.createUserEngagementPrediction`** method to predict which users are likely to engage with your app in the future.
Here is an example of how to use this method in a React component:
```jsx
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/predictions';
class MyComponent extends React.Component {
// add a reference to the Firebase predictions instance
predictions = firebase.predictions();
// handle the submission of the form
handleSubmit = event => {
event.preventDefault();
// get the user ID
const userId = firebase.auth().currentUser.uid;
// create a prediction for the user
this.predictions
.createUserEngagementPrediction(userId)
.then(prediction => {
// get the probability that the user will engage with the app
const engagementProbability = prediction.engagement;
// show a message to the user based on the probability
if (engagementProbability > 0.5) {
alert('You are likely to engage with the app in the future.');
} else {
alert('You are not likely to engage with the app in the future.');
}
})
.catch(error => {
// handle the error
console.error(error);
});
};
render() {
return (
Predict Engagement
);
}
}
```
In this example, the **`createUserEngagementPrediction`** method is used to create a prediction for the current user. This method returns a **`Prediction`** object that contains the probabilities of different events happening, such as the user opening the app, making a purchase, or subscribing to a service.
You can use these probabilities to make decisions and provide personalized experiences to the user. For example, you can use the engagement probability to show a personalized message to the user or offer them a discount.
## Introduction to Supabase
Supabase is an open-source alternative to Firebase that provides a set of tools and services for building and deploying web and mobile applications. It includes features such as a realtime database, authentication, storage, hosting, and more.
One of the key differences between Supabase and Firebase is that Supabase is built on top of open-source technologies, such as PostgreSQL, GraphQL, and React, while Firebase uses proprietary technologies. This means that you can use Supabase with any programming language or framework that supports these technologies, and you have more control and flexibility over the design and implementation of your app.
Another difference is that Supabase provides a set of APIs and libraries that allow you to interact with the underlying database and other services using familiar SQL and REST commands, while Firebase uses a proprietary API and query language. This means that you can use your existing SQL skills and tools to work with Supabase, and you can migrate your data and code to other databases and services more easily.
Overall, Supabase provides a more open, scalable, and extensible platform for building and deploying web and mobile applications. If you are looking for an alternative to Firebase that is based on open-source technologies and provides more control and flexibility, you may want to consider using Supabase.
## Connect Supabase to an HTML app
To connect Supabase to an HTML app, you need to first create a project and add a database in the Supabase Console. To do this, go to the Supabase Console and sign in or sign up for an account. Then, click on the "Create project" button and follow the on-screen instructions to create a new project and add a database.
Once your project is set up, you need to install the Supabase client library in your HTML app using npm:
```bash
npm install @supabase/supabase-js
```
Then, you can use the **`supabase`** global object to connect to your Supabase project and authenticate your app. For example, you can use the **`auth.anonymous`** method to sign in anonymously:
```jsx
// connect to your Supabase project and sign in anonymously
const supabase = supabaseUrl('https://my-project.supabase.co').auth.anonymous();
```
Once you are signed in, you can use the **`supabase.from`** method to create a query builder that allows you to interact with your database using SQL commands. For example, you can use the **`.select`** method to query data from a table:
```jsx
// create a query builder and select data from a table
const query = supabase.from('users').select('*');
// execute the query and print the result
query.then(result => {
console.log(result);
});
```
In this example, the **`from`** method is used to create a query builder for the **`users`** table, and the **`select`** method is used to specify the columns to be selected. The **`then`** method is used to execute the query and print the result.
You can also use the **`insert`**, **`update`**, and **`delete`** methods to modify data in the database, and the **`where`**, **`orderBy`**, and **`limit`** methods to filter and sort the results. You can learn more about the available methods and options in the Supabase documentation.
Overall, using Supabase with an HTML app is similar to using any other database and API service. You can use the Supabase client library and SQL commands to connect to your project, authenticate your app, query and modify data, and more.
## Connect Supabase to a React app
To connect Supabase to a React app, you need to first create a project and add a database in the Supabase Console. To do this, go to the Supabase Console and sign in or sign up for an account. Then, click on the "Create project" button and follow the on-screen instructions to create a new project and add a database.
Once your project is set up, you need to install the Supabase client library in your React app using npm:
```
npm install @supabase/supabase-js
```
Then, you can use the **`supabase`** global object to connect to your Supabase project and authenticate your app in the **`useEffect`** hook. For example, you can use the **`auth.anonymous`** method to sign in anonymously:
```jsx
import { useEffect } from 'react';
import supabase from '@supabase/supabase-js';
function App() {
useEffect(() => {
// connect to your Supabase project and sign in anonymously
supabaseUrl('https://my-project.supabase.co').auth.anonymous();
}, []);
return (
// your app code here
);
}
```
Once you are signed in, you can use the **`supabase.from`** method to create a query builder that allows you to interact with your database using SQL commands. For example, you can use the **`.select`** method to query data from a table:
```jsx
import { useEffect, useState } from 'react';
import supabase from '@supabase/supabase-js';
function App() {
const [users, setUsers] = useState([]);
useEffect(() => {
// create a query builder and select data from a table
const query = supabase.from('users').select('*');
// execute the query and update the state
query.then(result => {
setUsers(result.rows);
});
}, []);
return (
- {user.name}
{users.map(user => (
))}
);
}
```
In this example, the **`useState`** hook is used to create a state variable that holds the list of users, and the **`useEffect`** hook is used to execute the query and update the state when the component is mounted. The **`from`** method is used to create a query builder for the **`users`** table, and the **`select`** method is used to specify the columns to be selected. The **`then`** method is used to execute the query and update the state with the result.
You can also use the **`insert`**, **`update`**, and **`delete`** methods to modify data in the database, and the **`where`**, **`orderBy`**, and **`limit`** methods to filter and sort the results. You can learn more about the available methods and options in the Supabase documentation.
Overall, using Supabase with a React app is similar to using any other database and API service. You can use the Supabase client library and SQL commands to connect to your project, authenticate your app, query and modify data, and more.
## Resources
1. Firebase in a Weekend: Android by Google Developers
**[https://www.youtube.com/watch?v=2Vf1D-rUMwE](https://www.youtube.com/watch?v=2Vf1D-rUMwE)**
2. Firebase Crash Course - Full App Tutorial for Beginners by Traversy Media
**[https://www.youtube.com/watch?v=JlGcDZR0YjQ](https://www.youtube.com/watch?v=JlGcDZR0YjQ)**
3. Learn Firebase in 4 Hours by LearnCode.academy
**[https://www.youtube.com/watch?v=noB98K6A0TY](https://www.youtube.com/watch?v=noB98K6A0TY)**
4. Firebase for Web Developers by Fireship
**[https://www.youtube.com/watch?v=YnY8QHj9KZQ](https://www.youtube.com/watch?v=YnY8QHj9KZQ)**
5. Firebase & Firestore Crash Course by Net Ninja
**[https://www.youtube.com/watch?v=W9S4Z3qn3vE](https://www.youtube.com/watch?v=W9S4Z3qn3vE)**