--- id: contributing title: Contributing Verdaccio --- First of all Jumping into an unfamiliar code base is not easy but we are here to help you. ## Comunication Channels If you are willing for asking, we use two channels for discussions: * [Public Gitter channel](https://gitter.im/verdaccio/) * [Contributors Slack channel](https://verdaccio-npm.slack.com) (unfortunately only by email invitation, you might ask in **Gitter** to be included) ## Getting started As a first glance verdaccio is a single repository, but there are many ways you might contribute and a variety of technologies to practice. ### Finding my spot All we have different skills, so, let's see where you might feel comfortable. ### I know or I want to learn Node.js Node.js is the base of `verdaccio`, we use libraries as `express`, `commander`, `request` or `async`. Verdaccio is basically a Rest API that create a communication with `npm` clients compatible, as `yarn`. We have a long [list of plugins](plugins.md) ready to be used and improved but at the same time [you might create your own](dev-plugins.md). ### I would prefer to work in the User Interface Recently we have moved to modern techonologies as `React` and `element-react`. We are looking forward to see new ideas how to improve the UI. ### I feel more confortable improving the stack Of course, we will be happy to help us improving the stack, you can upgrade dependencies as `eslint`, `stylelint`, `webpack`. You migt merely improve the `webpack` configuration would be great. Any suggestion is very welcome. Furthermore whether you have experience with **Yeoman** you might help us with the [verdaccio generator](https://github.com/verdaccio/generator-verdaccio-plugin). Here some ideas: * Create a common eslint rules to be used across all dependencies or plugins * Improve Flow types definitions delivery * Moving to Webpack 4 * Improve hot reload with Webpack * We use babel and webpack across all dependencies, why not a common preset? * Improve continous integration delivery ### I do great Documentation Many contributors find typos and grammar issues, that also helps to improve the overall experience for troubleshooting. ### I am a Designer We have a frontend website that will be happy to see your ideas. Our website is based on [Docusaurus](https://docusaurus.io/). ### I am a DevOps We have a widely popular Docker image that need maintenance and pretty likely huge improvements, we need your knowledge for the benefits of all users. We have support for **Kubernetes**, **Puppet**, **Ansible** and **Chef** and we need help in those fields, feel free to see all repositories. ### I can do translations Verdaccio aims to be multilingual, in order to achieve it **we have the awesome support** of [Crowdin](https://crowdin.com) that is an amazing platform for translations. We have setup a project where you can choose your favourite language, if you do not find your language feel free to request one [creating a ticket](https://github.com/verdaccio/verdaccio/issues/new). [Go to Crowdin Verdaccio](https://crowdin.com/project/verdaccio) ## I'm ready to contribute If you are thinking *"I've seen already the [repositories](repositories.md) and I'm willing to start right away"* then I have good news for you, that's the next step. You will need learn how to build, [we have prepared a guide just for that](build.md). Once you have played around with all scripts and you know how to use them, we are ready to go to the next step, run the [**Unit Test**](test.md). ## Full list of contributors. We want to see your face here ! | [juanpicado](https://github.com/juanpicado) | [rlidwka](https://github.com/rlidwka) | [Meeeeow](https://github.com/Meeeeow) | [trentearl](https://github.com/trentearl) | [ayusharma](https://github.com/ayusharma) | |:-------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------:| | [juanpicado](https://github.com/juanpicado) | [rlidwka](https://github.com/rlidwka) | [Meeeeow](https://github.com/Meeeeow) | [trentearl](https://github.com/trentearl) | [ayusharma](https://github.com/ayusharma) | | [verdacciobot](https://github.com/verdacciobot) | [jmwilkinson](https://github.com/jmwilkinson) | [UnitedMarsupials](https://github.com/UnitedMarsupials) | [ryan-codingintrigue](https://github.com/ryan-codingintrigue) | [ramonornela](https://github.com/ramonornela) | |:-------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------:| | [verdacciobot](https://github.com/verdacciobot) | [jmwilkinson](https://github.com/jmwilkinson) | [UnitedMarsupials](https://github.com/UnitedMarsupials) | [ryan-codingintrigue](https://github.com/ryan-codingintrigue) | [ramonornela](https://github.com/ramonornela) | | [renovate-bot](https://github.com/renovate-bot) | [rodriguesbreno](https://github.com/rodriguesbreno) | [vernak2539](https://github.com/vernak2539) | [jachstet-sea](https://github.com/jachstet-sea) | [lgaitan](https://github.com/lgaitan) | |:-------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------:| | [renovate-bot](https://github.com/renovate-bot) | [rodriguesbreno](https://github.com/rodriguesbreno) | [vernak2539](https://github.com/vernak2539) | [jachstet-sea](https://github.com/jachstet-sea) | [lgaitan](https://github.com/lgaitan) | | [crispy1989](https://github.com/crispy1989) | [neuquino](https://github.com/neuquino) | [markpeterfejes](https://github.com/markpeterfejes) | [steve-p-com](https://github.com/steve-p-com) | [BartDubois](https://github.com/BartDubois) | |:--------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:| | [crispy1989](https://github.com/crispy1989) | [neuquino](https://github.com/neuquino) | [markpeterfejes](https://github.com/markpeterfejes) | [steve-p-com](https://github.com/steve-p-com) | [BartDubois](https://github.com/BartDubois) | | [karfau](https://github.com/karfau) | [030](https://github.com/030) | [Qwerios](https://github.com/Qwerios) | [wiggisser](https://github.com/wiggisser) | [kfatehi](https://github.com/kfatehi) | |:-----------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:| | [karfau](https://github.com/karfau) | [030](https://github.com/030) | [Qwerios](https://github.com/Qwerios) | [wiggisser](https://github.com/wiggisser) | [kfatehi](https://github.com/kfatehi) | | [imsnif](https://github.com/imsnif) | [denisbabineau](https://github.com/denisbabineau) | [HCanber](https://github.com/HCanber) | [jgoz](https://github.com/jgoz) | [josephg](https://github.com/josephg) | |:-----------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:| | [imsnif](https://github.com/imsnif) | [denisbabineau](https://github.com/denisbabineau) | [HCanber](https://github.com/HCanber) | [jgoz](https://github.com/jgoz) | [josephg](https://github.com/josephg) | | [kba](https://github.com/kba) | [aledbf](https://github.com/aledbf) | [drubin](https://github.com/drubin) | [plitex](https://github.com/plitex) | [nedelenbos](https://github.com/nedelenbos) | |:-----------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:| | [kba](https://github.com/kba) | [aledbf](https://github.com/aledbf) | [drubin](https://github.com/drubin) | [plitex](https://github.com/plitex) | [nedelenbos](https://github.com/nedelenbos) | | [mysiar](https://github.com/mysiar) | [bufferoverflow](https://github.com/bufferoverflow) | [osher](https://github.com/osher) | [danielo515](https://github.com/danielo515) | [marnel](https://github.com/marnel) | |:-------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:| | [mysiar](https://github.com/mysiar) | [bufferoverflow](https://github.com/bufferoverflow) | [osher](https://github.com/osher) | [danielo515](https://github.com/danielo515) | [marnel](https://github.com/marnel) | | [aszmyd](https://github.com/aszmyd) | [estliberitas](https://github.com/estliberitas) | [Alexandre-io](https://github.com/Alexandre-io) | [amirmohsen](https://github.com/amirmohsen) | [BarthV](https://github.com/BarthV) | |:------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------:| | [aszmyd](https://github.com/aszmyd) | [estliberitas](https://github.com/estliberitas) | [Alexandre-io](https://github.com/Alexandre-io) | [amirmohsen](https://github.com/amirmohsen) | [BarthV](https://github.com/BarthV) | | [BogdanAlexandru](https://github.com/BogdanAlexandru) | [iambrandonn](https://github.com/iambrandonn) | [robi-wan](https://github.com/robi-wan) | [crohrer](https://github.com/crohrer) | [psychocode](https://github.com/psychocode) | |:------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:| | [BogdanAlexandru](https://github.com/BogdanAlexandru) | [iambrandonn](https://github.com/iambrandonn) | [robi-wan](https://github.com/robi-wan) | [crohrer](https://github.com/crohrer) | [psychocode](https://github.com/psychocode) | | [conorhastings](https://github.com/conorhastings) | [coreyjewett](https://github.com/coreyjewett) | [dbroadhurst](https://github.com/dbroadhurst) | [etiennetremel](https://github.com/etiennetremel) | [einfallstoll](https://github.com/einfallstoll) | |:--------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------------------:| | [conorhastings](https://github.com/conorhastings) | [coreyjewett](https://github.com/coreyjewett) | [dbroadhurst](https://github.com/dbroadhurst) | [etiennetremel](https://github.com/etiennetremel) | [einfallstoll](https://github.com/einfallstoll) | | [gempain](https://github.com/gempain) | [lbguilherme](https://github.com/lbguilherme) | [gecruz](https://github.com/gecruz) | [idangozlan](https://github.com/idangozlan) | [jrussellsmyth](https://github.com/jrussellsmyth) | |:---------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------:| | [gempain](https://github.com/gempain) | [lbguilherme](https://github.com/lbguilherme) | [gecruz](https://github.com/gecruz) | [idangozlan](https://github.com/idangozlan) | [jrussellsmyth](https://github.com/jrussellsmyth) | | [jirutka](https://github.com/jirutka) | [kingjan1999](https://github.com/kingjan1999) | [vStone](https://github.com/vStone) | [zaventh](https://github.com/zaventh) | [jeremymoritz](https://github.com/jeremymoritz) | |:-------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------:| | [jirutka](https://github.com/jirutka) | [kingjan1999](https://github.com/kingjan1999) | [vStone](https://github.com/vStone) | [zaventh](https://github.com/zaventh) | [jeremymoritz](https://github.com/jeremymoritz) | | [jondlm](https://github.com/jondlm) | [speier](https://github.com/speier) | [kodypeterson](https://github.com/kodypeterson) | [mrblackus](https://github.com/mrblackus) | [metaa](https://github.com/metaa) | |:------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------:| | [jondlm](https://github.com/jondlm) | [speier](https://github.com/speier) | [kodypeterson](https://github.com/kodypeterson) | [mrblackus](https://github.com/mrblackus) | [metaa](https://github.com/metaa) | | [bajtos](https://github.com/bajtos) | [okv](https://github.com/okv) | [Vrtak-CZ](https://github.com/Vrtak-CZ) | [rafacesar](https://github.com/rafacesar) | [rbpinheiro](https://github.com/rbpinheiro) | |:------------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:| | [bajtos](https://github.com/bajtos) | [okv](https://github.com/okv) | [Vrtak-CZ](https://github.com/Vrtak-CZ) | [rafacesar](https://github.com/rafacesar) | [rbpinheiro](https://github.com/rbpinheiro) | | [r3wald](https://github.com/r3wald) | [robertgroh](https://github.com/robertgroh) | [prssn](https://github.com/prssn) | [RodrigoBalest](https://github.com/RodrigoBalest) | [RomainLK](https://github.com/RomainLK) | |:-----------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------:| | [r3wald](https://github.com/r3wald) | [robertgroh](https://github.com/robertgroh) | [prssn](https://github.com/prssn) | [RodrigoBalest](https://github.com/RodrigoBalest) | [RomainLK](https://github.com/RomainLK) | | [rmg](https://github.com/rmg) | [samcday](https://github.com/samcday) | [tarun1793](https://github.com/tarun1793) | [tcort](https://github.com/tcort) | [grrowl](https://github.com/grrowl) | |:----------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------:|:-----------------------------------------------------------------------------------------------------------------------------:| | [rmg](https://github.com/rmg) | [samcday](https://github.com/samcday) | [tarun1793](https://github.com/tarun1793) | [tcort](https://github.com/tcort) | [grrowl](https://github.com/grrowl) | | [tlvince](https://github.com/tlvince) | [lordvlad](https://github.com/lordvlad) | [wpasternak](https://github.com/wpasternak) | [yannickcr](https://github.com/yannickcr) | [yannickglt](https://github.com/yannickglt) | |:-------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:| | [tlvince](https://github.com/tlvince) | [lordvlad](https://github.com/lordvlad) | [wpasternak](https://github.com/wpasternak) | [yannickcr](https://github.com/yannickcr) | [yannickglt](https://github.com/yannickglt) | | [silkentrance](https://github.com/silkentrance) | [jjaakola](https://github.com/jjaakola) | [maxlaverse](https://github.com/maxlaverse) | [ChadKillingsworth](https://github.com/ChadKillingsworth) | |:------------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------:| | [silkentrance](https://github.com/silkentrance) | [jjaakola](https://github.com/jjaakola) | [maxlaverse](https://github.com/maxlaverse) | [ChadKillingsworth](https://github.com/ChadKillingsworth) |