Giter VIP home page Giter VIP logo

stash-reviewers-chrome-extension's Introduction

Bitbucket Server Reviewers Groups - Extension

extension art

โš ๏ธ if you have stash server (previous version of bitbucket) please switch to 'stash-server-version' branch

This chrome/firefox extension allow to define groups of reviewers in Atlassian Bitbucket Server (previously stash) to bulk add them when creating or updating pull request.

Features

  • Add button in pull request creation page to add group of reviewers
  • Add comments notification icon in header toolbar
    • Comments are from unreviewed pull requests (PR you see in your inbox)
    • A row always represent the first comment of a hierarchy
    • Sub-comments/tasks are represented by the icon on the right of the row
    • Each time there is a new comment/task the line of the first message of the hierarchy is highlighted and the red badge of the notification icon is increased (on each page load. there is no ajax poll request)
    • Badge disappear after you click on the icon to open the panel and close it
    • Highlight disappear when you visit the related PR page
    • Highlight state is save on the localStorage
    • Note: there is 2 kind of highlight: strong blue is when you see it for the first time (open panel for the first time), light blue is when activity was already there when you opened panel previously.
  • Add filter to the PR list
    • filter by: Author, Reviewers, Participants (people who participate to the PR even if they are not reviewers), Approvers (PR approved by specific reviewers), Direction, Branch
    • Note: each filter is a AND per PR and not a OR.
    • It mean that you can add only one Author or you will get no result (since there is only one author by PR).
    • And ALL reviewers/participants/approvers must exist in the PR or it won't be display
  • Add highlighted header to outdated file in pull request details page instead of the small sticker on the right to improve readability
  • Add clickable branch text (origin and target) in the pull request details page to go to the corresponding repository easily
  • Add a sticker on the right of the 'branch overview' page of a repository to list all pull requests comming from this branch (OPEN/MERGED/DECLINED)
    • Note: sticker are clickable to go directly to the corresponding pull request
  • Add a link to start a jenkin build in one click on the pull request details page
    • Note: you can add your hipchat username into the config panel of the extension to receive build notification
  • Add template button to PR editor
  • Check for new version
  • Settings
    • user can choose features to enable/disable inside extension option
    • user can choose to receive desktop notification only for comments on his PR, mention or answer.
    • user can map a repository name to a specific name to match his remote name in git

Installation

Chrome

you can find this extension on chrome webstore here: https://chrome.google.com/webstore/detail/bitbucket-server-extensio/hlagecmhpppmpfdifmigdglnhcpnohib

OR from the code source of this repository:

  • clone this repository
  • Go to chrome settings->extensions (extension manager)
  • Check the "Developer Mode" checkbox
  • Click on "Load unpacked extension" button.
  • From there choose the extension/chrome/src folder of this repository.

Firefox (webextensions)

you can find this module on mozilla addons website here: https://addons.mozilla.org/en-US/firefox/addon/bitbucket-server-extension/

OR from this repository:

  • download last .xpi (according to version number) from extension/firefox/dist/
  • go to extensions panel and click on the tools icon on the right next to the search field and select : Install add-on from file.
  • then browse extension/firefox/dist and select the xpi file.

Note: if ff version is greater than 41 you will have to change xpinstall.signatures.required value to false in about:config page.

Configuration

Enable/Disable features

just go to options panel and enable or disable features you want.

Configure reviewers groups

A "Stash" icon will appear on the top right corner of chrome window. Click on it. It will ask you to add a json to describe which group you want to create with which reviewers.

Configuration

Json format is as follow :

{ "groups": [ {
    "groupName":"first group name",
    "reviewers": ["first reviewer name or email"]
  },
  {
    "groupName":"second group name",
    "reviewers": ["first reviewer name or email", "second reviewer name or email"]
  } ] }
Using centralized lists

If you want to share one list between more users. You need to upload .json file so it is accessible by everyone. Then you just add URL to URL to json field. There can be more sources. All lists from files and from JSON field are merged together. Remote lists are reloaded on launch and every 6 hours.

Add Urls

After that when you will go to pull request creation page or update page a dropdown will appear after reviewers list with a list of groups you defined.

Add Group

Note: the extension will make a bitbucket server api request to find reviewers. It will simply send the string you added in the reviewers array as search term. Normally if you add email or username as recommanded API should return only one user. You can also enter a name but in this case if the API return more than one user, only the first one will be added.

Using centralized template

If you want to share template between more users. You need to upload template in text format on server accessible to everyone. Then just add URL in template tab to Template URL and save. After save, template is downloaded overwrites manual template stored. Remote template is reloaded on launch and every 6 hours.

Template Tab

Development troubleshooting

Firefox in development mode logs Error: The storage API will not work with a temporary addon ID. Please add an explicit addon ID to your manifest. For more information see https://bugzil.la/1323228.

How to fix: add a temporary key to your manifest.json:

{
	"applications": {
		"gecko": {
			"id": "[email protected]"
		}
	},
	"manifest_version": 2,

stash-reviewers-chrome-extension's People

Contributors

abborg avatar dragouf avatar mesolido avatar pavelvanecek avatar ra100 avatar stellarashes 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

stash-reviewers-chrome-extension's Issues

CheckForUpdate is failing, Cant reach github message is showed

Hello!
When I updated the plugin to 2.2.14 version(Mac 10.13.2) I got the following dialog:

New version of the extension (cant.reach.github)
Please check you added your bitbucket server domain to extension manifest.json

It seems like chrome can't reach github in order to check the last version of the plugin.
This request returns a undefined response in data:

window.communication.runtime.sendMessage(window.chromeExtId, {
					method: 'GET',
					action: 'xhttp',
					url: 'https://raw.githubusercontent.com/dragouf/Stash-Reviewers-Chrome-Extension/master/version'
				}, function(data) {
					if(!data) {
						data = {
							response: 'cant.reach.github'
						};
					}

But the endpoint works fine if i get this URL from chrome. It responses 2.2.14 version

How can solve it? I don't know how to add the bitbucket server to the manifest.

Feature Request - Pull JSON from remote URL

This would be super useful since we could have 1 place to maintain the PR reviewers JSON and expose it as a web service and helps when the team/reviewers list constantly change.

Ability to add a local code reviewer JSON file

I would like to be able to reference a local JSON file that contains groups of reviewers in the URL to json field in Reviewer Groups via a file URI. For example, file:///folder/reviewers.json.
This would also help resolve, though not entirely, issue #24 because that file could be put into a shared repo.

Build status not visible

Hi,

I have configured teamcity to push build status. Normal stash view shows column with this status (green or red sticker).

Clicking the extension icon no longer navigates to bitbucket

Prior to the latest release, clicking the icon would navigate to the bitbucket site you have locally. Mine is pointed to a internally hosted bitbucket server.

Clicking the icon now shows this:

Screen Shot 2020-10-29 at 15 37 01

Modifying this does nothing and will not save anything entered.

Favorite/Star repos

One of the things that bugs me about BitBucket server is that I have yet to figure out a way to star repos and keep them in a list like you can on GitHub and then see the list to navigate easier. I work for a very large company and my organization under it alone has a few hundred repos let alone the other organizations I have access to because of my role so it can be annoying to find them. I realize that I could bookmark the repos but given my role, I have a ton of those as well.

Would this be a possible feature to add to this project?

Removing filter

Is there an easier way to prevent the filter from being injected without modifying stash_page_injector.js?

Extension Crashes Frequently

Browser: Chrome 55.0.2883.95

Frequently, the extension crashes with the only notice being either the icon disappears completes and it has to be reloaded using in the Settings or I'm giving a Notification which allows be to click and reload the plugin.

Are there any logs to examine to see what the possible cause may be?

Thanks!

Add review group does not work because of wrong server request

When selecting a group the json request is sent to a wrong location.
https://server.net/rest/api/latest/users?... is sent
Correct would be:
https://server.net/git/rest/api/latest/users?...

As workaround, is there a way to customize the location?

Button doesn't appear

Hi,
I'd love to try and use this plugin but am having trouble getting the group button to appear. I've read some of the other issues and still am unable to get the plugin to work. I see this error on every stash page I visit:
batch.js?locale=en-US:2 Uncaught Error: stash-plugin/header-notification missing aui/flag

Here's what I have:

  • Atlassian Stash v3.6.1
  • Chrome Version 49.0.2623.75 m
  • Stash-Reviewers-Chrome-Extension-stash-server-version
  • Stash is on a private network with limited access to WAN

Here's what I've done:

  • Updated manifest.json by replacing two instances of <your_stash_domain_here> with my stash domain which is on a port other than 80.
  • Run this command in the chrome console: WRM.require("wr!" + 'com.atlassian.stash.stash-web-api:state') which gave me this message: Downloading resources: batch.js?locale=en-US:215

Not sure if there are external javascript files that need to get downloaded for this to work, but so far have not been able to get it to work.

Please help, thanks!

Getting error trying to use this extension with bitbucket

Uncaught Error: AMD module bitbucket-plugin/pullrequest-list-modifier must not depend on internal module(s) bitbucket/internal/feature/pull-request/pull-request-table.

The server extension drop list isn't even showing on the PR page. I'm just getting a console error.

Doug

"My Pull-Requests" drop down is empty

The drop down with My Pull-Requests (you can open it by typing g and i) is empty on all pages.

The exception I found is http://{url-of-repository}/pull-requests. On this page the drop-down is populated correctly.

Chrome Browser Crashing when Plugin Enabled

When I have the plugin enabled for Chrome the browser will regularly crash on me and I will have to re-open it and my tabs. Do you have any advice or ideas on how I can resolve this issue? When I disable the plugin the browser no longer crashes and seems to work fine. (I have other co-workers who have seen this same issue)

Dropdown button doesn't appear

Hello,
At first, I just want to say that this plugin is really great. However, I have one problem with it. Whereas I was able to install the plugin (both on Firefox and Chrome), there is no button on the pull request page. The tool appears in the browser, so I am able to define and save groups, but the button to choose the group on the reviewers (pull request) page does not.
I am using Stash v.4.2.0, which is actually Bitbucket now. Is there any chance this will work properly, or am I doing something wrong?

Regards,
Damian

Security Contact?

Hi @dragouf,

Is there a good way to disclosure security issues with this extension without creating a public issue? Thanks.

PR table isn't formatting properly

When loading the Pull Requests page (where it lists out all the PRs that are open), it no longer succeeds at styling the table.

I receive the following error in the console:
not able to load plugin PR filter table Error: No bitbucket/internal/feature/pull-request/table/pull-request-table

This error is produced from a try/catch found on line 2117 in the stash_page.js.

Not really sure what's missing, but I wonder if it's my BitBucket enterprise version being either too up to date, or too old? Seems like a bitbucket source file it uses to parse out the table isn't available or being served by my BitBucket server anymore.

Doesn`t work with BitBucket 6.*?

I installed this Chrome extension but when creating a pull request any extension's controls don't show up on the bitbucket page. Also, I don't see the extension's controls on any BB's page. I was needed a group of reviewers functionality
Is it work with BB 6.*?
Also, Am I right, that I don't need to install this extension in any form on the BitBucket server itself, only install it in a client`s Chrome, set up reviewers groups there (in chrome) and visit BB create pull request page and reviewers groups button must show up on that page near to the reviewers input box, right?

My setup: BB 6.8, up-to-date Chrome (v.79)

[Exploitable Vulnerabilities Found in Your Chrome Extension Bitbucket Server Extension]

Dear extension developer,

We are scientific researchers at CISPA in Germany. We are contacting you to disclose the results of a study we have performed on browser extensions.

We found that your browser extension Bitbucket Server Extension [https://chrome.google.com/webstore/detail/bitbucket-server-extensio/hlagecmhpppmpfdifmigdglnhcpnohib] presents the following vulnerability.

Your extension allows any webpage to make remote requests to any web server on behalf of the user, and retrieve sensitive information from there. In particular, if the user is logged into a sensitive website such as her mail provider, social network websites, bank websites or any website (Gmail, Twitter, Facebook, Instagram, etc.), any (malicious) webpage can use your extension to connect to those websites and retrieve sensitive information from them.

To summarize, your extension can be exploited by any (malicious) web page in order to affect the security and privacy of potentially sensitive data (websites data) of the users of your extension.

We have built a proof-of-concept, accessible at https://swag.cispa.saarland/extension_pocs/hlagecmhppbbc3q2fwvi/
where we explain and demonstrate how your extension is vulnerable, how attackers can exploit it, and what kind of sensitive user data it can leak to the attackers. Please feel free to contact us if you need more input from us regarding the proof-of-concept.

Finally, we would be very happy to hear back from you, in order to incorporate your feedback (anonymized) in our research paper. In particular, can you confirm the vulnerabilities? Have you/will you address them in the near future? Do you have further comments ? Of course, be assured that we are not going to publicly release the exploits we are sharing with you.

Best regards,
CISPA Researchers

Pull requests are not displayed on pull-requests page

I have one pull-request in the repository, but during pull-requests page render it first shows up and in the end disappears.
image

I'm using the latest extension version. If I disable the extension, the pull-request is properly displayed.

[Exploitable Vulnerabilities Found in Your Chrome Extension Stash Extension]

Dear extension developer,

We are scientific researchers at CISPA in Germany. We are contacting you to disclose the results of a study we have performed on browser extensions.

We found that your Chrome extension Stash Extension [ https://chrome.google.com/webstore/detail/stash-extension/kpgdinlfgnkbfkmffilkgmeahphehegk ] presents the following vulnerability.

Your extension allows any webpage to make remote requests to any web server on behalf of the user, and retrieve sensitive information from there. In particular, if the user is logged into a sensitive website such as her mail provider, social network websites, bank websites or any website (Gmail, Twitter, Facebook, Instagram, etc.), any (malicious) webpage can use your extension to connect to those websites and retrieve sensitive information from them.

To summarize, your extension can be exploited by any (malicious) web page in order to affect the security and privacy of potentially sensitive data (websites data) of the users of your extension.

We have built a proof-of-concept, accessible at https://swag.cispa.saarland/extension_pocs/kpgdinlfgnbpo9tfa06p/
where we explain and demonstrate how your extension is vulnerable, how attackers can exploit it, and what kind of sensitive user data it can leak to the attackers. Please feel free to contact us if you need more input from us regarding the proof-of-concept.

Finally, we would be very happy to hear back from you, in order to incorporate your feedback (anonymized) in our research paper. In particular, can you confirm the vulnerabilities? Have you/will you address them in the near future? Do you have further comments ? Of course, be assured that we are not going to publicly release the exploits we are sharing with you.

Best regards,
CISPA Researchers

Drop down missing

The drop down to select the group you want on a pull request does not appear when you create a pull request by clicking on a branch in the Branches view and clicking create pull request from there.

Bitbucket internal JS modules are deprecated

As of Bitbucket Server 6.0 our internal JavaScript modules have been deprecated in favour of using only public API JS modules. Please see our community announcement about the release of Bitbucket Server 6.0 (and note also some discussion on one of the 6.0 EAP announcement posts that may be valuable).

If you'd like you can make a feature request for specific modules to become API / exposed for consumption outside of our internal modules or take a look at existing open feature requests for JavaScript API modules.

Regards,

John van der Loo
Developer, Bitbucket Server

Reviewer groups drop down only shows up in Edit mode on Atlassian Stash v2.8.3

Stash v2.8.3 on the pull request creation page throws the following exception:

batch.js:18297 Uncaught Error: Module 'stash/api/util/state' has not yet been defined.

This is using extension version 1.6.6

Running:

WRM.require("wr!" + 'com.atlassian.stash.stash-web-api:state')

simply delivers back the promise object.

Add reviewers dropdown for PR comments in toolbar

There are times when I'd like to mention a group of reviewers in a comment for a PR. It would be nice if the dropdown appeared in the comment markup toolbar. When a reviewer group is clicked, it would add the names of the users where the cursor is in the textarea of the comment.

Add reviewers button is missing

The add reviewers button is missing on Stash's create pull request page.

There is an error message on the console:

Uncaught TypeError: Cannot read property 'sendMessage' of undefined
    at stash_page.js:30
    at stash_page.js:2144

Browser version:
Google Chrome: 66.0.3359.139 (64 bit)

Plugin version:
Bitbucket Server Extension 2.2.12

Update the extension on the Chrome store

The extension on the store was last updated on October 28, 2015 which means it doesn't have the fix for the issue mentioned in this ticket and this closed ticket.

That issue occurs for me when I use the plugin on the Chrome store but does not occur when I check out the repo and load the plugin.

HTTPS seems to break plugin

Everything worked fine up until a month ago when our stash repo went HTTPS. Now I can no longer assign members to the pull request. The group names are still there, but selecting a group name has no affect.

Support for multiple templates

My use case has different templates for different projects. Having the ability to store and use multiple templates would be a valuable addition.

Extension doesn't work with Stash v2.12.2

First, I tried the extension from the Chrome store, it didn't work for our private instance of Stash.

Then I tried the developer version, I replaced <your_stash_domain_here> with the domain + port for our local Stash instance, e.g. stash.example.com:8081, this resulted in the following section of code in manifest.json:

  "matches": [
    "http://*/*/pull-requests?create*",
    "https://*/*/pull-requests?create*",

    "http://*/*/pull-requests/*/overview*",
    "https://*/*/pull-requests/*/overview*",

    "http://*/*/repos/*/browse*",
    "https://*/*/repos/*/browse*",

    "*://stash.example.com:8081/*"
  ]
}
],
"externally_connectable": {
"matches": ["*://stash.example.com:8081/*"]
},

I then went to load the unpacked extension in Chrome, I pointed it to the src folder and got this error:

Failed to load extension from: ~\AppData\CustomApps\Stash-Reviewers-Chrome-Extension\extension\chrome\src
Invalid match pattern '://stash.example.com:8081/'

And it listed the file starting with:
{
"manifest_version": 2,

Plugin creates multiple persistent tcp connections to stash server.

The plugin is creating 6 persistent tcp connections to the stash/bitbucket server. These connections are created even if all the plugin features are disabled (ie, only using the reviewer groups)

Several people in our organization are using this plugin and is causing noticeable stress on the server. Is there anyway to disable this behavior? The only thing i see that would really need a persistent connection is the desktop notification, which is disabed.

Centralised reviewers list

Love the extension.

Our team keeps changing and we'd like to have a centralised location to store the stash reviewers. Would love this feature in this extension.

Pull request filters aren't working

When I'm viewing pull requests, the Open/Merged/Declined dropdown works fine, but adding users to the Authors/Reviewers/etc. filters doesn't have any effect. The search/add user functionality is fine but the filter doesn't seem to do anything.

My expectation is that adding a single user to the Authors Filter would show pull requests only from that author. The actual result is the exact same list as before the filter was changed.

Inbox Dialog Doesn't Load

So a few weeks ago the inbox stopped working when I have this plugin enabled. I haven't been able to track down the exact cause yet though. But when I click the inbox it just opens with blank content (regardless of whether I have PR's open). It looks like this...

Alt text

Also have an error in the JS console...

descriptor.js?_statichash=baf6aa6069686b3fea866e1cb01526b4-T%2F1017787519%2Fed8fbbd%2F112%2F3.8.0&locale=en-US:formatted:15 Uncaught TypeError: Cannot read property 'repoName' of undefined
    at view (descriptor.js?_statichash=baf6aa6069686b3fea866e1cb01526b4-T%2F1017787519%2Fed8fbbd%2F112%2F3.8.0&locale=en-US:formatted:15)
    at t (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)
    at Object._getWebPanels (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)
    at c.getWebPanels (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)
    at b.value (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)
    at p._renderValidatedComponentWithoutOwnerOrContext (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)
    at p._renderValidatedComponent (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)
    at performInitialMount (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)
    at p.mountComponent (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)
    at Object.mountComponent (web-section.js?_statichash=7e1d6964fe49e5c2aff9cb697c396da1-T%2F1017787519%2Fed8fbbd%2F112%2F5b45cad464152ad2ffe79d3aaa653efe&analytics-enabled=true&analytics-uploadable=true&locale=en-US&nps-acknowledged=true&nps-enabled=true&supportedApplication=true:formatted:1)

But everything in the stack trace originates from the bitbucket server js files, which is why I'm having a hard time nailing down the cause here.

We are running BitBucket v5.0.2. I'm not sure what all plugins we have enabled as I am not a BitBucket admin, but I know we have Sonar, Workzone, and Awesome Graphs (based on the stuff I can see in my own repositories settings)

template url not working in firefox

The box does not show up at all; I tried fixing it by addings divs around the

in popup.html. It does show up then but when I create a pull-request I still don't see the template loading.

			<div id="template" class="tab-pane">
				<div>
					<div class="form-group">
						<label for="template_text">Template:</label>
						<textarea class="form-control" rows="10" id="template_text"></textarea>
					</div>
				</div>
				<div>
					<div class="form-group">
						<label for="template_url">Template URL:</label>
						<input class="form-control" id="template_url" type="text">
					</div>
				</div>
			</div>

Pull requests page is broken

With Bitbucket v5.13.0 the pull requests page quickly flash w/ the original content without the extension and then it become empty.

Currently using version 2.2.15

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.