Giter VIP home page Giter VIP logo

bestofjs's Introduction

Best of JS monorepo

Monorepo for Best of JS application, setup in August 2023. Made of 4 applications and one package:

├── apps
│   ├── admin   // WIP
│   ├── backend // WIP
│   ├── bestofjs-nextjs // Best of JS main app
│   └── bestofjs-webui
└── packages
    └── db // WIP

image

Concept

Best of JS gathers the latest trends about open source projects related to the web platform and Node.js: JavaScript and TypeScript of course (client and server side) but also HTML, CSS, languages that compile to JavaScript, alternative runtimes such as Deno and Bun...

This is a place where full-stack developers can find the best components to build amazing web applications.

Tags

Projects are carefully classified under tags such as:

  • Component Toolkits: Sets of UI components for your favorite framework
  • UI frameworks: solutions to build front-end applications that run in the browser: React, Vue.js, Angular...
  • Node.js frameworks: solutions to build server-side applications with Node.js: Express, Nest, Fastify...
  • Charting: data visualization and chart libraries: D3, ChartJS, ECharts...
  • And many more!

Community-driven

If you find an interesting project to add, you can suggest it by creating an issue here.

You can sign-in with your GitHub account to bookmark the projects you want to follow closely.

How it works

We maintain a list of interesting projects related to Node.js and the web platform in a database.

Everyday a scheduled task checks project data from GitHub and generates data consumed by the web application. Basically Best of JS tracks the number of stars of a curated list of about 2000 projects.

The web application displays the variations over the last days, weeks and months in order to show the trends about the JavaScript landscape.

Show your support!

If you find Best of JS useful, show your appreciation by starring the project or becoming a sponsor:

Sponsors

Backers

Thank you and don't forget: we are all made of stars star!

Best of JS is a project created and maintained by Michael Rambeau, in Osaka, Japan.

bestofjs's People

Contributors

andresgottlieb avatar bblackwo avatar blackpr avatar chuongtrh avatar clarkdo avatar coliff avatar deadcoder0904 avatar dependabot[bot] avatar desmondhume avatar drwpow avatar eliancodes avatar evomatic avatar flamrdevs avatar michaelrambeau avatar nvh95 avatar oliviertassinari avatar prudwell avatar remysabliet avatar saulsilver avatar styfle avatar tatomyr avatar vasfvitor avatar zawarudo 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bestofjs's Issues

Remove deprecated projects

Trendy projects today willl no more be trendy tomorrow, projects live and die...
We need a system to remove projects from the application, it could be a flag "deprecated".
I think we could stop taking snapshots for "deprecated" projects, since it means "deprecated for ever".
Maybe we also need a flag to just disable a project (stop displaying in the application) but keep taking snapshots (in case of a project "revival")

Examples of deprecated projects:

  • famo.us
  • React UI builder (=> it became "structor")
  • Some projects with "Flux" tag maybe, as Flummox (for example) whose README.md asks users to use Redux instead.

Include more projects in the `Node.js framework` category

Discussion with Mark Nadal

We had an interesting discussion with @amark, from Gun project about the scope of the Node.js frameworks tag.

This is what Mark replied when I said that the category was limited to libraries that can be used to build REST APIs:

If you feel like NodeJS Framework should stay REST-only then that is your call and I respect that, it just doesn't seem descriptive. I (and if I do a quick google) instinctively think of things like, yes Express, but also Meteor, Parse, Derby, Connect, Flatiron, SocketCluster, etc., just some of my observations:

  • Sails and Feathers are listed (even Nest also does it), yet have realtime/websocket abilities, but Meteor, etc. are not.
    Perhaps because Meteor is frontend as well? Yet:
  • Flatiron, After.js, etc. are listed.

My definition (which you don't need to use) is a "NodeJS Framework is a tool that abstracts client-server interactions for the developer, so they can focus on their own API and routes rather than handling the network layer itself."

If this is true, a tools that allow for developers to use the following code pattern would qualify:

var fw = require('framework');

fw.start(require('http'));

fw.on('myApp/users', function(data){
  console.log(data);
  if(data.foo){
    return fw.next(data);
  }
  fw.reply(data + 1);
});

The reason why this definition excludes ws by itself is because ws doesn't provide any framework for handling messages/rooms/routes, in the same way HTTP by itself doesn't do that.

However tools like Express, SocketCluster, Feathers, Gun, etc. do, their API abstracts the communications/networking and gives an API to the user that lets them declare their application structure. Whether this is REST or Realtime or not doesn't seem relevant, just the key: Does it provide routing and middleware?

Thanks for letting me share my thoughts, and I appreciate how much work you've already put into this, my core proposal is:

GUN provides many of the same tooling (routing and middleware) as Feathers, Sails, Nest, it is isomorphic like flatiron but not monolithic like Meteor. I think my proposal applies to including a few other projects beyond just GUN, but doesn't open the floodgates. (Although given that "Full-stack framework" tag only has 6 items listed, I don't think it would be unfair to merge those 6, including Meteor, into "NodeJS Framework" tag which has 30, when React and Vue have their own tags, where Vue has 36 as well.)

This issue sums up the moves related to the choice of extending the scope of the Node.js frameworks tag, in the way described by Mark.

Display Github "emojis" in project description

Some project descriptions contain emojis.
Example:

So we have to transform the project description, using Github API to get emojis URL: https://api.github.com/emojis

BEFORE:

Node.js JavaScript runtime :sparkles::turtle::rocket::sparkles: 

AFTER:

Node.js JavaScript runtime 

<img class="emoji" title=":sparkles:" alt=":sparkles:" src="https://assets-cdn.github.com/images/icons/emoji/unicode/2728.png" height="20" width="20" align="absmiddle">

<img class="emoji" title=":turtle:" alt=":turtle:" src="https://assets-cdn.github.com/images/icons/emoji/unicode/1f422.png" height="20" width="20" align="absmiddle">

<img class="emoji" title=":rocket:" alt=":rocket:" src="https://assets-cdn.github.com/images/icons/emoji/unicode/1f680.png" height="20" width="20" align="absmiddle">

<img class="emoji" title=":sparkles:" alt=":sparkles:" src="https://assets-cdn.github.com/images/icons/emoji/unicode/2728.png" height="20" width="20" align="absmiddle">

Thinking about a new ranking system

How could we rank projects in order to show the trending projects?
Could we assign a single score to all projects and show projects sorted by this score?

The Github API gives access to "stargazing" events.
For a given project we can get a list a events that tell us who added a star and when it was.

2 rules I'd like to handle when handling stargazing events:

Time effect

The effect of star gazing events decreases with time.
If someone added the star one year ago, it's far less important that a star added yesterday.

image

Follower effet

image

The more followers on Github a user has, the more important the event is.
A user with a lot of followers on Github is considered as an expert.

Add pagination for long lists of project

When displaying the "ALL PROJECTS" page (https://bestof.js.org/projects), only the first 50 projects are displayed.

Same problem for tag pages that contain more than 50 projects, which only happens for the React tag right now.

For performance reasons, we cannot display all projects in one page, the application can become laggy if more than 100 project cards are displayed.

To face this problem we could implement a kind of infinite scrolling solution (using http://www.reactvirtualized.com/ for example) but the simplest solution is to implement a client-side pagination.

Considering zeit.co/now for microservices

The application calls micro-services created on webtask.io platform.

2 micro-services were created:

  • get-readme makes a call to Github API to fetch the project README
  • user-content-api is the API to read / create / update content generated by the users (links and reviews about projects)

Let's check if zeit.co/now can be a good option...

Add aggregated data about license?

Here is the feedback I got from Martin @martinheidegger in 2017 September:

The aggregations are really important, ie. If all libraries are MIT

Dependencies and subdependencies
And rather than see the license of all a combination of licenses:: i.e. 95xMIT, 3xBSD

But I feel like there is some aggregation information that could be REALLY valuable, is not available and could be fairly easily done.
i.e. If there is one dependency in your tree of a different license than others: that is a major red flag. Particularly if the license is "Unlicensed"

Migration from divshot.io to firebase

Now https://divshot.com/ is used to host the JSON file that contains project data consumed by the web application.
Every morning a batch run by SemaphoneCI updates the JSON file:
http://bestofjs-api-v1.divshot.io/projects.json

divshot.io has been bought by Firebase, service will be closed in December.

services will shut down on Monday, December 14, 2015

How to migrate from divshot.io to Firebase: http://docs.divshot.com/migrate

A cool feature we may miss from divshot: the ability to deploy to 3 environments (development, staging end production)

In Webpack settings, local environment is connected to the "development" version of: data: http://development.bestofjs-api-v1.divshot.io/projects.json

With Firebase we may need to create 2 applications: "api-dev" and "api" for example, to reproduce this behaviour.

No more hash bang URLs

hashbang URLs are really convenient to deploy single page applications on any web host but there are 2 downsides:

  • They are not really nice to see, especially because of the k querystring parameter automatically added by react-router http://bestof.js.org/#/?_k=q6h6qa
  • They prevent us from using the hash for what they should be used to (anchors inside pages)

Let's try to get rid of hashbang URLs, using the approach described in this project: https://github.com/rafrex/spa-github-pages

Personalized results

Hey Michael!

One killer feature would be to be able to add projects I am interested in or use, and I can see the state of each project on a personal page (like my projects or something). Many times I keep a list of libraries/projects that I use and silently some of them get outdated, or stop getting maintained, and I want to be aware when something like this happens, or when a project loses popularity.

For a start I think the same view as for Popular/Trending can be used, but personalized (and optionally private) for me. This can be a simple list of URLs that I specify, and I get back the stats for each of the projects.

What do you think? I am a bit busy for the next two weeks, but after that I can help out with the implementation.

Use Redux and upgrade react and react-router modules

Use redux instead of reflux to manage actions and state, to make the application scale up easily.

First steps:

  • Use react and react-dom 0.14.0 instead of react 0.13
  • Use react-router 1.0.0-rc3 instead of ^1.0.0-rc1
  • add redux, redux-react and redux-thunk
  • check what is the purpose of "redux-logger": "^2.0.2" and "redux-router": "^1.0.0-beta3" also used in real-world example
  • Use "dumb" React components in the "components" folder, and smart component(s) in a new "containers" folder...

Allow custom URL for project icons

By default, the project icon is the Github repository owner's avatar (see #23 )

But we can define a specific SVG file in the admin client.
So far this feature has been used for 6 projects:

  • Flow
  • Preact
  • You don't know JS
  • Redux
  • Awesome
  • React

The SVG markup is included in project data (projects.json)
It will be better (more performant and more flexible) if we could define a project logo URL instead of the whole SVG.
It would be able to address requests of custom icons (see michaelrambeau/bestofjs#74).

preferred way to provide tagging suggestions?

Sorry if this is already addressed somewhere - I did not see it mentioned in the README ...

How do you prefer to receive suggestions for potentially missing tags?

For example, the Taskr project is a task runner, like Grunt and Gulp, but unlike Grunt and Gulp, it does not have the build tag assigned to it.

Add more content: user reviews, useful resources about projects

Now bestof.js.org application only displays the number of stars from Github.
It would be interesting to be able to see more qualitative content such as:

  • User reviews (to see which projects developers really appreciate and recommend)
  • Interesting resources such as blog entries, tutorials that explain how to use the project in real applications...

Content will be generated by users logged with Github.

Questions:

  • Where to store the new content ? Use a backend as a service like parse.com or firebase and take advantage of user authentication that is available out-of-the-box ?
  • Since the content can be generated by anyone (after logging with Github), do we need content moderation to avoid spam and other irrelevant content ?
  • Reviews and Resources will be loaded when a project page is opened (/projects/:id). How to update project lists displayed in the homepage and in the "tag" pages ? (/tags/:code)

User reviews

A user review could be made of 2 parts: a user score (from 1 to 5) and a comment (markdown content)

User score meaning:

  • 5: Highly recommended over any other choice, a great piece of software
  • 4: a recommended choice
  • 3: it does the job, nothing more, nothing less
  • 2: some annoying defects
  • 1: really bad

Useful links

A "useful resource" would be made of a URL (link to the blog entry), a title and a comment (optional) that describes the content of the link.
Reading the latest issues of javascriptweekly.com will be useful to get initial data.

Adding more data: npm dependencies, contributor and commit count

Goal

Provide more insights about project activity and about the weight of the dependencies.

Adding 3 new metrics to bestof.js.org data:

  • npm package dependency list
  • Total number of contributors on GitHub
  • Total number of commits

Screenshots

Project List

image

Project page details

image

Serve site over HTTPS

It'd be nice to have the site served over HTTPS. There are many advantages such as:

  • Google rank HTTPS sites slightly higher as they are more trustworthy (http://googlewebmastercentral.blogspot.com/2014/08/https-as-ranking-signal.html)
  • Some third-party HTTPS sites do not allow referring links to non-HTTPS sites to be tracked in Google Analytics. Using HTTPS can give more accurate analytics data.
  • ISPs like Verizon and Comcast are now routinely injecting tracking material into their customers traffic -- using HTTPS protects visitors from being manipulated in this way. Also some airport and hotel wi-fi services add tracking and even adverts in to websites – but it’s impossible to do that with sites served over HTTPS
  • Sites served over HTTPS look safer and more professional with the nice green padlock icon in the top URL bar.
  • A growing number of web technologies and APIs require HTTPS
  • Web browsers (Chrome and Firefox) are beginning to show non-HTTPS sites as non-secure. so they will appear less trustworthy.

If your site is hosted by GitHub you can get free SSL by using Cloudflare (I've done this before and it works great).

Add project avatars

It could be nice to display some visuals for projects in the application, rather than only data.
It would look like more livery, more "human".

We could display the owner avatar from Github:

  • for big projects like React or Bootstrap, it would be the organisation avatar
  • for smaller projects, it would be the main contributor avatar

RSS Feed feature

Hi, I request add a feature about RSS Feed.

I always using Feedly for checking trend news.
If this site output several RSS (new repos/ranking/trend feed etc) weekly, it will be awesome!

thanks.

Improve the layout, make things simpler

I got a wonderful review from Hugo Giraudel (a member of the Hall if Fame, sass expert, creator of http://jargon.js.org/ among other things).

KittyGiraudel/ama#63 (comment)

So I am going to fix / improve things as much as possible.
Action plan:

  • try to make displayed information easier to process, prioritize content, make things simpler to avoid the "airplane cockpit" effect.
  • Use real URLs instead of hashbangs URLs
  • Think about how I could display something more relevant than the stars on Github, using something like http://packagequality.com for example
  • Find the killer feature that will create the "ah" effect ?
  • ...

Let's try to be inspired by Antoine de Saint Exupéry:

It seems that perfection is attained, not when there is nothing more to add, but when there is nothing more to take away.

En version originale 🇫🇷 :

Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher.

Heatmap and other ideas to improve bestof.js.org

Some ideas to discuss, to make bestof.js.org better...

A. New layout

The left sidebar is too long, there are too many tags, we could remove it and use the search field to select one or several tags, maybe adding an autocomplete feature
And then the home page could become a wall of project "cards", whose number of columns depends on the width of the screen.

B. Project heatmap

When opening a project page, it would be nice to see the star trends over the last months using a heat map, similar to the heat map used in Github repo page to show user’s activity.

image

image

C. Tag trends graph

When opening a given tag page, it would be nice to see a graph to be able to compare trends over the last months.

Roadmap to Version 1.0

Some ideas of improvement to discuss.

Pagination

The react tag page contains almost 100 projects.
https://bestof.js.org/tags/react

We need either pagination or infinite scrolling to make the page faster.
Also, this pagination solution would be applied to the ALL PROJECTS and HALL OF FAME pages.

See project dependencies

When you have to pick a npm package to perform a given task, one of the main of the main arguments is the number of dependencies.

So I think it would be useful to be able to see the list of project dependencies.

User Content loading

When the app loads, we fetch all data about user's reviews and links, even if reviews and links are NOT displayed inside the project cards.

We make 2 GET requests to get all reviews and all links

It works fine because we have very little few links and reviews.

It would be better to fetch only data about a given project when the user opens a project page (/projects/:slug/ url)

This point has been addressed by this PR #48

Refreshing data

If you keep the browser open for more than 24 hours, data will be out-dated.
The only way to to get fresh data is to trigger a browser reload (F5).

It would be nice if data was automatically reloaded when it's needed.

Search box and tags

It would be nice if tags could be selected right from the search box, because the tag list is really long, it takes time to scroll down.

Heatmap about daily stars

See #33

More advanced

The application was made from scratch, without using any framework.
The landscape has changed a lot since 2015.

Could we take advantage of solutions like create-react-app, next.js or Gatsby to implement the following features?

  • A better server-side rendering
  • Offline support
  • Code splitting
  • CSS-in-JS

Add trend graphs

GOAL: add graphs to let users visualise trends over the last months.

For a given tag such as Framework or Testing, users should be able to see at a glance which projects get traction.

Performance issue in Firefox

In Firefox, on my 5-year old Windows7 laptop, navigation is not smooth, every click on tag menu items takes a few seconds... that is really slow!
I did some tests using very small data (only 10 projects and 3 tags instead of 350 projects and 50 tags, for example) but it makes almost no difference.
It does not not look like the problem comes from processing data.
I checked an older version of the application (before the react-router upgrade) but it is slow too, in Firefox
It seems to be related to react-router; maybe it has to do with binding DOM and click events but I have no clue...

Add data about package quality

How could we display information about npm package quality ?

We could use data from:

API response:

http://packagequality.com/package/redux

{
    "_id": "54e2cd1ff22796cf67c857ee",
    "name": "redux",
    "source": "npm",
    "created": "2015-03-10T09:57:27+00:00",
    "lastUpdated": "2016-06-17T19:00:04+00:00",
    "nextUpdate": "2015-03-25T10:30:26+00:00",
    "timesUpdated": 2,
    "repoTotalIssues": [0.9994165694282381, 1],
    "repoOpenIssues": [1, 1],
    "repoLongOpenIssues": [1, 1],
    "versions": [0.9811320754716981, 1],
    "downloads": [0.9999997440054393, 1],
    "quality": 0.9961096777810752,
    "description": "Predictable state container for JavaScript apps"
}

https://api.npms.io/search?from=0&size=1&term=redux

{
    "total": 1646,
    "results": [{
        "date": "2016-04-24T12:20:45.108Z",
        "evaluation": {
            "maintenance": {
                "commitsFrequency": 1,
                "recentCommits": 1,
                "issuesDistribution": 0.9995429837308245,
                "openIssues": 1
            },
            "popularity": {
                "downloadsCount": 683593.3333333334,
                "dependentsCount": 548,
                "communityInterest": 22813,
                "downloadsAcceleration": 5542.798896499239
            },
            "quality": {
                "tests": 0.85,
                "branding": 0.85,
                "dependenciesHealth": 1,
                "carefulness": 0.9
            }
        },
        "score": {
            "final": 0.9068110186654271,
            "detail": {
                "popularity": 0.7340079979736842,
                "maintenance": 0.9999999999935061,
                "quality": 0.9996940645897018
            }
        },
        "keywords": ["redux", "reducer", "state", "predictable", "functional", "immutable", "hot", "live", "replay", "flux", "elm"],
        "name": "redux",
        "description": "Predictable state container for JavaScript apps",
        "publisher": {
            "email": "[email protected]",
            "username": "gaearon"
        },
        "links": {
            "bugs": "https://github.com/reactjs/redux/issues",
            "npm": "https://www.npmjs.com/package/redux",
            "repository": "https://github.com/reactjs/redux",
            "homepage": "http://redux.js.org"
        },
        "version": "3.5.2",
        "searchScore": 0.14198856
    }]
}

Let users request new projects and hall-of-famers

A logged-in user should be able to request to add new projects on Github and new Hall-of-fame members.

About the implementation, we could use Github issues to keep track of these user requests.

Pros:

  • Nothing to add in the back-end, only Github API would be used.
  • Github issues and their comments are convenient to follow up a discussion

Cons;

  • It is not possible to delete Github issues, which is really annoying for tests.
  • Application admins would have to manually create projects and hall of famers in the admin application (bestof-admin repo) from the issu

Images not showing up in Aero's README

If you open the project "Aero" http://bestof.js.org/projects/aero, images in the README.md section do not show up.

image

The cause seems to be the default Git branch that is called nodejs, there is no master branch.

URL that generates the README markup used by the application: https://get-github-readme-v1.now.sh/aerojs/aero

This URL returns the following path for the main screenshot:

https://github.com/aerojs/aero/raw/master/docs/images/aero-installation.png

It should be:

https://github.com/aerojs/aero/raw/nodejs/docs/images/aero-installation.png

(because image filepath in the repository is /docs/images/aero-installation.png and the branch name is nodejs)

I will fix the get-github-readme micro-service very soon to use the project default branch instead of master.

I also noticed that the table included in Aero README is not correctly styled.

image

Thank you @blitzprog for having introduced Aero project to me!

Get rid of database `_id` in json data

In the issue #19, we made the project URLs nicer by removing the database _id (24-character long string coming from the MongoDB database).

But project _ids are still included in the JSON API
https://bestofjs-api-v2.firebaseapp.com/projects.json

Example:

{
	"_id": "55723c9f4140883353bc774e",
	"name": "Angular 1",
	"stars": 55097,
	"deltas": [3, 17, 14, 12, 15, 9, 8],
	"monthly": [47900, 49982, 52194, 53913, 54406, 54761, 55097],
	"url": "https://angularjs.org",
	"full_name": "angular/angular.js",
	"description": "AngularJS - HTML enhanced for web apps!",
	"pushed_at": "2017-03-17T17:02:15.000Z",
	"owner_id": 139426,
	"tags": ["framework"],
	"npm": "angular",
	"quality": 88,
	"version": "1.6.3",
	"score": 40,
	"color": "A4140C"
}

The reason: these _id are used to call the "user-generated content" API (the REST API about links and reviews):

  • Reviews are related to one project
  • Links are related to one or several projects

So the goal is to remove the _ids from the project API and to use an other key to handle relations between the user-generated content and projects.

Server-side rendering... we need speed!

It is nice to have a splash screen that introduces the application the first time you access it but it is really annoying to see this screen every time you access the application.

image

We need server-side rendering to be able to display the content right away in the browser.

Now, when the user launches the application, an Ajax request is made to get the content from a static JSON file generated automatically every morning.
Therefore, it takes between 1 and 2 seconds to display the application content.

Since the application content is static, we could render the home page html on the server, that is to say generate a html page every morning (instead of generating only JSON data).

Avoid OPTIONS extra http requests

3 http requests on external domains to get reviews and links, and to check the user token cause 3 extra OPTIONS requests.
Can it can be avoided, following what is described in this article ? Killing CORS Preflight Requests on a React SPA

The 3 original http requests, made with fetch ("Other" category in Chrome DevTools Network tab):

image

The 3 extra "CORS preflight requests" (under "XHR" category):

image

Fix a typo

This is a place where font-end engineers

must be

This is a place where front-end engineers

Write tests

It is easy to break a single-page application, so running tests on the CI server before every deploy would be safer.
There are several strategies to write tests for a single page application made with React components:

  • Write unit tests with the shallow rendering feature. See this blog entry
  • Write unit tests that will run in node.js, using jsdom module to simulate a browser environment.
  • Write unit tests that will run in the browser using a test runner like Karma
  • Write end-to-end tests that reproduce real user interaction (using nightmarejs.org or webdriver.io ?). See also http://www.cypress.io/ (a test engine that runs unit and integration tests in your browser, still in beta)

Other ideas:

Presentation for Rakuten Tech Conference 2017

This issue is used to track ideas and store screenshots related to the presentation I will make at Rakuten Tech Conference 2017 (https://tech.rakuten.co.jp/).

An introduction of "Best of JavaScript" project

The problem with Javascript

  • JavaScript is moving fast!
    • jQuery
    • Backbone
    • AngularJS
    • React
    • Vue
    • Next?
  • How to track/remember the most interesting libraries?
  • How to know if a project is still relevant?

The solution

  • https://bestof.js.org/ is a web application with 2 goals:
    • show the trends about web development, based on GitHub stars
    • help developers find the best libraries and components (fast search engine)

Technology

  • SPA made with React and Redux
  • Serverless architecture (node.js micro-services)

Some numbers

  • +1000 projects
  • +120 tags

The community

  • Open source project on GitHub
  • Anyone can suggest new projects to add

Reduce the permissions that bestof.js can access

When I was logging in with my github account, it asked for both read/write access to both my public and private repositories. I am sure there are tons of people who would not feel comfortable with giving write permissions to someone, and it is not really necessary I think.

My suggestion is to ask only for read access, as that is more than enough to do any of the current and future functionalities of bestofjs.

Decrease the bundle size

The main JavaScript file bundle-app.js size is 165 KB.
It's pretty big compared to project data (100 KB for about 800 projects on Github, loaded by Ajax)
We should find a way to decrease the bundle using:

  • code splitting (redux-form is not required in all pages)
  • using Preat instead of React
  • ...

Results from webpack-bundle-size-analyzer CLI tool:

react-dom: 509.03 KB (30.2%)
redux-form: 294.58 KB (17.5%)
  lodash: 108.97 KB (37.0%)
  <self>: 185.61 KB (63.0%)
react: 89.89 KB (5.33%)
react-select: 65.92 KB (3.91%)
react-redux: 46.44 KB (2.75%)
  lodash: 5.76 KB (12.4%)
  <self>: 40.69 KB (87.6%)
react-router: 33.78 KB (2.00%)
history: 33.04 KB (1.96%)
fbjs: 29.39 KB (1.74%)
redux: 28.12 KB (1.67%)
  lodash: 5.76 KB (20.5%)
  <self>: 22.36 KB (79.5%)
marked: 27.99 KB (1.66%)
es6-promise: 27.77 KB (1.65%)
numeral: 27.68 KB (1.64%)
notie: 26.91 KB (1.60%)
lodash.intersection: 26.21 KB (1.55%)
prop-types: 23.74 KB (1.41%)
react-router-dom: 15.97 KB (0.947%)
whatwg-fetch: 12.38 KB (0.734%)
vague-time: 10.82 KB (0.641%)
path-to-regexp: 10.67 KB (0.633%)
  isarray: 120 B (1.10%)
  <self>: 10.56 KB (98.9%)
lodash.debounce: 10.53 KB (0.624%)
slideout: 8.06 KB (0.478%)
style-loader: 7.04 KB (0.418%)
node-libs-browser: 5.17 KB (0.307%)
  process: 5.17 KB (100%)
  <self>: 0 B (0.00%)
react-input-autosize: 4.54 KB (0.269%)
emitter: 4.02 KB (0.238%)
react-hot-loader: 3.95 KB (0.234%)
es6-error: 2.64 KB (0.157%)
object-assign: 2.06 KB (0.122%)
resolve-pathname: 1.83 KB (0.108%)
warning: 1.76 KB (0.105%)
invariant: 1.48 KB (0.0878%)
css-loader: 1.47 KB (0.0872%)
hoist-non-react-statics: 1.35 KB (0.0803%)
value-equal: 1.19 KB (0.0708%)
symbol-observable: 1.12 KB (0.0666%)
classnames: 1.08 KB (0.0638%)
decouple: 669 B (0.0387%)
blacklist: 355 B (0.0206%)
redux-thunk: 306 B (0.0177%)
webpack: 251 B (0.0145%)
isomorphic-fetch: 233 B (0.0135%)
is-promise: 165 B (0.00955%)
<self>: 284.88 KB (16.9%)

Export Bookmarks

I'd love an export bookmarks feature. Downloading a json, csv, or whatever format would be fine. I'd like the download to include the package name, github/npm link, description, stars/downloads, and tags.

Is this at all possible? I'd web scrape it but there aren't any links on the page.

Add npm modules data

It could be nice to include data from npm modules in the application:

  • npm module name
  • version
  • dependencies

npm module name could be used as a key for projects URLs (now Github repository name is used, see isuee #19)

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.