Giter VIP home page Giter VIP logo

imsyy / splayer Goto Github PK

View Code? Open in Web Editor NEW
1.6K 8.0 379.0 36.06 MB

🎉 一个简约的音乐播放器,支持逐字歌词,下载歌曲,展示评论区,音乐云盘及歌单管理,音乐频谱,移动端基础适配 | 网易云音乐 | A minimalist music player

License: GNU Affero General Public License v3.0

HTML 0.15% Vue 71.86% JavaScript 27.43% SCSS 0.45% Dockerfile 0.07% CSS 0.04%
music music-player pinia vite vue splayer music-library javascript vue3 musicplayer

splayer's Introduction

SPlayer

一个简约的音乐播放器

main

说明

Important

严肃警告

  • 请务必遵守 GNU Affero General Public License (AGPL-3.0) 许可协议
  • 在您的修改、演绎、分发或派生项目中,必须同样采用 AGPL-3.0 许可协议,并在适当的位置包含本项目的许可和版权信息
  • 禁止用于售卖或其他商业用途,如若发现,作者保留追究法律责任的权利
  • 若发现未遵守 AGPL-3.0 许可协议的行为,本项目将永久停更
  • 感谢您的尊重与理解
  • 本项目采用 Vue 3 全家桶和 Naïve UI 组件库及 Electron 开发

  • 支持网页端与客户端,由于设备有限,目前仅适配 Win,其他平台可自行解决兼容性后进行构建

  • 仅对移动端做了基础适配,不保证功能全部可用

    请注意,本程序不打算开发移动端,也不会对移动端进行完美适配,仅保证基础可用性

  • 欢迎各位大佬 Star 😍

👀 Demo

🎉 功能

  • ✨ 支持扫码登录
  • 📱 支持手机号登录
  • 📅 自动进行每日签到及云贝签到
  • 🎨 封面主题色自适应
  • 🌚 Light / Dark 模式自动切换
  • 📁 本地歌曲管理及分类(建议先使用 音乐标签 进行匹配后再使用)
  • 🎵 支持播放部分无版权歌曲(可能会与原曲不匹配,客户端独占功能)
  • ⬇️ 下载歌曲(最高支持 Hi-Res)
  • ➕ 新建歌单及歌单编辑
  • ❤️ 收藏 / 取消收藏歌单或歌手
  • 🎶 每日推荐歌曲
  • 📻 私人 FM
  • ☁️ 云盘音乐上传
  • 📂 云盘内歌曲播放
  • 🔄 云盘内歌曲纠正
  • 🗑️ 云盘歌曲删除
  • 📝 支持逐字歌词
  • 🔄 歌词滚动以及歌词翻译
  • 📹 MV 与视频播放
  • 🎶 音乐频谱显示
  • ⏭️ 音乐渐入渐出
  • 🔄 支持 PWA
  • 💬 支持评论区及评论点赞
  • 🌓 明暗模式自动 / 手动切换
  • 📱 移动端基础适配
  • 🌐 i18n 支持

🖼️ screenshots

开发中,仅供参考

主页面

主页面

播放页面

播放页面

发现页面

发现页面

歌单页面

发现页面

评论页面

发现页面

本地音乐

发现页面

📦️ 获取

稳定版

通常情况下,可以在 Releases 中获取稳定版

开发版

可以通过 GitHub Actions 工作流获取最新的开发版,目前开发版仅提供 Win 版本

Dev Workflow

⚙️ Docker 部署

安装及配置 Docker 将不在此处说明,请自行解决

本地构建

请尽量拉取最新分支后使用本地构建方式,在线部署的仓库可能更新不及时

# 构建
docker build -t splayer .

# 运行
docker run -d --name SPlayer -p 7899:7899 splayer
# 或使用 Docker Compose
docker-compose up -d

在线部署

# 从 Docker Hub 拉取
docker pull imsyy/splayer:latest
# 从 GitHub ghcr 拉取
docker pull ghcr.io/imsyy/splayer:latest

# 运行
docker run -d --name SPlayer -p 7899:7899 imsyy/splayer:latest

以上步骤成功后,将会在本地 localhost:7899 启动,如需更换端口,请自行修改命令行中的端口号

⚙️ Vercel 部署

其他部署平台大致相同,在此不做说明

  1. 本程序依赖 NeteaseCloudMusicApi 运行,请确保您已成功部署该项目,并成功取得在线访问地址

  2. 点击本仓库右上角的 Fork,复制本仓库到你的 GitHub 账号

  3. 复制 /.env.example 文件并重命名为 /.env

  4. .env 文件中的 RENDERER_VITE_SERVER_URL 改为第一步得到的 API 地址

    RENDERER_VITE_SERVER_URL = "https://example.com";
  5. Build and Output Settings 中的 Output Directory 改为 out/renderer

    build

  6. 点击 Deploy,即可成功部署

⚙️ 服务器部署

  1. 重复 ⚙️ Vercel 部署 中的 1 - 4 步骤

  2. 克隆仓库

    将链接中的 example/repository.git 替换为你要克隆的实际仓库的地址

    git clone https://github.com/example/repository.git
  3. 安装依赖

    pnpm install
    # 或者
    yarn install
    # 或者
    npm install
  4. 编译打包

    pnpm build
    # 或者
    yarn build
    # 或者
    npm build
  5. 将站点运行目录设置为 out/renderer 目录

⚙️ 本地部署

  1. 本地部署需要用到 Node.js。可前往 Node.js 官网 下载安装包,请下载最新稳定版

  2. 安装 pnpm

    npm install pnpm -g
  3. 克隆仓库并拉取至本地,此处不再赘述

  4. 使用 pnpm install 安装项目依赖(若安装过程中遇到网络错误,请使用国内镜像源替代,此处不再赘述)

  5. 复制 /.env.example 文件并重命名为 /.env 并修改配置

  6. 打包客户端,请依据你的系统类型来选择,打包成功后,会输出安装包或可执行文件在 /dist 目录中,可自行安装

    命令 系统类型
    pnpm build:win Windows
    pnpm build:linux Linux
    pnpm build:mac MacOS

😘 鸣谢

特此感谢为本项目提供支持与灵感的项目

📢 免责声明

本项目部分功能使用了网易云音乐的第三方 API 服务,仅供个人学习研究使用,禁止用于商业及非法用途

同时,本项目开发者承诺 严格遵守相关法律法规和网易云音乐 API 使用协议,不会利用本项目进行任何违法活动。 如因使用本项目而引起的任何纠纷或责任,均由使用者自行承担。本项目开发者不承担任何因使用本项目而导致的任何直接或间接责任,并保留追究使用者违法行为的权利

请使用者在使用本项目时遵守相关法律法规,不要将本项目用于任何商业及非法用途。如有违反,一切后果由使用者自负。 同时,使用者应该自行承担因使用本项目而带来的风险和责任。本项目开发者不对本项目所提供的服务和内容做出任何保证

感谢您的理解

📜 开源许可

  • 本项目仅供个人学习研究使用,禁止用于商业及非法用途
  • 本项目基于 GNU Affero General Public License (AGPL-3.0) 许可进行开源
    1. 修改和分发: 任何对本项目的修改和分发都必须基于 AGPL-3.0 进行,源代码必须一并提供
    2. 派生作品: 任何派生作品必须同样采用 AGPL-3.0,并在适当的地方注明原始项目的许可证
    3. 注明原作者: 在任何修改、派生作品或其他分发中,必须在适当的位置明确注明原作者及其贡献
    4. 免责声明: 根据 AGPL-3.0,本项目不提供任何明示或暗示的担保。请详细阅读 GNU Affero General Public License (AGPL-3.0) 以了解完整的免责声明内容
    5. 社区参与: 欢迎社区的参与和贡献,我们鼓励开发者一同改进和维护本项目
    6. 许可证链接: 请阅读 GNU Affero General Public License (AGPL-3.0) 了解更多详情

📂 目录结构

查看目录结构详情

ChatGPT 写的,如有错误,请见谅

├── auto-imports.d.ts                     # 自动导入
├── components.d.ts                       # 自动导入
├── docker-compose.yml                    # Docker Compose
├── Dockerfile                            # Docker
├── electron                              # Electron
│   ├── main                              # Electron 主进程
│   │   ├── index.js                      # 主进程入口
│   │   ├── mainIpcMain.js                # 主进程与渲染进程通信
│   │   ├── startMainServer.js            # 启动主进程服务器
│   │   ├── startNcmServer.js             # 启动网易云音乐服务
│   │   └── utils                         # 主进程工具函数
│   │       ├── checkUpdates.js           # 检查更新
│   │       ├── createGlobalShortcut.js   # 创建全局快捷键
│   │       ├── createSystemTray.js       # 创建系统托盘
│   │       ├── getNeteaseMusicUrl.js     # 解灰
│   │       ├── kwDES.js                  # DES加密算法
│   │       └── readDirAsync.js           # 异步读取目录
│   └── preload                           # Electron 预加载脚本
│       └── index.js                      # 预加载脚本入口文件
├── electron-builder.yml                  # Electron Builder
├── electron.vite.config.js               # Electron Vite
├── index.html                            # 主页面 HTML
├── LICENSE                               # 项目许可证
├── nginx.conf                            # Nginx 配置
├── src                                   # 项目源代码
│   ├── api                               # API 相关
│   │   ├── ./..
│   ├── App.vue                           # 根组件
│   ├── assets                            # 静态资源
│   │   ├── emoji.json                    # 表情数据
│   │   ├── icon.json                     # 图标数据
│   │   └── themeColor.json               # 主题颜色数据
│   ├── components                        # 组件目录
│   │   ├── Cover                         # 封面相关组件目录
│   │   │   ├── CoverDropdown.vue         # 封面下拉组件
│   │   │   ├── MainCover.vue             # 主封面组件
│   │   │   ├── SpecialCoverCard.vue      # 特殊封面卡片组件
│   │   │   └── SpecialCover.vue          # 特殊封面组件
│   │   ├── Global                        # 全局组件目录
│   │   │   ├── MainLayout.vue            # 主布局组件
│   │   │   ├── Menu.vue                  # 菜单组件
│   │   │   ├── Pagination.vue            # 分页组件
│   │   │   ├── Playlist.vue              # 歌单组件
│   │   │   ├── Provider.vue              # 全局化配置组件
│   │   │   └── SvgIcon.vue               # SVG 图标组件
│   │   ├── List                          # 列表组件目录
│   │   │   ├── CommentList.vue           # 评论列表组件
│   │   │   ├── SongListDropdown.vue      # 歌曲下拉组件
│   │   │   └── SongList.vue              # 歌曲列表组件
│   │   ├── Modal                         # 弹窗相关组件目录
│   │   │   ├── AddPlaylist.vue           # 添加歌单组件
│   │   │   ├── CloudSongMatch.vue        # 云盘歌曲匹配组件
│   │   │   ├── CreatePlaylist.vue        # 创建歌单组件
│   │   │   ├── DownloadSong.vue          # 下载歌曲组件
│   │   │   ├── LoginPhone.vue            # 手机登录组件
│   │   │   ├── LoginQRCode.vue           # 二维码登录组件
│   │   │   ├── Login.vue                 # 登录组件
│   │   │   ├── PlaylistUpdate.vue        # 歌单编辑组件
│   │   │   └── UpCloudSong.vue           # 上传云盘歌曲组件
│   │   ├── Nav                           # 导航相关组件目录
│   │   │   ├── MainNav.vue               # 主导航组件
│   │   │   └── UserData.vue              # 用户数据组件
│   │   ├── Player                        # 播放器相关组件目录
│   │   │   ├── CountDown.vue             # 倒计时组件
│   │   │   ├── FullPlayer.vue            # 全屏播放器组件
│   │   │   ├── Lyric.vue                 # 歌词组件
│   │   │   ├── MainControl.vue           # 主控制组件
│   │   │   ├── PlayerControl.vue         # 播放器控制组件
│   │   │   ├── PlayerCover.vue           # 播放器封面组件
│   │   │   └── PrivateFm.vue             # 私人 FM 组件
│   │   ├── Search                        # 搜索相关组件
│   │   │   ├── SearchHot.vue             # 热门搜索组件
│   │   │   ├── SearchInp.vue             # 搜索输入组件
│   │   │   └── SearchSuggestions.vue     # 搜索建议组件
│   │   └── WinDom                        # 窗口 DOM 相关组件
│   │       └── TitleBar.vue              # 标题栏组件
│   ├── main.js                           # Vue 应用的入口文件
│   ├── router                            # Vue Router 相关文件夹
│   │   ├── index.js                      # Vue Router 入口文件
│   │   └── routes.js                     # 路由配置文件
│   ├── stores                            # Vuex Store 相关文件夹
│   │   ├── indexedDB.js                  # IndexedDB 数据库相关文件
│   │   ├── index.js                      # Vuex Store 入口文件
│   │   ├── musicData.js                  # 音乐数据相关文件
│   │   ├── siteData.js                   # 网站数据相关文件
│   │   ├── siteSettings.js               # 网站设置相关文件
│   │   └── siteStatus.js                 # 网站状态相关文件
│   ├── style                             # 样式相关文件夹
│   │   ├── animate.scss                  # 动画样式文件
│   │   └── main.scss                     # 主样式文件
│   ├── utils                             # 工具函数文件夹
│   │   ├── auth.js                       # 认证相关函数
│   │   ├── base64.js                     # Base64编码解码相关函数
│   │   ├── color-utils.js                # 颜色工具函数
│   │   ├── cover-color.js                # 封面颜色相关函数
│   │   ├── debounce.js                   # 防抖函数
│   │   ├── formatData.js                 # 数据格式化函数
│   │   ├── formRules.js                  # 表单验证规则
│   │   ├── globalEvents.js               # 全局事件处理函数
│   │   ├── globalShortcut.js             # 全局快捷键相关函数
│   │   ├── helper.js                     # 辅助函数
│   │   ├── parseLyric.js                 # 解析歌词函数
│   │   ├── Player.js                     # 播放器控制相关函数
│   │   ├── request.js                    # 网络请求相关函数
│   │   ├── throttle.js                   # 节流函数
│   │   ├── timeTools.js                  # 时间工具函数
│   │   └── userSignIn.js                 # 用户登录相关函数
│   └── views                             # Vue组件文件夹
│       ├── Artist                        # 艺术家相关组件
│       │   ├── albums.vue                # 艺术家专辑组件
│       │   ├── hot.vue                   # 艺术家热门组件
│       │   ├── index.vue                 # 艺术家主组件
│       │   ├── songs.vue                 # 艺术家歌曲组件
│       │   └── videos.vue                # 艺术家视频组件
│       ├── Cloud.vue                     # 云盘组件
│       ├── Comment.vue                   # 评论组件
│       ├── DailySongs.vue                # 每日推荐组件
│       ├── Discover                      # 发现音乐相关组件
│       │   ├── artists.vue               # 发现音乐艺术家组件
│       │   ├── index.vue                 # 发现音乐主组件
│       │   ├── new.vue                   # 发现音乐新歌组件
│       │   ├── playlists.vue             # 发现音乐歌单组件
│       │   └── toplists.vue              # 发现音乐排行榜组件
│       ├── History.vue                   # 历史记录组件
│       ├── Home.vue                      # 主页组件
│       ├── Like                          # 我喜欢的相关组件
│       │   ├── albums.vue                # 我喜欢的专辑组件
│       │   ├── artists.vue               # 我喜欢的艺术家组件
│       │   ├── index.vue                 # 我喜欢的主组件
│       │   ├── playlists.vue             # 我喜欢的歌单组件
│       │   └── videos.vue                # 我喜欢的视频组件
│       ├── List                          # 列表相关组件
│       │   ├── album.vue                 # 专辑组件
│       │   └── playlist.vue              # 歌单组件
│       │   └── dj.vue                    # 电台组件
│       ├── Local                         # 本地音乐相关组件
│       │   ├── albums.vue                # 本地音乐专辑组件
│       │   ├── artists.vue               # 本地音乐艺术家组件
│       │   ├── index.vue                 # 本地音乐主组件
│       │   └── songs.vue                 # 本地音乐歌曲组件
│       ├── Player.vue                    # 视频播放器组件
│       ├── Dj                            # 电台相关组件
│       │   └── index.vue                 # 电台主组件
│       │   └── type.vue                  # 电台分类组件
│       ├── Search                        # 搜索相关组件
│       │   ├── albums.vue                # 搜索专辑组件
│       │   ├── artists.vue               # 搜索艺术家组件
│       │   ├── index.vue                 # 搜索主组件
│       │   ├── playlists.vue             # 搜索歌单组件
│       │   ├── songs.vue                 # 搜索歌曲组件
│       │   └── videos.vue                # 搜索视频组件
│       │   └── djs.vue                   # 搜索电台组件
│       ├── Setting                       # 设置相关组件
│       │   └── index.vue                 # 设置主组件
│       ├── Song.vue
│       ├── State
│       │   ├── 403.vue
│       │   ├── 404.vue
│       │   └── 500.vue
│       └── Test.vue
└── vercel.json                           # Vercel 部署配置

⭐ Star History

Star History Chart

splayer's People

Contributors

dependabot[bot] avatar imsyy avatar jcfun avatar king-zhangbn 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

splayer's Issues

夜间模式识别问题

这个算不上BUG,但感觉有点影响体验,先打开深色模式再进入,此时pwa应用还是浅色模式,需要先关闭深色模式再打开应用才能切换到深色模式

建议在打开应用时先检测一次系统模式

浏览器:Safari
系统: IOS16.1.2

构建完成后打开完成请求错误

配置了.env里面的api,但是打开主页后没有其他的封面和歌单,只有一个导航栏,显示请求错误,不知道是不是哪里没有配置。

一些BUG反馈

  1. 移动端只有「首页」没有「发现」和「我的」这两个页面
  2. iOS端用Safari进入网页播放音乐无法获取专辑封面和暂停,但是可以上一首/下一首音乐
  3. 移动端播放器没有上下首的按钮,只能播放和暂停
  4. 歌词页面状态栏取色有问题
  5. 希望移动端歌曲页面新增上下首音乐和暂停播放键,而不是已进入就是歌词页(参考AppleMusic)
  6. 希望大佬的项目越做越好

支持开发者!

我弄了自己的nas , 一直都想搭建自己的音乐服务 来管理自己的歌曲, 希望开发者坚持下去!

跨域问题

你好,网站很喜欢,我部署后遇到跨域请求的问题,请问下这个代码怎么解决呀

关于验证码登录的疑问

我在翻源码时发现已经写了关于验证码登录的部分,并且网易云音乐API已经支持了,但是为什么最新版的SPlayer提示暂时无法使用呢?

歌词界面卡顿

image
建议作者优化或者出一下什么(流畅模式?)或者低特效中特效高特效的设置?

请问如何用nginx 部署呢

server {
listen 80;
server_name wyy.myxuechao.com;
return 301 https://$host$request_uri;

}

server {
listen 443 ssl;
server_name xxxxx.com;

ssl_certificate /etc/nginx/ssl/wyySsl/wyy.xxx.com_bundle.crt;
ssl_certificate_key /etc/nginx/ssl/wyySsl/wyy.xx.com.key;
ssl_protocols TLSv1.2 TLSv1.3;



location /api {
     proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Host $host;
     proxy_pass   http://101.92.31.3166:3000;
    

}
 location / {
        root /usr/share/nginx/wyy;
        index index.html;
    }

}

这么部署为啥接口通过不了啊?求大佬指点http://101.92.31.3166:3000直接访问接口可以通过

网易云解灰失败

本地部署的网易云解灰,代理用的我自己,但是有的时候会显示解灰成功,但是音乐不播放,把解灰项目部署到vercel上就直接用不了了,测试显示“Internal Server Error”,
但是本地会显示成功
image
大佬这个是什么原因

docker

写个docker呢。直接部署坑太多了

歌单自动播放问题

歌单按列表循环播放只会播放第一页的歌曲,播放完第一页最后一首又回到第一首了,不会自动播放下一页的歌曲。

部署问题

部署到vercel上时提示服务器错误,但是env文件的在线API地址我是填写了的,但还是没用,求解

歌词界面触发位置

将打开歌词界面触发的位置(箭头所示位置)改为方框内,需要打开歌词界面时可以很方便且快速地打开
Snipaste_2023-07-13_12-05-05

移动端播放问题

移动端播放如果焦点不在页面上的话就不会自动播放下一首歌,而是会在播放当前歌后暂停播放

当前歌曲播放失败,跳至下一首

尊敬的作者,根据我的了解,据我所知,NCM API的最新版本v4.0.8在Vercel上部署时需要在链接末尾添加&realIP=116.25.146.177。似乎由于这个原因,我的网页无法获取信息和播放音乐。您能帮助我吗?

我的音乐网页是:https://music.kawaiicassie.io.vn/
NCM API的网页是:https://api-music.kawaiicassie.io.vn/

但仍然有一些歌曲可以正常播放。
请问您能为我做些什么来解决这个问题吗?

播放问题

当列表中只有一首歌时。播放完后不能反复播放,也不能实现拖动进度条播放。

使用UNM-SERVER解锁的一些问题和我个人解决方案

目前使用UNM-SERVER解锁后,如果以QQ音乐优先,匹配以后会报错500,提示匹配失败,
image
这里我的方案是kuwo音源优先。此时能拿到kuwo音源的歌曲,不过由于是http协议,访问资源会报错403,
这里我的方案是部署此反代项目 https://github.com/beer-on-ice/vercel_reverse_proxy,成功后得到一个反代的域名如 http://xxx.vercel.app
image

然后在SPlayer vercel项目变量中添加 VITE_PROXY_API = https://xxx.vercel.app/proxy/
image

最后将src/components/Player/index.vue中第367行替换为
player.value = createSound(res.data.url.replace(/\?bitrate/, '').replace(/http:\/\//, import.meta.env.VITE_PROXY_API));
image

不过目前每次随作者更新代码后,再改动比较繁琐,希望作者能修复下,感谢作者项目

歌词显示问题

截屏2023-05-22 17 31 05
Mac端safari浏览器-逐字歌词 字的周围有黄色细边框,望修复,谢谢

歌单添加歌曲BUG

举个例子描述一下问题:
假设歌单A中有40首歌,且其中没有歌曲a,向歌单A其中添加歌曲a,此时歌单A中显示有41首歌曲且有歌曲a,无BUG,但是只要再次像歌单A中添加歌曲a,这时会弹窗显示添加成功,且歌单A中有42首歌,但用官方的app查看只有41首歌,且只有第一次添加的歌曲a

建议在添加歌曲时查看歌单是否已经添加该歌曲,并给出是否重复添加的选项

列表循环

列表循环播放完最后一首歌后又会重新播放最后一首歌大约一秒钟,之后才会播放列表里的第一首歌

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.