npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

rankingalgorithm

v1.0.6

Published

A small ranking algorithm that can be used in a social media app, an e-commerce website(every app that users can upload something)

Downloads

17

Readme

Ranking algorithm

This algorithm is helpful when building your own e-commerce website, a social media app or any app that users can post something. He gives a score to each post based upon the parameters you give him and the time(t)

Badges

MIT License

Author

Installation

How to install the algorithm

  npm install --save rannkingalgorithm

Usage

typescript

import { RankingAlgorithm } from "rankingalgorithm";

const rankingAlgo = new RankingAlgorithm(stretch,startValue,[{
    field:"propName",
    valuable:Boolean,//if this property is valuable then it's true
    typeOfAdd : "Sum"||"Multiplication",
    ref:""
},
{
    field:"propName",
    valuable:false,
    typeOfAdd : "",
    ref:"propName"//when puting propName this prop will be added to the property you refered to
}])

console.log(rankingAlgo.calc(propName1Value,propName2Value,t));//A score

Nodejs

const { RankingAlgorithm }= require("rankingalgorithm");

const rankingAlgo = new RankingAlgorithm(stretch,startValue,[{
    field:"propName",
    valuable:Boolean,//if this property is valuable then it's true
    typeOfAdd : "Sum"||"Multiplication",
    ref:""
},
{
    field:"propName",
    valuable:false,
    typeOfAdd : "",
    ref:"propName"//when puting propName this prop will be added to the property you refered to
}])

console.log(rankingAlgo.calc(propName1Value,propName2Value,t));//A score

Documentation

Math equation

This algorithm was built to help each app that users can post anything, to give it a score based upon properties you give it to him and time variation.

Numerator

In the Numerator you can put your own propreties(number of likes, number of comments, audience...) and if you have something valuable you can play with it.

ex: if we have parameters like (nLikes,ncomments,audience) we want to multiplie the audience with the nLikes to make it more valuable something
(Nlikes*audience+ncomments+audience) in the code we must put :

{ field:"nLikes", valuable:true, typeOfAdd :"Multiplication", ref:"" },

{ field:"audience", valuable:false, typeOfAdd : "", ref:"nLikes" },

{ field:"ncomments", valuable:false, typeOfAdd : "", ref:"" }

NW: When giving the values of parameters you must ordre the values correctly when you want to add ref to a property it must be in order after the main property

ex : console.log(rankingAlgo.calc(nLikes,audience,ncomments,t));

Denominator

the goal of this function is to start from a value near to zero then it goes up until it will be constant In the denominator the function above is an exponential function that starts at t=0s with the (StartValue)that you specifie for better results you must specifie a number close to 0 , so the score in the beginning can be too high so the post can be ranked at the top and get a higher chance to be viewed more than old posts after a period of time this function will go up so the post will be classed in the medieum giving the chance to other posts to be classed at the top

the stretch : it's used to play with equation to be more stretched when you want the equation to be constatnt very quick you must give it a small number

stretch(high) -> long time to reach the stability

stretch(low) -> short time to reach the stability

this exemple explains more the stretch with startValue=0,0002

App Screenshot

f(x) with stretch = 8,g(x) with stretch = 4,d(x) with stretch = 16

Conclusion

The algorithm will output a score each minute t=0.01 with the time variation

Demo

https://drive.google.com/file/d/13Zflm3AEUlVK8S_MWOPW1PcNg_HkQqiy/view?usp=sharing