Giter Site home page Giter Site logo

pc-chat's Introduction

野火IM

野火IM Server 端,请点击im-server查看,欢迎 star

基于vue技术栈开发的全新 PC 端,请点击vue-pc-chat查看,欢迎 star

野火IM 移动端等,请点击wildfirechat查看


本仓库原始代码,已迁移至 react-pc-chat ,请点击前往查看。

野火IM PC端说明

目前,野火IM PC有两个版本

  1. vue-pc-chat, 基于vue技术栈开发,是未来开发的重心。
  2. react-pc-chat, 基于react技术栈开发,功能完善,目前处于维护阶段,只修复严重bug,不开发新功能。

建议大家选择vue版本进行二次开发!

pc-chat's People

Contributors

airycanon avatar axxop avatar gaoyaoxin avatar heavyrain2012 avatar imhao183 avatar imndx avatar kotojo avatar peaceme2019 avatar siqiii avatar trazyn avatar weizihua avatar yujun2013 avatar zhzbin89 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pc-chat's Issues

聊天记录无法查看

老师 你好 ,PC客户端 聊天窗口 打开聊天记录功能 无法显示聊天信息。

windows npm run dev报错 Cannot find module './build/Release/node_sleep.node'

npm run dev

> [email protected] dev D:\_webStation\test\pc-chat
> concurrently --kill-others "npm run hot-server" "node scripts/sleep.js & npm run start-hot"

[1] internal/modules/cjs/loader.js:984
[1]   throw err;
[1]   ^
[1]
Error: Cannot find module './build/Release/node_sleep.node'
[1] Require stack:
[1] - D:\_webStation\test\pc-chat\node_modules\sleep\index.js
[1] - D:\_webStation\test\pc-chat\scripts\sleep.js
[1]     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:981:15)
[1]     at Function.Module._load (internal/modules/cjs/loader.js:863:27)
[1]     at Module.require (internal/modules/cjs/loader.js:1043:19)
[1]     at require (internal/modules/cjs/helpers.js:77:18)
[1]     at Object.<anonymous> (D:\_webStation\test\pc-chat\node_modules\sleep\index.js:1:13)
[1]     at Module._compile (internal/modules/cjs/loader.js:1157:30)
[1]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
[1]     at Module.load (internal/modules/cjs/loader.js:1001:32)
[1]     at Function.Module._load (internal/modules/cjs/loader.js:900:14)
[1]     at Module.require (internal/modules/cjs/loader.js:1043:19) {
[1]   code: 'MODULE_NOT_FOUND',
[1]   requireStack: [
[1]     'D:\\_webStation\\test\\pc-chat\\node_modules\\sleep\\index.js',
[1]     'D:\\_webStation\\test\\pc-chat\\scripts\\sleep.js'
[1]   ]
[1] }
[0]
[0] > [email protected] hot-server D:\_webStation\test\pc-chat
[0] > cross-env NODE_ENV=development node -r babel-register scripts/dev.js
[0]
[1]
[1] > [email protected] start-hot D:\_webStation\test\pc-chat
[1] > cross-env HOT=1 NODE_ENV=development ./node_modules/.bin/electron --remote-debugging-port=9222 -r babel-register -r babel-polyfill ./main
[1]
[1] D:\_webStation\test\pc-chat\node_modules\electron\index.js:14
[1]     throw new Error('Electron failed to install correctly, please delete node_modules/electron and try installing again')
[1]     ^
[1]
[1] Error: Electron failed to install correctly, please delete node_modules/electron and try installing again
[1]     at getElectronPath (D:\_webStation\test\pc-chat\node_modules\electron\index.js:14:11)
[1]     at Object.<anonymous> (D:\_webStation\test\pc-chat\node_modules\electron\index.js:18:18)
[1]     at Module._compile (internal/modules/cjs/loader.js:1157:30)
[1]     at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
[1]     at Module.load (internal/modules/cjs/loader.js:1001:32)
[1]     at Function.Module._load (internal/modules/cjs/loader.js:900:14)
[1]     at Module.require (internal/modules/cjs/loader.js:1043:19)
[1]     at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (D:\_webStation\test\pc-chat\node_modules\electron\cli.js:3:16)
[1]     at Module._compile (internal/modules/cjs/loader.js:1157:30)
[1] npm ERR! code ELIFECYCLE
[1] npm ERR! errno 1
[1] npm ERR! [email protected] start-hot: `cross-env HOT=1 NODE_ENV=development ./node_modules/.bin/electron --remote-debugging-port=9222 -r babel-register -r babel-polyfill ./main`
[1] npm ERR! Exit status 1
[1] npm ERR!
[1] npm ERR! Failed at the [email protected] start-hot script.
[1] npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
[1]
npm ERR! A complete log of this run can be found in:
[1] npm ERR!     D:\_install\software\nodejs\node_cache\_logs\2020-03-09T04_25_30_307Z-debug.log
[1] node scripts/sleep.js & npm run start-hot exited with code 1
--> Sending SIGTERM to other processes..
[0] npm run hot-server exited with code 1
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] dev: `concurrently --kill-others "npm run hot-server" "node scripts/sleep.js & npm run start-hot"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

发送sql语句有问题

发送sql语句时 文本无法被选中 没法把文本复制出来,在app端查看内容 把html的标签也显示出来了

无法直接创建会话

必须要发送一条消息会话才会真正生成,而不是点击发送消息就会生成会话;

Linux运行run dev报错

Error: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /home/{projectName}/marswrapper.node)

PC端更换APP_SERVER = 'http://wildfirechat.cn:8888地址,无法扫描登录

PC端版本,在config.js文件中使用http://wildfirechat.cn:8888地址,能使用移动端App进行扫码登录,但是修改为自己部署的地址后,就出现扫描成功,但是PC的页面不跳转,还是在二维码页面。请问这是什么原因,是还有其它配置需要修改吗?

static DEFAULT_PORTRAIT_URL = 'https://static.wildfirechat.cn/user-fallback.png';
static APP_SERVER = 'http://wildfirechat.cn:8888';
static QR_CODE_PREFIX_PC_SESSION = "wildfirechat://pcsession/";
static ICE_ADDRESS = 'turn:turn.wildfirechat.cn:3478';

用Mac编译抛出这个错误,怎么解决呢_(:з」∠)_

[0] Module not found: Error: Can't resolve 'worker_threads' in '/Users/hanwenhao/xywl-template/im-system/pc-chat/node_modules/write-file-atomic'
[0] @ ./node_modules/write-file-atomic/index.js
[0] @ ./node_modules/electron-json-storage/lib/storage.js
[0] @ ./src/js/utils/storage.js
[0] @ ./src/js/stores/sessions.js
[0] @ ./src/js/stores/index.js
[0] @ ./src/app.js
[0] @ multi webpack-hot-middleware/client?path=http://localhost:3000/__webpack_hmr babel-polyfill ./src/app.js

Windows版打包安装打开时报错。

A JavaScript error occurred in the main process Uncaught Exception:Error: Cannot open /opt/wildfirechat/resources/app.asar/marswrapper.node: Error: libdouble-conversion.so.1: cannot open shared object file: No such file or directory。

小白求问,这个project是依赖于野火的IM SDK吗?为什么用野火IM移动端扫码才可登录

提issue小提示

为了尽快定位问题,需要提供足够的信息,请按照我们的要求格式来提问。如果您不按照格式提问,我们将无法回复您的问题

操作说明

详细说明操作那个界面,每一步骤都要说得详细,如果是SDK或者api使用问题,需要详细说明调用的那个函数,参数都是什么。

表现现象

描述一下什么现象,比如说函数返回error,errorcode是多少,或者界面上是什么状态,比如发送消息显示发送失败的红点。不要笼统的说功能有问题,不起作用。

日志

请附上相关的错误

预期结果

你认为正确的表现应该是什么样的。

补充条件

是否是必现的,还是偶现的?是否只有在特殊的网络/设备/平台上出现,还是所有的都出现?PC SDK版本信息?

demo对比结果

请用demo对比测试,demo上是什么状态。

PC会话转接功能

【A】要把【A】和【甲】的对话转接给【B】,并且【A】和【甲】的历史消息,【B】也能看到,且【B】和【甲】都能收到相应的通知。转接给谁,这个谁可以筛选

安装依赖报错-- node-gyp rebuild 报错 windows 环境 node版本 10.16.0 python版本 2.7.15 npm版本 6.9.0

D:\workspace\pc-chat\node_modules\sleep>if not defined npm_config_node_gyp (node "C:\Users\Administrator\AppData\Roaming\nvm\v10.16.0\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\....\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Users\Administrator\AppData\Roaming\nvm\v10.16.0\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
在此解决方案中一次生成一个项目。若要启用并行生成,请添加“/m”开关。
module_init.cc
sleep_cpp11.cc
sleep_posix.cc
sleep_win.cc
win_delay_load_hook.cc
C:\Users\Administrator.node-gyp\10.16.0\x64\node.lib : fatal error LNK1107: invalid or corrupt file: cannot read at 0x312F8A [D:\workspace\pc-chat\node_modules\sleep\build\node_sleep.vcxproj]
gyp ERR! build error

gyp: binding.gyp not found (cwd: D:\workspace\pc-chat) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: gyp failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (C:\Users\Administrator\AppData\Roaming\nvm\v10.16.0\node_modules\node-gyp\lib\configure.js:350:16)
gyp ERR! stack at ChildProcess.emit (events.js:198:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Windows_NT 10.0.18363
gyp ERR! command "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\node-gyp\bin\node-gyp.js" "rebuild"
gyp ERR! cwd D:\workspace\pc-chat
gyp ERR! node -v v10.16.0
gyp ERR! node-gyp -v v7.0.0
gyp ERR! not ok

pc端截图问题

pc端,win和mac的截图时间会很长,使用的electron-screenshots这个包。开始截图使用screenshots.startCapture(),我埋点看,时间大约是3s左右,有时间会更长,请问下这个可以怎么优化下喃。

wfc.disconnect有问题

用第一个账户登录成功后,调用wfc.disconnect断开连接后,用第二个账户登录然后 连IM server的时候,用的username是上一个用户的,导致连接失败

gyp ERR! stack Error: make failed with exit code: 2

[email protected] install /Volumes/F/WorksArchitecture/pc-chat-master/node_modules/ref
node-gyp rebuild

CXX(target) Release/obj.target/binding/src/binding.o
clang: error: no such file or directory: ‘DD/.node-gyp/10.16.3/include/node'
clang: error: no such file or directory: 'DD/.node-gyp/10.16.3/src'
clang: error: no such file or directory: 'DD/.node-gyp/10.16.3/deps/openssl/config'
clang: error: no such file or directory: 'DD/.node-gyp/10.16.3/deps/openssl/openssl/include'
clang: error: no such file or directory: 'DD/.node-gyp/10.16.3/deps/uv/include'
clang: error: no such file or directory: 'DD/.node-gyp/10.16.3/deps/zlib'
clang: error: no such file or directory: 'DD/.node-gyp/10.16.3/deps/v8/include'
make: *** [Release/obj.target/binding/src/binding.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack at ChildProcess.emit (events.js:198:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Darwin 18.7.0
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /Volumes/F/WorksArchitecture/pc-chat-master/node_modules/ref
gyp ERR! node -v v10.16.3
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok

PC端多开

PC端能不能弄一个多开的临时解决方案

从网页复制的内容发送的时候没有去掉样式

网页复制的内容没有去掉样式导致 手机端查看 一堆乱码,同样的操做在 微信电脑端 钉钉电脑端都是复制到输入框里 自动把央视标签去掉了的,从网页复制内容到电脑端输入框的情况还是非常多的,希望解决这个问题, 不然要先复制到记事本 再复制到聊天框 非常的麻烦。

修改个人信息函数没有实现

pc-chat/src/js/wfc/client/wfc.js的modifyMyInfo函数调用pc-chat/src/js/wfc/proto/proto.min.js的modifyMyInfo函数,但是pc-chat/src/js/wfc/proto/proto.min.js的modifyMyInfo是空函数,没有具体的实现

windows 运行 npm run dev 报错

环境:
window10
node10.17.0
cmder
vscode

  1. 执行了npm run copy-win 之后再执行npm run dev 报 marswrapper.node is not a valid Win32 application.

2 手动下载各种不同版本 marswrapper.win32.node 进行运行 还是报错
image

期望:能正常运行 npm run dev

表情分类切换BUG

0.3.4版本,并且代码使用了最新代码:
当我们在选择切换不容种类的表情的时候会出现表情栏自动关闭的问题:
1、点击输入框上方的红心;
2、点击选择切换到任意一栏表情;
3、再选择其他任意表情栏切换;
4、此时表情栏以外关闭;
5、此问题必现。

同时还存在除了第一类常规表情外,后面的所有分类的表情均无法输入和显示

pc-chat在我的mac上run不起来

npm run dev后有如下log:
Macintosh:pc-chat lijibin$ npm run dev

[email protected] dev /Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat
concurrently --kill-others "npm run hot-server" "npm run start-hot"

[1]
[1] > [email protected] start-hot /Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat
[1] > cross-env HOT=1 NODE_ENV=development ./node_modules/.bin/electron -r babel-register -r babel-polyfill ./main
[1]
[0]
[0] > [email protected] hot-server /Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat
[0] > cross-env NODE_ENV=development node -r babel-register scripts/dev.js
[0]
[1] 2019-05-13 09:45:05.733 Electron[23751:3893460] *** WARNING: Textured window <AtomNSWindow: 0x7fa8714e6d90> is getting an implicitly transparent titlebar. This will break when linking against newer SDKs. Use NSWindow's -titlebarAppearsTransparent=YES instead.
[0] Server is running with port 3000 👏
[0] webpack built 805a5a5b6c2601e53a26 in 28731ms
[0] ✖ 「wdm」: Hash: 805a5a5b6c2601e53a26
[0] Version: webpack 4.31.0
[0] Time: 28731ms
[0] Built at: 2019/05/13 上午9:45:35
[0] Asset Size Chunks Chunk Names
[0] bundle.js 15 MiB main main
[0] src/assets/fonts/icomoon/fonts/icomoon.eot 146 KiB
[0] src/assets/fonts/icomoon/fonts/icomoon.svg 311 KiB
[0] src/assets/fonts/icomoon/fonts/icomoon.ttf 146 KiB
[0] src/assets/fonts/icomoon/fonts/icomoon.woff 146 KiB
[0] Entrypoint main = bundle.js
[0] [0] multi webpack-hot-middleware/client?path=http://localhost:3000/__webpack_hmr babel-polyfill ./src/app.js 52 bytes {main} [built]
[0] [./node_modules/babel-polyfill/lib/index.js] 833 bytes {main} [built]
[0] [./node_modules/babel-polyfill/node_modules/regenerator-runtime/runtime.js] 23.9 KiB {main} [built]
[0] [./node_modules/core-js/fn/regexp/escape.js] 108 bytes {main} [built]
[0] [./node_modules/core-js/shim.js] 8.03 KiB {main} [built]
[0] [./node_modules/mobx-react/index.module.js] 48.4 KiB {main} [built]
[0] [./node_modules/react-dom/index.js] 1.33 KiB {main} [built]
[0] [./node_modules/react-router-dom/es/index.js] 1010 bytes {main} [built]
[0] [./node_modules/react-transform-catch-errors/lib/index.js] 2.62 KiB {main} [built]
[0] [./node_modules/react-transform-hmr/lib/index.js] 3.6 KiB {main} [built]
[0] [./node_modules/react/index.js] 190 bytes {main} [built]
[0] [./node_modules/redbox-react/lib/index.js] 16 KiB {main} [built]
[0] [./node_modules/strip-ansi/index.js] 161 bytes {main} [built]
[0] [./node_modules/webpack-hot-middleware/client.js?path=http://localhost:3000/__webpack_hmr] (webpack)-hot-middleware/client.js?path=http://localhost:3000/__webpack_hmr 7.68 KiB {main} [built]
[0] [./src/app.js] 11.2 KiB {main} [built]
[0] + 958 hidden modules
[0]
[0] WARNING in ./node_modules/write-file-atomic/index.js
[0] Module not found: Error: Can't resolve 'worker_threads' in '/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/write-file-atomic'
[0] @ ./node_modules/write-file-atomic/index.js
[0] @ ./node_modules/electron-json-storage/lib/storage.js
[0] @ ./src/js/utils/storage.js
[0] @ ./src/js/stores/sessions.js
[0] @ ./src/js/stores/index.js
[0] @ ./src/app.js
[0] @ multi webpack-hot-middleware/client?path=http://localhost:3000/__webpack_hmr babel-polyfill ./src/app.js
[0]
[0] ERROR in ./node_modules/tributejs/dist/tribute.js
[0] Module build failed (from ./node_modules/babel-loader/lib/index.js):
[0] Error: Couldn't find preset "env" relative to directory "/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/tributejs"
[0] at /Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-core/lib/transformation/file/options/option-manager.js:293:19
[0] at Array.map ()
[0] at OptionManager.resolvePresets (/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-core/lib/transformation/file/options/option-manager.js:275:20)
[0] at OptionManager.mergePresets (/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-core/lib/transformation/file/options/option-manager.js:264:10)
[0] at OptionManager.mergeOptions (/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-core/lib/transformation/file/options/option-manager.js:249:14)
[0] at OptionManager.init (/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-core/lib/transformation/file/options/option-manager.js:368:12)
[0] at File.initOptions (/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-core/lib/transformation/file/index.js:212:65)
[0] at new File (/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-core/lib/transformation/file/index.js:135:24)
[0] at Pipeline.transform (/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-core/lib/transformation/pipeline.js:46:16)
[0] at transpile (/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/node_modules/babel-loader/lib/index.js:50:20)
[0] @ ./src/js/components/MessageInput/index.js 55:17-37
[0] @ ./src/js/pages/BatchSend/index.js
[0] @ ./src/js/pages/Layout.js
[0] @ ./src/js/pages/index.js
[0] @ ./src/js/routes.js
[0] @ ./src/app.js
[0] @ multi webpack-hot-middleware/client?path=http://localhost:3000/__webpack_hmr babel-polyfill ./src/app.js
[0]
[0] ERROR in ./src/js/wfc/wfc.js
[0] Module not found: Error: Can't resolve 'node-loader' in '/Users/lijibin/Work/Tigase/wildfirechat_pc/pc-chat/src/js/wfc'
[0] @ ./src/js/wfc/wfc.js 17:19-80
[0] @ ./src/js/stores/sessions.js
[0] @ ./src/js/stores/index.js
[0] @ ./src/app.js
[0] @ multi webpack-hot-middleware/client?path=http://localhost:3000/__webpack_hmr babel-polyfill ./src/app.js
[0] ℹ 「wdm」: Failed to compile.

我开始以为是我环境的问题,卸载了我的npm环境,重装了最新版,重新下载和install 也不行

windows系统 修改当前用户信息时报错!

Uncaught Error: Could not call remote method 'modifyMyInfo'. Check that the method signature is correct. Underlying error: Wrong arguments, should be (int, string, func, func)
Underlying stack: TypeError: Wrong arguments, should be (int, string, func, func)

// 但是我看proto.min.js 里面是实现了的。
modifyMyInfo(type, value, successCB, failCB) {
proto.modifyMyInfo(type, value, () => {
if (successCB) {
successCB();
}
}, (errorCode) => {
if (failCB) {
failCB(errorCode);
}
});
}

pc-chat安装

按照windows的要求装了node,python等版本后;在npm install报错;
1573731497(1)

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.