Giter Site home page Giter Site logo

renatonascalves / wp-graphql-buddypress Goto Github PK

View Code? Open in Web Editor NEW
35.0 9.0 11.0 2.55 MB

Bringing the power of GraphQL to BuddyPress.

Home Page: https://wordpress.org/plugins/wp-graphql-buddypress

License: GNU General Public License v3.0

PHP 100.00%
graphql wordpress wp-plugin buddypress api wp-graphql

wp-graphql-buddypress's Introduction

WPGraphQL BuddyPress

Project Status: Active. License

WPGraphQL BuddyPress is a free and open-source extension for the WPGraphQL plugin, bringing the power of GraphQL to BuddyPress.

System Requirements

  • PHP >= 8.0+
  • WP >= 5.9+
  • WPGraphQL >= latest
  • BuddyPress >= latest

Quick Install

  1. Install & activate BuddyPress
  2. Install & activate WPGraphQL
  3. Clone or download the zip of this repository into your WordPress plugin directory, and activate the plugin.
  4. Run composer install --no-dev before activating the plugin/extension

wp-graphql-buddypress's People

Contributors

dependabot[bot] avatar renatonascalves avatar

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wp-graphql-buddypress's Issues

Your requirements could not be resolved to an installable set of packages

This is my first time executing via ssh, but this is what came back after attempted composer install

Problem 1
- Installation request for phar-io/manifest 1.0.3 -> satisfiable by phar-io/manifest[1.0.3].
- phar-io/manifest 1.0.3 requires php ^5.6 || ^7.0 -> your PHP version (8.1.3) does not satisfy that requirement.
Problem 2
- Installation request for phar-io/version 2.0.1 -> satisfiable by phar-io/version[2.0.1].
- phar-io/version 2.0.1 requires php ^5.6 || ^7.0 -> your PHP version (8.1.3) does not satisfy that requirement.
Problem 3
- Installation request for phpunit/php-code-coverage 6.1.4 -> satisfiable by phpunit/php-code-coverage[6.1.4].
- phpunit/php-code-coverage 6.1.4 requires php ^7.1 -> your PHP version (8.1.3) does not satisfy that requirement.
Problem 4
- Installation request for phpunit/phpunit 7.5.20 -> satisfiable by phpunit/phpunit[7.5.20].
- phpunit/phpunit 7.5.20 requires php ^7.1 -> your PHP version (8.1.3) does not satisfy that requirement.
Problem 5
- Installation request for sebastian/global-state 2.0.0 -> satisfiable by sebastian/global-state[2.0.0].
- sebastian/global-state 2.0.0 requires php ^7.0 -> your PHP version (8.1.3) does not satisfy that requirement.
Problem 6
- phpunit/phpunit 7.5.20 requires php ^7.1 -> your PHP version (8.1.3) does not satisfy that requirement.
- yoast/phpunit-polyfills 1.0.3 requires phpunit/phpunit ^4.8.36 || ^5.7.21 || ^6.0 || ^7.0 || ^8.0 || ^9.0 -> satisfiable by phpunit/phpunit[7.5.20].
- Installation request for yoast/phpunit-polyfills 1.0.3 -> satisfiable by yoast/phpunit-polyfills[1.0.3].

MU: expected a value of type `ActivityTypeEnum` but received: `new_blog_post`

Description of the bug


{
  "debugMessage": "Expected a value of type \"ActivityTypeEnum\" but received: new_blog_post",
  "message": "Internal server error",
  "extensions": {
    "category": "internal"
  },
  "locations": [
    {
      "line": 7,
      "column": 7
    }
  ],
  "path": [
    "activities",
    "nodes",
    1,
    "type"
  ]
}

Steps To Reproduce

Not sure yet. Noticed in a MU site while testing. Most likely, Buddypress changed how it returns the types of the activities.

Additional Information

No response

Members Component

Add basic support to the Members component:

  • Field(s)
    -- Add BuddyPress fields to the User type (see #8)
    -- XProfile fields (see #10)
    -- Avatar (see #3)
  • Connections
    • RootQuery -> members (see #9)
    • groups -> members (see #2)
    • User -> xprofile groups -> group fields (see #10)
  • Enums
  • MemberOrderByTypeEnum
  • MemberTypesEnum
  • Unit tests
  • Check pagination
  • Mutation(s) (Pending: wp-graphql/wp-graphql#143)
    • update (we don't have anything to update)
    • delete
    • create (users don't create account, per se)

Internal server error on console when running Graphiql after installing wp-graphql-buddypress

I have run composer install and npm install

app.js?ver=ed1b92d35860129a50b81d00174fd747:30 Uncaught (in promise) Error: Internal server error
at new t (app.js?ver=ed1b92d35860129a50b81d00174fd747:30:37333)
at app.js?ver=ed1b92d35860129a50b81d00174fd747:30:76294
at n (app.js?ver=ed1b92d35860129a50b81d00174fd747:30:29683)
at app.js?ver=ed1b92d35860129a50b81d00174fd747:30:29608
at new Promise ()
at Object.then (app.js?ver=ed1b92d35860129a50b81d00174fd747:30:29574)
at Object.next (app.js?ver=ed1b92d35860129a50b81d00174fd747:30:29693)
at qd (app.js?ver=ed1b92d35860129a50b81d00174fd747:30:6954)
at Gd (app.js?ver=ed1b92d35860129a50b81d00174fd747:30:7467)
at e.t.next (app.js?ver=ed1b92d35860129a50b81d00174fd747:30:8007)

I am getting this error on console and the Graphiql could not start

Messages Component

@todo: Investigate Subscriptions support:

Add basic support to the Messages component:

  • Type
  • Thread
  • Message
  • Recipient
  • Field(s)
  • getThreadBy
    -- get thread by
    -- id (Relay ID)
    -- threadId
  • Connections
  • RootQuery -> threads
  • User -> threads
  • Threads -> messages
    -- Add star filter to get starred messages
  • Threads -> recipients
  • Enums
  • MessageTypeEnum
  • MessageBoxEnum
  • Model
  • Thread
  • Message
  • DataLoader
  • ThreadObjectLoader
  • MessageObjectLoader
  • Unit tests
  • Check user permissions
  • Check pagination
  • Thread Mutation(s)
    • Create
    • Update
    • Delete
  • Message Mutation(s)
    • (Un)Star

Support `nodeByUri`

Pass a BuddyPress URI (Group, Activity, Member or Blog) to nodeByUri and get a node from one of the objects below:

  • Activity (see #73)
query {
 // also works: https://site.test/members/username/activity/activity_id/
  nodeByUri( uri: "https://site.test/activity/p/activity_id/") {
    ... on Activity {
      parentDatabaseId
      databaseId
      type
      parentId
      status
      uri
      primaryItemId
      secondaryItemId
      isFavorited
      hidden
      component
    }
  }
}

  • Thread (see #72)
query {
  nodeByUri( uri: "https://site.test/members/username/messages/view/thread_id/") {
    ... on Thread {
      databaseId
      id
      unreadCount
      recipients {
        nodes {
          databaseId
          url
          uri
          username
          userId
        }
      }
      messages {
        nodes {
          databaseId
          id
          sender {
            databaseId
            username
          }
        }
      }
    }
  }
}

  • Group (see #2)
query {
  nodeByUri(uri: "https://site/groups/group-slug/") {
    ... on Group {
      name
      databaseId
      uri
      hasForum
    }
  }
}
  • Member (see #6)
query {
  nodeByUri(uri: "https://site/members/member-slug/") {
    ... on User {
      name
      databaseId
      url
      link
      uri
    }
  }
}
  • Blog (see #16)
query {
  nodeByUri(uri: "https://slug.site/") {
    ... on Blog {
      name
      uri
      databaseId
      domain
      path
    }
  }
}

CI Test against PHP 8.0

as titled.

It can fail in the CI and it should not block the merge of pull requests unless there is no issue. =P

Fatal Error on install

Love what you are doing here and glad to hear you are coming back to it!

I tried installing with BuddyBoss (which has all buddypress core included). I'm getting a fatal error:

2021/04/03 09:42:14 [error] 25#25: *10090 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Class 'WPGraphQL\Extensions\BuddyPress\TypeRegistry' not found in /www/kinsta/public/insightflowresearchapp/wp-content/plugins/wp-graphql-buddypress-main/wp-graphql-buddypress.php:254 Stack trace: #0 /www/kinsta/public/insightflowresearchapp/wp-content/plugins/wp-graphql-buddypress-main/wp-graphql-buddypress.php(60): WP_GraphQL_BuddyPress->actions() #1 /www/kinsta/public/insightflowresearchapp/wp-content/plugins/wp-graphql-buddypress-main/wp-graphql-buddypress.php(396): WP_GraphQL_BuddyPress::instance() #2 /www/kinsta/public/insightflowresearchapp/wp-includes/class-wp-hook.php(287): wp_graphql_buddypress_init() #3 /www/kinsta/public/insightflowresearchapp/wp-includes/class-wp-hook.php(311): WP_Hook->apply_filters() #4 /www/kinsta/public/insightflowresearchapp/wp-includes/plugin.php(484): WP_Hook->do_action() #5 /www/kinsta/public/insightflowresearchapp/wp-content/plugins/wp-graphql/src/WPGraphQL.php(267): do_action() #6 /www/kinsta/public/insightflowr" while reading response header from upstream, client: 172.18.0.1, server: insightflowresearchapp.local, request: "POST /wp-admin/admin-ajax.php?_fs_blog_admin=true HTTP/2.0", upstream: "fastcgi://172.18.0.3:9002", host: "insightflowresearchapp.local", referrer: "https://insightflowresearchapp.local/wp-admin/admin.php?page=graphiql-ide&operationName=MyQuery&query=query%20MyQuery%20%7B%0A%20%20inLibraries%20%7B%0A%20%20%20%20nodes%20%7B%0A%20%20%20%20%20%20inLibraryId%0A%20%20%20%20%20%20name%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A&variables=null"

Is it compatible with Buddyboss?

Update CI Matrix

as titled.

Ideally, the CI matrix would test the same as BuddyPress and the BP-REST.

PHP Fatal Error - Call to Undefined Function

Description of the bug

Followed instructions here: https://github.com/renatonascalves/wp-graphql-buddypress

The logged error is noted below.

Steps To Reproduce

Step 1 I am using BuddyBoss, not BuddyPress (hopefully that isn't the issue)
Step 4 was run before activating the plugin. Then attempted to activate the plugin which generated the fatal error.

Additional Information

2023/08/13 22:47:23 [error] 33433#33433: *8591 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Call to undefined function WPGraphQL\Extensions\BuddyPress\bp_get_group_type_tax_name() in /www/pickleballersnetwork_949/public/wp-content/plugins/wp-graphql-buddypress-main/src/TypeRegistry.php:240
Stack trace:
#0 /www/pickleballersnetwork_949/public/wp-includes/class-wp-hook.php(312): WPGraphQL\Extensions\BuddyPress\TypeRegistry::WPGraphQL\Extensions\BuddyPress{closure}(Array, 'category')
#1 /www/pickleballersnetwork_949/public/wp-includes/plugin.php(205): WP_Hook->apply_filters(Array, Array)
#2 /www/pickleballersnetwork_949/public/wp-includes/class-wp-taxonomy.php(316): apply_filters('register_taxono...', Array, 'category', Array)
#3 /www/pickleballersnetwork_949/public/wp-includes/class-wp-taxonomy.php(290): WP_Taxonomy->set_props('post', Array)
#4 /www/pickleballersnetwork_949/public/wp-includes/taxonomy.php(493): WP_Taxonomy->__construct('category', 'post', Array)
#5 /www/pickleballersnetwork_949/public/wp-includes/taxonomy.php(82): register_ta" while reading response header from upstream, client: 174.68.181.157, server: staging-pickleballersnetwork.kinsta.cloud, request: "GET /wp-admin/plugins.php?activate=true&plugin_status=all&paged=1&s= HTTP/2.0", upstream: "fastcgi://unix:/var/run/php8.0-fpm-pickleballersnetwork.sock:", host: "staging-pickleballersnetwork.kinsta.cloud:61745", referrer: "https://staging-pickleballersnetwork.kinsta.cloud/wp-admin/plugins.php?plugin_status=all&paged=1&s"

DUPLICATE_TYPE Error when using alongside WPGraphQL Upload

When I have WPGraphQL Upload activated, I'm getting the following error. If I disable it, the error goes away.

  "type": "DUPLICATE_TYPE",
        "message": "You cannot register duplicate Types to the Schema. The Type 'Upload' already exists in the Schema. Make sure to give new Types a unique name.",
        "type_name": "Upload",

Membership Requests - Groups Component

Complete support of the Groups component:

  • Fields
  • getInviteBy
    -- get group membership request by
    --- id (Relay ID)
    --- inviteId
    --- type: REQUEST
  • Connections
  • group -> invites (Type: REQUEST)
  • user -> invites (Type: REQUEST)
  • Enums
  • InvitationTypeEnum
  • Model
  • Invitation
  • Check permissions
  • Mutations
    • Create
    • Update / Accept request
    • Delete / Reject request

Related to #71

Activity Component

Add basic support to the Activity component:

  • Type
  • Activity
  • Field(s)
  • activityBy
    -- get activity by
    -- id (Relay ID)
    -- activityId
  • Connections
  • RootQuery -> activities
  • Activity -> comments (activity_comment type)
  • User -> activities
  • Blog -> activities
  • Group -> activities
  • Enums
  • ActivityStatusEnum
  • ActivityOrderScopeEnum
  • ActivityOrderStatusEnum
  • ActivityComponentEnum
  • ActivityTypeEnum
  • Model
  • Activity
  • DataLoader
  • ActivityObjectLoader
  • Unit tests
  • Check user permissions
  • Check pagination
  • Activity Mutation(s) (activity and comment)
    • Create
    • Update
    • Delete
  • Favorite Mutation(s)
    • (Un)Favorite

Is this repo active?

Hey,

thank you, for your code! :-)

I would love to use activities/messages with graphql.

--

Does your members-fetch with cursors work? I dont get it, after fetchMore edges is always empty

This likely means you have cloned WPGraphQL BuddyPress from Github and need to run the command `composer install`

I read that this issue was closed, but I'm having this error message in the WordPress Dashboard:

WPGraphQL BuddyPress appears to have been installed without its dependencies. It will not work properly until dependencies are installed. This likely means you have cloned WPGraphQL BuddyPress from Github and need to run the command composer install.

Local installation with Local (Flywheel)
Buddypress 10.0.0
WPGraphQL 1.6.12
WPGraphQL BuddyPress 0.0.1-alpha

PHP 8.0.0
WordPress 5.8.3

Thank you!

Friends Component

Add basic support to the Friends component:

  • Type
  • Friendship
  • Field(s)
  • friendshipBy
    -- get friendship by
    --- id (Relay ID)
    --- friendshipId
  • Connections
  • User -> friends
  • Enums
  • FriendshipOrderByEnum 'date_created', 'initiator_user_id', 'friend_user_id', 'id'
  • Model
  • Friendship
  • Extensive Unit tests
  • Check permissions
  • Check pagination
  • Mutation(s)
    • Create/Add
    • Accept/Update
    • Reject/Withdraw/Delete

Example of a query to fetch a user with his friends.

{
  user(id: "dXNlcjoz") {
    ...userFields
    friends {
      edges {
        node {
          id
          friendshipId
          isConfirmed
          initiator {
            ...userFields
          }
          friend {
            ...userFields
          }
        }
      }
    }
  }
}

fragment userFields on User {
  id
  userId
  name
  link
  mentionName
  memberTypes
  attachmentAvatar {
    ...avatarFields
  }
  attachmentCover {
    ...avatarFields
  }
}

fragment avatarFields on Attachment {
  full
  thumb
}

BP_XProfile_Group::get_group_ids() call to undefined function

I'm running Buddyboss platform, so this might be an issue with the fork they are running. In the XProfileGroupObjectLoader.php on line 35 the call to BP_XProfile_Group::get_group_ids() is calling a function that doesn't exist. I think it should be calling BP_XProfile_Group::get()

Here's the error:
"errors": [
{
"debugMessage": "Call to undefined method BP_XProfile_Group::get_group_ids()",
"message": "Internal server error",
"extensions": {
"category": "internal"
},
"locations": [
{
"line": 3,
"column": 5
}
],
"path": [
"user",
"xprofileGroups"
],

Clean up

Some things to clean up soon:

  • Remove the connection wrappers in the Factory class/file.
  • After this ^, the Factory class should have only reusable resolvers.
  • Organize mutation files in components for clarity and to make it easier to find
  • Use some of the core interfaces where appropriate. Node and DatabaseIdentifier are some of them we can use
  • Create an union type for the Group Favorite/Request, see #75 and #71
  • Update data loader classes to pass the model via the get_model method
  • All connections should have a valid is_valid_offset method
  • Move all classes in the TypeRegistry class to the head of the file
  • Rename the Data mutation classes to something else since their names are misleading and it is confusing to have a mutation with actual mutation and other without it
  • Remove all unused namespaces from files

Attachment Component

BuddyPress uses an internal attachment system for adding avatar and cover images to users, blogs and groups (or other custom components).

  • Field(s)
    • Add avatar and cover fields to the User type. See #6
    • Add avatar and cover fields to the Group type. See #2
    • Add avatar and cover fields to the Blog type. See #16
  • Type(s)
    • Attachment
  • Mutation (for the Group/Blog/User types)
    • Create, aka, Upload
    • Delete
  • Unit tests

Some prior art on image upload: https://github.com/hughdevore/wp-graphql-file-upload
Seems to be a good spec to follow: https://github.com/jaydenseric/graphql-multipart-request-spec

Remove vendor folder from source control

Memory fails me why on earth the composer vendor folder is on source control. Other WP GraphQL extensions are the same. So find a way to remove it making sure everything continues to work.

XProfile Component

Add basic support to the XProfile component:

  • Type
  • XProfileGroup
  • XProfileField
  • Field(s)
  • xprofileGroupby
    -- get XProfile group by
    --- id (Relay ID)
    --- groupId
  • xprofileFieldby
    -- get XProfile field by
    --- id (Relay ID)
    --- fieldId
  • Connections
  • RootQuery -> xprofile groups -> group fields
  • XProfileGroup -> fields
  • User -> xprofile groups -> group fields
  • Enums
  • XProfileFieldVisibilityLevelEnum
  • XProfileFieldValueFormatEnum
  • XProfileFieldTypesEnum
  • Model
  • XProfileGroup
  • XProfileField
  • DataLoader
  • XProfileGroupObjectLoader
  • Unit tests
  • Check permissions
  • Check pagination
  • Mutation(s)
    • Create
    • Update
    • Delete

Not an Issue

I am looking to create a headless social network and was curious what it means to 'run "composer install"'
I am currently using BP and a ton of other plugins to make this work, and will be converting html templates to use as a headless front end.
Forgive me as I am new to this 'Headless' system but very excited to do this.
my email is [email protected]

Thanks
Matthew Brown

Add admin notice if installed without WPGraphQL

Description

If the plugin is installed without WPGraphQL, add an admin notice suggesting installing it. It doesn't bail currently but it also doesn't do anything.

Use Case

As described.

Add support for XProfile Data

Description

Apparently I forgot to add support for updating XProfile field data via the API. So, one can't update a profile field data. Let's add support for it.

Use Case

Allow consumers of the API to update a XProfile field data.

Unit tests improvements

as titled.

There are many helpers we could add to make tests leaner.

I'm thinking of helpers like the REST API one: $this->assertErrorResponse( 'rest_invalid_param', $response, 400 );

I'm already doing some of that in each individual unit test, but ideally, this should be sent to a class and our unit tests would extend it.

Blogs Component Enhancements

The Blog type is missing an important information: the latest post. So we can add this so that only the latest post is available or we can get a list of posts from the targered Blog.

This is related to Multisite, so there is some complexities there.

  • Connections
  • Blog -> posts
  • Blog -> members - Members of the targerted Blog
  • Blog -> groups - Groups of the targerted Blog
  • Blog -> activities - Activities of the targerted Blog

Related to #16 and #70

Signup Module/Component

Add basic support to the Signup module/component:

  • Type
  • Signup
  • Field(s)
  • signupBy
    -- get signup by
    --- id (Relay ID)
    --- signupId
    --- user email
    --- activation key
  • Connections
  • RootQuery -> signups
  • Enums
  • SignupOrderByEnum
  • Model
  • Signup
    --- Model has more fields when on multisite.
  • DataLoader
  • SignupObjectLoader
  • Unit tests
  • Check pagination;
  • Check multisite;
  • Check if activation email is sent after signup creation;
  • Mutation(s)
    • Create Signup
    • Activate Signup
    • Delete Signup

Notifications Component

Add basic support to the Notifications component:

  • Type
  • Notification
  • Field(s)
  • getNotificationBy
    -- get notification by
    -- id (Relay ID)
    -- notificationId
  • Connections
  • RootQuery -> notifications
  • User -> notifications
  • Group -> notifications
  • Blog -> notifications
  • Enums
  • NotificationOrderByEnum
  • NotificationComponentNamesEnum
  • Union
  • NotificationObjectUnion
  • Model
  • Notification
  • DataLoader
  • NotificationObjectLoader
  • Unit tests
  • Check user permissions
  • Check pagination
  • Mutation(s)
    • Update
    • Delete

How to handle avatar upload using grapghql

Thanks for the plugin. I am trying to handle avatar upload on react based application. Do you have any example of how the upload request can be made using multipart/form-data method. I am using axios to make the grapghql request.

Invites - Groups Component

Complete support of the Groups component:

  • Fields
  • getInviteBy
    -- get group invite by
    --- id (Relay ID)
    --- inviteId
    --- type: INVITE
  • Connections
  • group -> invites (Type: INVITE)
  • user -> invites (Type: INVITE)
  • Enums
  • InvitationTypeEnum
  • Model
  • Invitation
  • Check permissions
  • Check results from group and user connections since they are different from both
  • Mutations
    • Create
    • Update / Accept invitation
    • Delete / Reject invitation

Related to #2

Group Types

Add the group types as a GraphQL type.

Here is a screenshot with the Information that should be available in the GraphQL API:

Screen Shot 2021-05-09 at 16 32 05

Note: currently types are exposed by only its slug. Which is not useful for front-end usage.

Blogs Component

Add basic support to the Blogs component:

  • Type
  • blog
  • Field(s)
  • blogBy
    -- get blog by
    --- id (Relay ID)
    --- blogId
  • Field(s)
    -- Avatar (see #3)
  • Connections
    • RootQuery -> blogs
  • Enums
  • BlogOrderTypeEnum
  • Model
  • Blog
  • Unit tests
  • Check pagination
  • Mutation(s)

Groups Component

Add basic support to the Group component:

  • Type
  • Group
  • Field(s)
  • groupBy
    -- get group by
    --- id (Relay ID)
    --- groupId
    --- slug
    --- previousSlug
  • Connections
  • RootQuery -> groups
  • groups -> parent (BuddyPress groups can have parent groups)
  • groups -> members (see #6)
  • Enums
  • GroupObjectFieldFormatEnum
  • GroupOrderByEnum
  • GroupOrderTypeEnum
  • GroupStatusEnum
  • GroupTypeEnum
  • Model
  • Group
  • DataLoader
  • GroupObjectLoader
  • Unit tests
  • Check permissions, especially for hidden and private groups;
  • Check pagination;
  • Mutation(s) (#7)
    • Create
    • Update
    • Delete

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.