Coder Social home page Coder Social logo

Unable to access database user from my local server in the remote server: LOG {"ACTIVITY_NULL": 4, "PERMISSION_DENIED": 1, "POSITION_UNAVAILABLE": 2, "TIMEOUT": 3, "code": 3, "message": "Location request timed out"} about amplify-js HOT 14 OPEN

elkee2003 avatar elkee2003 commented on June 12, 2024
Unable to access database user from my local server in the remote server: LOG {"ACTIVITY_NULL": 4, "PERMISSION_DENIED": 1, "POSITION_UNAVAILABLE": 2, "TIMEOUT": 3, "code": 3, "message": "Location request timed out"}

from amplify-js.

Comments (14)

chrisbonifacio avatar chrisbonifacio commented on June 12, 2024 1

Hi @elkee2003, thank you for sharing your schema. We will try to reproduce the issue on our end and report back with findings soon.

from amplify-js.

cwomack avatar cwomack commented on June 12, 2024

Hello, @elkee2003 👋. I've got quite a few questions for you on this issue to see if we can figure out what's going on and unblock you. I'm not exactly sure what is failing here, so can you help break down/clarify the following:

  • What response are you getting when you call getCurrentUser()`? Is it throwing an error or can you log the user returned?
  • Have you made any changes that potentially haven't been pushed yet via amplify push command?
  • Where is this error coming from? LOG {"ACTIVITY_NULL": 4, "PERMISSION_DENIED": 1, "POSITION_UNAVAILABLE": 2, "TIMEOUT": 3, "code": 3, "message": "Location request timed out"}
  • Can you provide a little more details on the problem described here? "I am unable to access the dbuser, sometimes if, it shows and I update it from my local server, it doesn't show in the remote server (amplify studio)."

Any additional and relevant areas where you can include more outputs from the console logs (specifically the DataStore operations) would be helpful as well. Not sure if there's a minimal sample repo that you can provide as well, but if you have a more basic example without all the commented out code that would be great!

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

Hello, @elkee2003 👋. I've got quite a few questions for you on this issue to see if we can figure out what's going on and unblock you. I'm not exactly sure what is failing here, so can you help break down/clarify the following:

  • What response are you getting when you call getCurrentUser()`? Is it throwing an error or can you log the user returned?
  • Have you made any changes that potentially haven't been pushed yet via amplify push command?
  • Where is this error coming from? LOG {"ACTIVITY_NULL": 4, "PERMISSION_DENIED": 1, "POSITION_UNAVAILABLE": 2, "TIMEOUT": 3, "code": 3, "message": "Location request timed out"}
  • Can you provide a little more details on the problem described here? "I am unable to access the dbuser, sometimes if, it shows and I update it from my local server, it doesn't show in the remote server (amplify studio)."

Any additional and relevant areas where you can include more outputs from the console logs (specifically the DataStore operations) would be helpful as well. Not sure if there's a minimal sample repo that you can provide as well, but if you have a more basic example without all the commented out code that would be great!

  • My getCurrentUser works perfectly. I can always see the sub when I console.log it. My issue is with Datastore.

  • I thought it syncs with my appsync automatically ( I thought I did not need to do amplify push everytime I make changes). Why I did amplify push in the first place was because, when I delete data from my AppSync (remote server) it doesn't get deleted in my local server (my computer). This is one issue I have been having.

  • Where the error of LOG {"ACTIVITY_NULL": 4, "PERMISSION_DENIED": 1, "POSITION_UNAVAILABLE": 2, "TIMEOUT": 3, "code": 3, "message": "Location request timed out"} is coming from, I have no idea. It's just a new error that popped up.

  • Initially, if I create a user, I can console.log the database user (dbUser). However, if I try to update the user, or access the user after that, in the console.log the result will be null. I have tried to do datastore.clear() to clear all the data in datastore, and start afresh, but to no avail. Each time I initially create a user I see it, but if I try to access that user to do something else, or I update it I get null.

  • Sometimes, I get the error: [WARN] 33:53.414 DataStore - subscriptionError Connection failed: {"errors":[{"message":"Validation error of type FieldUndefined: Field '_version'

  • This is my repo: https://github.com/elkee2003/Atua2024.git
    You will see where I have tried to catch the error, it is not catching any error. but at the same time, it is not showing database user (it is showing my sub though).

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

Hello, @elkee2003 👋. I've got quite a few questions for you on this issue to see if we can figure out what's going on and unblock you. I'm not exactly sure what is failing here, so can you help break down/clarify the following:

  • What response are you getting when you call getCurrentUser()`? Is it throwing an error or can you log the user returned?
  • Have you made any changes that potentially haven't been pushed yet via amplify push command?
  • Where is this error coming from? LOG {"ACTIVITY_NULL": 4, "PERMISSION_DENIED": 1, "POSITION_UNAVAILABLE": 2, "TIMEOUT": 3, "code": 3, "message": "Location request timed out"}
  • Can you provide a little more details on the problem described here? "I am unable to access the dbuser, sometimes if, it shows and I update it from my local server, it doesn't show in the remote server (amplify studio)."

Any additional and relevant areas where you can include more outputs from the console logs (specifically the DataStore operations) would be helpful as well. Not sure if there's a minimal sample repo that you can provide as well, but if you have a more basic example without all the commented out code that would be great!

Hello, please is there a solution to my problem

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

Please I need help

from amplify-js.

chrisbonifacio avatar chrisbonifacio commented on June 12, 2024

Hi @elkee2003 can you confirm that you have Conflict Detection enabled on your API? If you don't, that would explain the subscription error. DataStore expects specific fields to exist on the schema such as _version, _lastChangedAt, and _deleted which are automatically added if Conflict Detection is enabled when compiling/deploying the schema.

Looking at the logic you have to create and update a user, it seems to make sense and should work even if there is a misconfiguration as I mentioned above. To better support you, can you please explain the use case and exactly what you are trying to do so that we can provide a working sample?

It seems you are trying to create a context/provider where components can access a user record stored in state. Have you checked if that record is persisting to DynamoDB when saving? You can check the network activity for the mutation response or query for the record in the DynamoDB console's Items explorer.
Also, are you able to query for the record by the sub or even id separate from the context/provider pattern?

Lastly, if you want to sign in/out and keep the state in sync with the auth status of the user, you should use the Hub utility to listen for auth events and clear your auth state and/or local database in response to auth events.

https://docs.amplify.aws/react/build-a-backend/utilities/hub/

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

Hi @elkee2003 can you confirm that you have Conflict Detection enabled on your API? If you don't, that would explain the subscription error. DataStore expects specific fields to exist on the schema such as _version, _lastChangedAt, and _deleted which are automatically added if Conflict Detection is enabled when compiling/deploying the schema.

Looking at the logic you have to create and update a user, it seems to make sense and should work even if there is a misconfiguration as I mentioned above. To better support you, can you please explain the use case and exactly what you are trying to do so that we can provide a working sample?

It seems you are trying to create a context/provider where components can access a user record stored in state. Have you checked if that record is persisting to DynamoDB when saving? You can check the network activity for the mutation response or query for the record in the DynamoDB console's Items explorer. Also, are you able to query for the record by the sub or even id separate from the context/provider pattern?

Lastly, if you want to sign in/out and keep the state in sync with the auth status of the user, you should use the Hub utility to listen for auth events and clear your auth state and/or local database in response to auth events.

https://docs.amplify.aws/react/build-a-backend/utilities/hub/

The conflict detection is enabled, as seen in the screenshot:
Screenshot (89)

I have a question: What should I use as the conflict resolution strategy? Automerge or Optimistic Concurrency:
Screenshot (90)

What I want to do is to simply create a user and update a user, the only the difference is that I access the authenticated user in AuthContext and the database user, so that I will be able to access them everywhere I want in my application. However, I am unable to access the database user, although I can access the authenticated user and even the sub of the authenticated user anywhere and anytime in my application.

I am trying to create a context provider, where components can access the a user's record stored in state. The issue is, even if i can see the dbuser that I have created in appsync (remote server), in vs code, it still shows that the dbuser is null.

This is the evidence:
In this screenshot you can clearly see a dbuser:
Screenshot (91)

In this other screenshot, you can see in my code that I am trying to access the user field at an index of 0 with setDbUser, which accesses it comfortably as seen in my console. However, I cannot access dbUser after console.logging it, as also seen in my console that dbUser is null
Screenshot (92)

I can see the records in DynamoDb:
Screenshot (94)
Screenshot (95)

I plead that you help me find a solution to this, even if it means us video calling and working on it at the same time, or I share my screen with you so you can have a better understanding of what I am facing. I have been having issues with aws amplify for more than a year now, especially with datastore. Thank you as you look into my problem.

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

Hi @elkee2003 can you confirm that you have Conflict Detection enabled on your API? If you don't, that would explain the subscription error. DataStore expects specific fields to exist on the schema such as _version, _lastChangedAt, and _deleted which are automatically added if Conflict Detection is enabled when compiling/deploying the schema.

Looking at the logic you have to create and update a user, it seems to make sense and should work even if there is a misconfiguration as I mentioned above. To better support you, can you please explain the use case and exactly what you are trying to do so that we can provide a working sample?

It seems you are trying to create a context/provider where components can access a user record stored in state. Have you checked if that record is persisting to DynamoDB when saving? You can check the network activity for the mutation response or query for the record in the DynamoDB console's Items explorer.
Also, are you able to query for the record by the sub or even id separate from the context/provider pattern?

Lastly, if you want to sign in/out and keep the state in sync with the auth status of the user, you should use the Hub utility to listen for auth events and clear your auth state and/or local database in response to auth events.

https://docs.amplify.aws/react/build-a-backend/utilities/hub/

Hello good day, just a reminder that I'm still waiting

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

Hi @elkee2003 can you confirm that you have Conflict Detection enabled on your API? If you don't, that would explain the subscription error. DataStore expects specific fields to exist on the schema such as _version, _lastChangedAt, and _deleted which are automatically added if Conflict Detection is enabled when compiling/deploying the schema.

Looking at the logic you have to create and update a user, it seems to make sense and should work even if there is a misconfiguration as I mentioned above. To better support you, can you please explain the use case and exactly what you are trying to do so that we can provide a working sample?

It seems you are trying to create a context/provider where components can access a user record stored in state. Have you checked if that record is persisting to DynamoDB when saving? You can check the network activity for the mutation response or query for the record in the DynamoDB console's Items explorer.
Also, are you able to query for the record by the sub or even id separate from the context/provider pattern?

Lastly, if you want to sign in/out and keep the state in sync with the auth status of the user, you should use the Hub utility to listen for auth events and clear your auth state and/or local database in response to auth events.

https://docs.amplify.aws/react/build-a-backend/utilities/hub/

Hello good day, just a reminder that I'm still waiting

Please I am still waiting for a response

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

Hi @elkee2003 can you confirm that you have Conflict Detection enabled on your API? If you don't, that would explain the subscription error. DataStore expects specific fields to exist on the schema such as _version, _lastChangedAt, and _deleted which are automatically added if Conflict Detection is enabled when compiling/deploying the schema.

Looking at the logic you have to create and update a user, it seems to make sense and should work even if there is a misconfiguration as I mentioned above. To better support you, can you please explain the use case and exactly what you are trying to do so that we can provide a working sample?

It seems you are trying to create a context/provider where components can access a user record stored in state. Have you checked if that record is persisting to DynamoDB when saving? You can check the network activity for the mutation response or query for the record in the DynamoDB console's Items explorer.
Also, are you able to query for the record by the sub or even id separate from the context/provider pattern?

Lastly, if you want to sign in/out and keep the state in sync with the auth status of the user, you should use the Hub utility to listen for auth events and clear your auth state and/or local database in response to auth events.

https://docs.amplify.aws/react/build-a-backend/utilities/hub/

Hello just a kind reminder that I still await a response

from amplify-js.

renebrandel avatar renebrandel commented on June 12, 2024

@elkee2003 - can you provide your GraphQL schema? I suspect there's two potential issues 1/ the authorization rules aren't configured in a way that'll make the data accessible. 2/ the "query" call is async to the sync process, so there's a potential for a race condition even if the data has been synced. (I also recommend you to call DataStore.clear() and stop/start.

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

@elkee2003 - can you provide your GraphQL schema? I suspect there's two potential issues 1/ the authorization rules aren't configured in a way that'll make the data accessible. 2/ the "query" call is async to the sync process, so there's a potential for a race condition even if the data has been synced. (I also recommend you to call DataStore.clear() and stop/start.

I got this from amplify > backend > api > schema.graphql:
Screenshot (96)
This is the code:
`enum AtuaType {
WALK
BIKE
CAR
GROUP
}

enum OrderStatus {
READY_FOR_PICKUP
ACCEPTED
PICKEDUP
DELIVERED
}

type Order @model @auth(rules: [{allow: public}]) {
id: ID!
recipientName: String!
recipientNumber: String!
orderDetails: String
total: Float
originPlace: String
destinationPlace: String
atuaType: AtuaType
status: OrderStatus
userID: ID! @Index(name: "byUser")
}

type User @model @auth(rules: [{allow: public}]) {
id: ID!
sub: String!
name: String
phoneNumber: String
address: String
lng: Float
lat: Float
Orders: [Order] @hasmany(indexName: "byUser", fields: ["id"])
type: AtuaType
}
`

I got this from amplify > backend > api > Atua > build > schema.graphql:
Screenshot (97)
This is the code:
`enum AtuaType {
WALK
BIKE
CAR
GROUP
}

enum OrderStatus {
READY_FOR_PICKUP
ACCEPTED
PICKEDUP
DELIVERED
}

type Order @aws_iam @aws_api_key {
id: ID!
recipientName: String!
recipientNumber: String!
orderDetails: String
total: Float
originPlace: String
destinationPlace: String
atuaType: AtuaType
status: OrderStatus
userID: ID!
createdAt: AWSDateTime!
updatedAt: AWSDateTime!
_version: Int!
_deleted: Boolean
_lastChangedAt: AWSTimestamp!
}

type User @aws_iam @aws_api_key {
id: ID!
sub: String!
name: String
phoneNumber: String
address: String
lng: Float
lat: Float
Orders(filter: ModelOrderFilterInput, sortDirection: ModelSortDirection, limit: Int, nextToken: String): ModelOrderConnection
type: AtuaType
createdAt: AWSDateTime!
updatedAt: AWSDateTime!
_version: Int!
_deleted: Boolean
_lastChangedAt: AWSTimestamp!
}

input ModelStringInput {
ne: String
eq: String
le: String
lt: String
ge: String
gt: String
contains: String
notContains: String
between: [String]
beginsWith: String
attributeExists: Boolean
attributeType: ModelAttributeTypes
size: ModelSizeInput
}

input ModelIntInput {
ne: Int
eq: Int
le: Int
lt: Int
ge: Int
gt: Int
between: [Int]
attributeExists: Boolean
attributeType: ModelAttributeTypes
}

input ModelFloatInput {
ne: Float
eq: Float
le: Float
lt: Float
ge: Float
gt: Float
between: [Float]
attributeExists: Boolean
attributeType: ModelAttributeTypes
}

input ModelBooleanInput {
ne: Boolean
eq: Boolean
attributeExists: Boolean
attributeType: ModelAttributeTypes
}

input ModelIDInput {
ne: ID
eq: ID
le: ID
lt: ID
ge: ID
gt: ID
contains: ID
notContains: ID
between: [ID]
beginsWith: ID
attributeExists: Boolean
attributeType: ModelAttributeTypes
size: ModelSizeInput
}

input ModelSubscriptionStringInput {
ne: String
eq: String
le: String
lt: String
ge: String
gt: String
contains: String
notContains: String
between: [String]
beginsWith: String
in: [String]
notIn: [String]
}

input ModelSubscriptionIntInput {
ne: Int
eq: Int
le: Int
lt: Int
ge: Int
gt: Int
between: [Int]
in: [Int]
notIn: [Int]
}

input ModelSubscriptionFloatInput {
ne: Float
eq: Float
le: Float
lt: Float
ge: Float
gt: Float
between: [Float]
in: [Float]
notIn: [Float]
}

input ModelSubscriptionBooleanInput {
ne: Boolean
eq: Boolean
}

input ModelSubscriptionIDInput {
ne: ID
eq: ID
le: ID
lt: ID
ge: ID
gt: ID
contains: ID
notContains: ID
between: [ID]
beginsWith: ID
in: [ID]
notIn: [ID]
}

enum ModelAttributeTypes {
binary
binarySet
bool
list
map
number
numberSet
string
stringSet
_null
}

input ModelSizeInput {
ne: Int
eq: Int
le: Int
lt: Int
ge: Int
gt: Int
between: [Int]
}

enum ModelSortDirection {
ASC
DESC
}

type ModelOrderConnection @aws_api_key @aws_iam {
items: [Order]!
nextToken: String
startedAt: AWSTimestamp
}

input ModelAtuaTypeInput {
eq: AtuaType
ne: AtuaType
}

input ModelOrderStatusInput {
eq: OrderStatus
ne: OrderStatus
}

input ModelOrderFilterInput {
id: ModelIDInput
recipientName: ModelStringInput
recipientNumber: ModelStringInput
orderDetails: ModelStringInput
total: ModelFloatInput
originPlace: ModelStringInput
destinationPlace: ModelStringInput
atuaType: ModelAtuaTypeInput
status: ModelOrderStatusInput
userID: ModelIDInput
and: [ModelOrderFilterInput]
or: [ModelOrderFilterInput]
not: ModelOrderFilterInput
_deleted: ModelBooleanInput
}

type Query {
getOrder(id: ID!): Order @aws_api_key @aws_iam
listOrders(filter: ModelOrderFilterInput, limit: Int, nextToken: String): ModelOrderConnection @aws_api_key @aws_iam
syncOrders(filter: ModelOrderFilterInput, limit: Int, nextToken: String, lastSync: AWSTimestamp): ModelOrderConnection @aws_api_key @aws_iam
ordersByUserID(userID: ID!, sortDirection: ModelSortDirection, filter: ModelOrderFilterInput, limit: Int, nextToken: String): ModelOrderConnection @aws_api_key @aws_iam
getUser(id: ID!): User @aws_api_key @aws_iam
listUsers(filter: ModelUserFilterInput, limit: Int, nextToken: String): ModelUserConnection @aws_api_key @aws_iam
syncUsers(filter: ModelUserFilterInput, limit: Int, nextToken: String, lastSync: AWSTimestamp): ModelUserConnection @aws_api_key @aws_iam
}

input ModelOrderConditionInput {
recipientName: ModelStringInput
recipientNumber: ModelStringInput
orderDetails: ModelStringInput
total: ModelFloatInput
originPlace: ModelStringInput
destinationPlace: ModelStringInput
atuaType: ModelAtuaTypeInput
status: ModelOrderStatusInput
userID: ModelIDInput
and: [ModelOrderConditionInput]
or: [ModelOrderConditionInput]
not: ModelOrderConditionInput
_deleted: ModelBooleanInput
}

input CreateOrderInput {
id: ID
recipientName: String!
recipientNumber: String!
orderDetails: String
total: Float
originPlace: String
destinationPlace: String
atuaType: AtuaType
status: OrderStatus
userID: ID!
_version: Int
}

input UpdateOrderInput {
id: ID!
recipientName: String
recipientNumber: String
orderDetails: String
total: Float
originPlace: String
destinationPlace: String
atuaType: AtuaType
status: OrderStatus
userID: ID
_version: Int
}

input DeleteOrderInput {
id: ID!
_version: Int
}

type Mutation {
createOrder(input: CreateOrderInput!, condition: ModelOrderConditionInput): Order @aws_api_key @aws_iam
updateOrder(input: UpdateOrderInput!, condition: ModelOrderConditionInput): Order @aws_api_key @aws_iam
deleteOrder(input: DeleteOrderInput!, condition: ModelOrderConditionInput): Order @aws_api_key @aws_iam
createUser(input: CreateUserInput!, condition: ModelUserConditionInput): User @aws_api_key @aws_iam
updateUser(input: UpdateUserInput!, condition: ModelUserConditionInput): User @aws_api_key @aws_iam
deleteUser(input: DeleteUserInput!, condition: ModelUserConditionInput): User @aws_api_key @aws_iam
}

input ModelSubscriptionOrderFilterInput {
id: ModelSubscriptionIDInput
recipientName: ModelSubscriptionStringInput
recipientNumber: ModelSubscriptionStringInput
orderDetails: ModelSubscriptionStringInput
total: ModelSubscriptionFloatInput
originPlace: ModelSubscriptionStringInput
destinationPlace: ModelSubscriptionStringInput
atuaType: ModelSubscriptionStringInput
status: ModelSubscriptionStringInput
userID: ModelSubscriptionIDInput
and: [ModelSubscriptionOrderFilterInput]
or: [ModelSubscriptionOrderFilterInput]
_deleted: ModelBooleanInput
}

type Subscription {
onCreateOrder(filter: ModelSubscriptionOrderFilterInput): Order @aws_subscribe(mutations: ["createOrder"]) @aws_api_key @aws_iam
onUpdateOrder(filter: ModelSubscriptionOrderFilterInput): Order @aws_subscribe(mutations: ["updateOrder"]) @aws_api_key @aws_iam
onDeleteOrder(filter: ModelSubscriptionOrderFilterInput): Order @aws_subscribe(mutations: ["deleteOrder"]) @aws_api_key @aws_iam
onCreateUser(filter: ModelSubscriptionUserFilterInput): User @aws_subscribe(mutations: ["createUser"]) @aws_api_key @aws_iam
onUpdateUser(filter: ModelSubscriptionUserFilterInput): User @aws_subscribe(mutations: ["updateUser"]) @aws_api_key @aws_iam
onDeleteUser(filter: ModelSubscriptionUserFilterInput): User @aws_subscribe(mutations: ["deleteUser"]) @aws_api_key @aws_iam
}

type ModelUserConnection @aws_api_key @aws_iam {
items: [User]!
nextToken: String
startedAt: AWSTimestamp
}

input ModelUserFilterInput {
id: ModelIDInput
sub: ModelStringInput
name: ModelStringInput
phoneNumber: ModelStringInput
address: ModelStringInput
lng: ModelFloatInput
lat: ModelFloatInput
type: ModelAtuaTypeInput
and: [ModelUserFilterInput]
or: [ModelUserFilterInput]
not: ModelUserFilterInput
_deleted: ModelBooleanInput
}

input ModelUserConditionInput {
sub: ModelStringInput
name: ModelStringInput
phoneNumber: ModelStringInput
address: ModelStringInput
lng: ModelFloatInput
lat: ModelFloatInput
type: ModelAtuaTypeInput
and: [ModelUserConditionInput]
or: [ModelUserConditionInput]
not: ModelUserConditionInput
_deleted: ModelBooleanInput
}

input CreateUserInput {
id: ID
sub: String!
name: String
phoneNumber: String
address: String
lng: Float
lat: Float
type: AtuaType
_version: Int
}

input UpdateUserInput {
id: ID!
sub: String
name: String
phoneNumber: String
address: String
lng: Float
lat: Float
type: AtuaType
_version: Int
}

input DeleteUserInput {
id: ID!
_version: Int
}

input ModelSubscriptionUserFilterInput {
id: ModelSubscriptionIDInput
sub: ModelSubscriptionStringInput
name: ModelSubscriptionStringInput
phoneNumber: ModelSubscriptionStringInput
address: ModelSubscriptionStringInput
lng: ModelSubscriptionFloatInput
lat: ModelSubscriptionFloatInput
type: ModelSubscriptionStringInput
and: [ModelSubscriptionUserFilterInput]
or: [ModelSubscriptionUserFilterInput]
_deleted: ModelBooleanInput
}
`

from amplify-js.

chrisbonifacio avatar chrisbonifacio commented on June 12, 2024

In the meantime, if you can provide a small sample app or can invite me to your repo to build the app locally please do. It would help to speed up the reproduction as I notice you are building a React Native app and will have to try to recreate the environment including package versions, amplify backend, etc

from amplify-js.

elkee2003 avatar elkee2003 commented on June 12, 2024

In the meantime, if you can provide a small sample app or can invite me to your repo to build the app locally please do. It would help to speed up the reproduction as I notice you are building a React Native app and will have to try to recreate the environment including package versions, amplify backend, etc

Done!

from amplify-js.

Related Issues (20)

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.