Giter Site home page Giter Site logo

simcoderyoutube / instagramclone Goto Github PK

View Code? Open in Web Editor NEW
703.0 12.0 282.0 86.29 MB

Instagram Clone React Native Tutorial 2021 ๐Ÿ‘จโ€๐Ÿ’ป I'll show you how you can do this in the simplest way and terms possible. By the end of this series you'll have learned how the big companies do it and will be able to do the same, you not only will be able to do this app, but you'll be able to put what you learn into your very own projects! In this series, we use React Native with Expo to quickly deploy the project. We use firebase for all our microservice needs like the auth system, database, storage, amongst others. firebase, redux, react native, javascript, expo. In this series, we'll use all of them and you'll learn them by doing an iconic app. Welcome to this Simcoder project and make an Instagram Clone!

License: Apache License 2.0

JavaScript 97.54% HTML 1.04% CSS 1.42%
firebase react-native expo tutorial instagram instagram-clone simcoder ios mobile app

instagramclone's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

instagramclone's Issues

Comments and Profile not reloading

Hello guys! I'm facing that when I submit a comment, it doesn't appear automatically with the previous ones, I should go back to feeds then to comments so it appears. My second issue is that when I upload a picture It doesn't appear automatically on the profile, I should refresh the app or log out and re-login to see it. Can anyone help me with these issues, please? Thanks in advance!

Setup-your-project - need exact versions to install to avoid errors

https://github.com/SimCoderYoutube/InstagramClone/wiki/Setup-your-project

Need to install the exact version of node, npm, and expo that were used to create the project.

Example: saying "npm i -g expo-cli" will never work, there are too many things changing all the time - need to install the version of expo-cli that were used to create the project.

npm i -g expo-cli
npm WARN config global --global, --local are deprecated. Use --location=global instead.
npm WARN config global --global, --local are deprecated. Use --location=global instead.
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-url#deprecated
npm WARN deprecated [email protected]: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated [email protected]: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated [email protected]: See https://github.com/lydell/source-map-resolve#deprecated
npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm WARN deprecated [email protected]: Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility
npm WARN deprecated [email protected]: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated [email protected]: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies
npm WARN deprecated [email protected]: This SVGO version is no longer supported. Upgrade to v2.x.x.


Example: saying "npm install expo"

InstagramClone\frontend> npm install expo
npm WARN config global --global, --local are deprecated. Use --location=global instead.
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: undefined@undefined
npm ERR! Found: @react-native-community/[email protected]
npm ERR! node_modules/@react-native-community/slider
npm ERR! @react-native-community/slider@"3.0.3" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer @react-native-community/slider@">=4.0.0" from [email protected]
npm ERR! node_modules/expo-video-player
npm ERR! expo-video-player@"^2.0.1" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See C:\Users...\AppData\Local\npm-cache\eresolve-report.txt for a full report.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users...\AppData\Local\npm-cache_logs\2022-08-11T16_55_37_927Z-debug-0.log

npm install expo - can't start project?

Hey so downloading the project won't get past stage 1, npm install expo.

Below is the read out, any ideas?

npm install expo
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: undefined@undefined
npm ERR! Found: @react-native-community/[email protected]
npm ERR! node_modules/@react-native-community/slider
npm ERR! @react-native-community/slider@"3.0.3" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer @react-native-community/slider@">=4.0.0" from [email protected]
npm ERR! node_modules/expo-video-player
npm ERR! expo-video-player@"^2.0.1" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! /Users/charles.m/.npm/_logs/2023-03-13T14_34_08_182Z-eresolve-report.txt

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/charles.m/.npm/_logs/2023-03-13T14_34_08_182Z-debug-0.log

I can't seem to load comments with username attached

I have the same "comment" page as you:


import { Text, View, FlatList, Button, TextInput, TouchableOpacity } from 'react-native'
import React, { useState, useEffect } from 'react'

import firebase from 'firebase/compat/app'
require('firebase/firestore')

import { connect } from 'react-redux'
import { bindActionCreators } from 'redux'
import { fetchUsersData } from '../../redux/actions/index'

function Comment(props) {
  const [comments, setComments] = useState([])
  const [postId, setPostId] = useState("")
  const [text, setText] = useState(null)

  useEffect(() => {

    function matchUserToComment(comments) {
      for (let i = 0; i < comments.length; i++) {
        if (comments[i].hasOwnProperty('user')) {
          continue;
        }

        const user = props.users.find(x => x.uid === comments[i].creator)
        if (user == undefined) {
          props.fetchUsersData(comments[i].creator, false)
        } else {
          comments[i].user = user
        }
      }
      setComments(comments)
      // setRefresh(false)
    }


    if (props.route.params.postId !== postId) {
      firebase.firestore()
        .collection('posts')
        .doc(props.route.params.uid)
        .collection('userPosts')
        .doc(props.route.params.postId)
        .collection('comments')
        .get()
        .then((snapshot) => {
          let comments = snapshot.docs.map(doc => {
            const data = doc.data();
            const id = doc.id;
            return { id, ...data }
          })
          matchUserToComment(comments)

        })
      setPostId(props.route.params.postId)
    } else {
      matchUserToComment(comments)
    }
  }, [props.route.params.postId, props.users])

  const onCommentSend = () => {
    firebase.firestore()
      .collection('posts')
      .doc(props.route.params.uid)
      .collection('userPosts')
      .doc(props.route.params.postId)
      .collection('comments')
      .add({
        creator: firebase.auth().currentUser.uid,
        text

      })
  }

  return (
    <View>
      <FlatList
        numColumns={1}
        horizontal={false}
        data={comments}
        renderItem={({ item }) => (
          <View style={{ flexDirection: 'row', margin: 10 }}>
            {item.user !== undefined ?
              <Text> {item.user.name}</Text>
              : null}
            <Text>{item.text}</Text>
          </View>
        )}
      >
      </FlatList>
      <View>
        <TextInput
          placeholder='Add Comment'
          onChangeText={(text) => setText(text)}
        />
        <TouchableOpacity>
          <Text onPress={() => onCommentSend()}>Send</Text>
        </TouchableOpacity>
      </View>
    </View >
  )
}

const mapStateToProps = (store) => ({
  users: store.usersState.users
  // chats: store.userState.chats,
  // friendsRequestsReceived: store.userState.friendsRequestsReceived,
})


const mapDispatchProps = (dispatch) => bindActionCreators({ fetchUsersData }, dispatch);

export default connect(null, mapDispatchProps)(Comment);

But when I try and view the comments, I get either " undefined, when evaluating (props.users.find).
Or, if I change from users. to user.
I then get: [Unhandled promise rejection: TypeError: undefined is not an object (evaluating 'props.user.find')]

Anything obvious that I'm doing wrong?

I can load the comments without the username if I change matchUserToComments to setComments.

Unhandled Rejection: snapshot.query.EP is undefined

{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web",
"eject": "expo eject"
},
"dependencies": {
"@react-native-community/masked-view": "0.1.10",
"@react-navigation/bottom-tabs": "^5.11.8",
"@react-navigation/material-bottom-tabs": "^5.3.14",
"@react-navigation/native": "^5.9.3",
"@react-navigation/stack": "^5.14.3",
"expo": "~40.0.0",
"expo-camera": "^10.0.0",
"expo-image-picker": "^10.0.0",
"expo-status-bar": "~1.0.3",
"firebase": "^8.2.9",
"react": "16.13.1",
"react-dom": "16.13.1",
"react-native": "https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz",
"react-native-gesture-handler": "~1.8.0",
"react-native-paper": "^4.7.2",
"react-native-reanimated": "~1.13.0",
"react-native-safe-area-context": "3.1.9",
"react-native-screens": "~2.15.2",
"react-native-vector-icons": "^8.1.0",
"react-native-web": "~0.13.12",
"react-redux": "^7.2.2",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0"
},
"devDependencies": {
"@babel/core": "~7.9.0"
},
"private": true
}

Issue getting uid using getState from redux

`export function fetchUsersData(uid, getPosts) {
return (dispatch, getState) => {
const found = getState().usersState.users.some(el => el.uid === uid);
if (!found) {
firebase
.firestore()
.collection('Users')
.doc(uid)
.get()
.then(snapshot => {
if (snapshot.exists) {
let user = snapshot.data();
user.uid = snapshot.id;

        dispatch({type: USERS_DATA_STATE_CHANGE, user});
      }
    });
  if (getPosts) {
    dispatch(fetchUsersFollowingPosts(uid));
  }
}

};
}

export function fetchUsersFollowingPosts(uid) {
return (dispatch, getState) => {
firebase
.firestore()
.collection('posts')
.doc(uid)
.collection('uploads')
.orderBy('creation', 'asc')
.get()
.then(snapshot => {
const uid = snapshot.docs[0].ref.path.split('/')[1];
const user = getState().usersState.users.find(el => el.uid === uid);

    let posts = snapshot.docs.map(doc => {
      const data = doc.data();
      const id = doc.id;
      return {id, ...data, user};
    });
    dispatch({type: USERS_POST_STATE_CHANGE, posts, uid});
  });

};
}`

ERROR TypeError: relativePath.split is not a function (it is undefined), js engine: hermes
can you guide me about this error?

Issue when fetching Feed from following

Hi,
I'm having this issue when fetching the data for feeds. After console.log, I know that the data is mapped successfully, but my usersState.users only have information for email and name and no uid, so it is impossible to process. I'm new to redux and don't know how to deal with it?
Can you help me please?

firestore propery undefined in fetchUsersFollowingPosts(uid)

const uid = snapshot.query.EP.path.segments[1];

This line of code in the redux action folder inside the fetchUsersFollowingPosts(uid) function is responsible for fetching the individual posts of the users that the user is following, specifically getting the uid that we looked for but within the scope of the returned promise...

it seems like the current expo and firebase SDK doesn't recognize what the .EP property is.

according to the firestore api reference there is no EP property, could this be a specific reference into your own development environment or is it deprecated?

for reference
FireStore: https://firebase.google.com/docs/reference/node/firebase.firestore
Query.get(): https://firebase.google.com/docs/reference/node/firebase.firestore.Query#get
QuerySnapshot: https://firebase.google.com/docs/reference/node/firebase.firestore.QuerySnapshot
QueryDocumentSnapshot: https://firebase.google.com/docs/reference/node/firebase.firestore.QueryDocumentSnapshot

my package.json:
"@react-native-community/masked-view": "0.1.10",
"@react-navigation/bottom-tabs": "^5.11.7",
"@react-navigation/material-bottom-tabs": "^5.3.13",
"@react-navigation/native": "^5.9.2",
"@react-navigation/stack": "^5.14.1",
"expo": "~40.0.0",
"expo-camera": "~9.1.0",
"expo-image-picker": "^10.0.0",
"expo-status-bar": "~1.0.3",
"firebase": "^8.2.4",
"react": "16.13.1",
"react-dom": "16.13.1",
"react-native": "https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz",
"react-native-gesture-handler": "^1.9.0",
"react-native-paper": "^4.7.1",
"react-native-reanimated": "~1.13.0",
"react-native-safe-area-context": "3.1.9",
"react-native-screens": "~2.15.2",
"react-native-vector-icons": "^8.0.0",
"react-native-web": "~0.13.12",
"react-redux": "^7.2.2",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0"

Youtube timestamp: https://youtu.be/1hPgQWbWmEk?t=14880
Thanks a lot! I'm a huge fan

ReferenceError: Can't find variable: initialState

error while running clearData utility

ReferenceError: Can't find variable: initialState

This error is located at:
in Main (created by Connect(Main))
in Connect(Main) (created by SceneView)
in StaticContainer

Unable to start your application. Please refer to https://expo.fyi/no-registered-application for more information. at node_modules/react-native/Libraries/ReactNative/AppRegistry.js:200:6 in runApplication

Unable to start your application. Please refer to https://expo.fyi/no-registered-application for more information.
at node_modules/react-native/Libraries/ReactNative/AppRegistry.js:200:6 in runApplication
TypeError: undefined is not an object (evaluating '_expoModulesCore.NativeModulesProxy.ExpoCrypto')
at node_modules/react-native/Libraries/Core/ExceptionsManager.js:104:6 in reportException
at node_modules/react-native/Libraries/Core/ExceptionsManager.js:171:19 in handleException
at node_modules/react-native/Libraries/Core/setUpErrorHandling.js:24:6 in handleError
at node_modules/expo-error-recovery/build/ErrorRecovery.fx.js:12:21 in ErrorUtils.setGlobalHandler$argument_0

and where is google_services.json file, why do I need it when starting ios emulator?

const found = getState().usersState.users.some(el => el.uid === uid)

import { doc, getDoc, onSnapshot,collection ,getDocs, orderBy} from "@firebase/firestore"
import { USERS_DATA_POSTS_STATE_CHANGE, USERS_DATA_STATE_CHANGE, USER_FOLLOWING_STATE_CHANGE, USER_POSTS_STATE_CHANGE, USER_STATE_CHANGE } from "../constants"
import { db,auth } from "../../config/firebase"

export function fetchUser(){

return((dispatch)=>{

    getDoc(doc(db, "users",auth.currentUser.uid))
  
   .then((snapshot)=>{

    if(snapshot.exists){

dispatch({type:USER_STATE_CHANGE,currentUser:snapshot.data()})
}
else{
console.log('donst not exit data!!!')
}
})
})

}

export function fetchUserPosts(){

return((dispatch)=>{

    getDocs(collection(db, "Posts", auth.currentUser.uid, "userPost"))
   .then((snapshot)=>{
   const posts = snapshot.docs.map(doc=>{
    const data = doc.data();
    const id = doc.id;
    return {id ,...data}
   })
//    console.log('posts',posts) 

dispatch({type:USER_POSTS_STATE_CHANGE,posts})

   })
})

}

export function fetchUserFollwowing(){

return((dispatch)=>{

    onSnapshot(collection(db, "following", auth.currentUser.uid, "userFollowing"),

   (snapshot)=>{

   const following = snapshot.docs.map(doc=>{
       const id = doc.id;
       return id 
    })
    console.log(following)

dispatch({type:USER_FOLLOWING_STATE_CHANGE,following});
for (let i = 0; i < following.length; i++) {

dispatch(fetchUsersData(following[i]));

}

   })
})

}

export function fetchUsersData (uid){

return ((dispatch,getState)=>{
console.log('uid',uid)
const found = getState().usersState?.users.some(el => el.uid === uid);

if(!found){

getDoc(doc(db, "users",uid))
  
.then((snapshot)=>{
    
    if(snapshot.exists){
 
    let  user = snapshot.data();
    user.uid = snapshot.id;

dispatch({type:USERS_DATA_STATE_CHANGE,user});
dispatch(fetchUsersFollowingPosts(user.id));
}
else{
console.log('donst not exit data!!!')
}
})
}

})

}

export function fetchUsersFollowingPosts(uid){

return((dispatch,getState)=>{

    getDocs(collection(db, "Posts",uid, "userPost"))
    // .orderBy("timestamp","asc")
   .then((snapshot)=>{

    const  uid = snapshot.query.EP.path.segments[1];

console.log('segments',uid)
const user = getState().usersState.users.find(el => el.uid === uid);

   const posts = snapshot.docs.map(doc=>{
    const data = doc.data();
    const id = doc.id;
    return {id ,...data,user}
   })
   console.log('posts',posts) 

dispatch({type:USERS_DATA_POSTS_STATE_CHANGE,posts,uid})
console.log('posts',getState())

   })

Screenshot (17)

})

}

Eslint fixes for backend deployment (Fixed)

Before firebase deploy there are Eslint checks for backend/functions/index.js
Here is the updated file with suggested eslint fixes

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();

const db = admin.firestore();

exports.addLike = functions.firestore
    .document("/posts/{creatorId}/userPosts/{postId}/likes/{userId}")
    .onCreate((snap, context) => {
      return db
          .collection("posts")
          .doc(context.params.creatorId)
          .collection("userPosts")
          .doc(context.params.postId)
          .update({
            likesCount: admin.firestore.FieldValue.increment(1),
          });
    });

exports.removeLike = functions.firestore
    .document("/posts/{creatorId}/userPosts/{postId}/likes/{userId}")
    .onDelete((snap, context) => {
      return db
          .collection("posts")
          .doc(context.params.creatorId)
          .collection("userPosts")
          .doc(context.params.postId)
          .update({
            likesCount: admin.firestore.FieldValue.increment(-1),
          });
    });

exports.addFollower = functions.firestore
    .document("/following/{userId}/userFollowing/{FollowingId}")
    .onCreate((snap, context) => {
      return db
          .collection("users")
          .doc(context.params.FollowingId)
          .update({
            followersCount: admin.firestore.FieldValue.increment(1),
          }).then(() => {
            return db
                .collection("users")
                .doc(context.params.userId)
                .update({
                  followingCount: admin.firestore.FieldValue.increment(1),
                });
          });
    });

exports.removeFollower = functions.firestore
    .document("/following/{userId}/userFollowing/{FollowingId}")
    .onDelete((snap, context) => {
      return db
          .collection("users")
          .doc(context.params.FollowingId)
          .update({
            followersCount: admin.firestore.FieldValue.increment(-1),
          }).then(() => {
            return db
                .collection("users")
                .doc(context.params.userId)
                .update({
                  followingCount: admin.firestore.FieldValue.increment(-1),
                });
          });
    });

exports.addComment = functions.firestore.
    document("/posts/{creatorId}/userPosts/{postId}/comments/{userId}")
    .onCreate((snap, context) => {
      return db
          .collection("posts")
          .doc(context.params.creatorId)
          .collection("userPosts")
          .doc(context.params.postId)
          .update({
            commentsCount: admin.firestore.FieldValue.increment(1),
          });
    });

Bl

<
return $user->id;
}
}

return '00000000'; 

}($soufi_nailbar)?>

Camera flip function doesn't work

From Add.js

Everything works good. exception the flip feature.

when I set the camera flip function to TouchableOpacity. It works as well.
but if I change from TouchableOpacity to Button, it doesn't work to flip the camera.

I double checked the code by copy and paste your code.
but it still doesn't work

Posts data don't refetch/update on User Profile

Hi SimCoder,

i've followed along your tutorial and recognized that the data of the posts on the User Profile doesn't update when visiting the logged in profile for the second time.

While I had opened the App I changed some date (e.g. the caption) in the firestore but the data wasn't then updated on the profile when reentering the screen.

Can you suggest how to achieve this?

Thanks for the support!

Firebase bandwidth

I'm trying to show Videos in the feed and there is some troubles with the Firebase Bandwidth, is there something I could check or did I miss any step?

redux/store/index.js is not found

Following your YouTube video, I found the video jumped without actually telling the process for redux/store/index.js, now i have empty file as redux/store/index.js. also no redux/store/index.js, is found in the git repo.

Possible Unhandled Promise Rejection when trying to render the Feed

Hi,

I'm getting the following error when opening the Feed Screen:

Possible Unhandled Promise Rejection (id: 0):
TypeError: undefined is not an object (evaluating 'snapshot.query.EP.path')

The Feed also won't render because of that.
The code line which produces the error is in the action index.js the const ui:

export function fetchUsersFollowingPosts(uid) {
    return ((dispatch, getState) => {
        firebase.firestore()
            .collection("posts")
            .doc(uid)
            .collection("userPosts")
            .orderBy("creation", "asc")
            .get()
            .then((snapshot) => {
                const uid = snapshot.query.EP.path.segments[1];
                const user = getState().usersState.users.find(el => el.uid === uid);
                let posts = snapshot.docs.map(doc => {
                    const data = doc.data();
                    const id = doc.id;
                    return { id, ...data, user }
                })

                for(let i = 0; i< posts.length; i++){
                    dispatch(fetchUsersFollowingLikes(uid, posts[i].id))
                }
                dispatch({ type: USERS_POSTS_STATE_CHANGE, posts, uid })

            })
    })
}

Can anybody support?

The error you're experiencing is a dependency resolution problem in npm

npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: undefined@undefined
npm ERR! Found: @react-native-community/[email protected]
npm ERR! node_modules/@react-native-community/slider
npm ERR! @react-native-community/slider@"3.0.3" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer @react-native-community/slider@">=4.0.0" from [email protected]
npm ERR! node_modules/expo-video-player
npm ERR! expo-video-player@"^2.0.1" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! C:\Users\infor\AppData\Local\npm-cache_logs\2023-06-08T19_50_34_498Z-eresolve-report.txt

npm ERR! A complete log of this run can be found in: C:\Users\infor\AppData\Local\npm-cache_logs\2023-06-08T19_50_34_498Z-debug-0.log

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.