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 🙏

© 2026 – Pkg Stats / Ryan Hefner

songo-cli

v0.10.1

Published

Songo — mancala d'Afrique Centrale (variante classique 2×7) jouable dans le terminal, avec IA (5 niveaux), mode Dojo et support français/anglais.

Readme

songo-cli

Le Songo dans votre terminal — un mancala d'Afrique Centrale (Cameroun, Gabon, Guinée Équatoriale), variante classique 2×7, un jeu de semis et de capture qui se joue à deux.

Installation

npm install -g songo-cli
songo

Node.js ≥ 20 requis.

Si les accents s'affichent mal

Sur certains systèmes minimaux — images Docker, serveurs, environnements d'intégration continue — le système n'annonce aucune locale UTF-8. Songo force désormais l'affichage Unicode et le texte reste correct dans l'immense majorité des cas.

Si malgré tout des caractères s'affichent mal, la cause est presque toujours là, et une ligne suffit :

export LANG=C.UTF-8

(LC_ALL=C.UTF-8 fonctionne aussi. Ajoutez-la à votre ~/.bashrc pour la rendre permanente.)

Commandes

| Commande | Effet | |---|---| | songo | Lance le jeu (menu Joueur vs Joueur / Joueur vs IA / Dojo / Bilan de session / À propos) | | songo --rules | Affiche les règles complètes du jeu | | songo --about | Affiche les informations sur le jeu (version, crédit, licence) | | songo --lang <fr\|en> | Change la langue et la mémorise (français par défaut) | | songo --version, -v | Affiche la version installée | | songo update | Met à jour vers la dernière version publiée | | songo --help, -h | Affiche l'aide |

Fonctionnalités

  • Joueur vs Joueur et Joueur vs IA (5 niveaux, du hasard pur à une recherche approfondie).
  • Dojo : mode tutoriel — Maître Mbolwani commente chaque coup, propose des indices progressifs, et partage une citation d'Afrique Centrale à chaque coup joué.
  • Face aux niveaux d'IA les plus avancés (Vieux Sage, Grand Maître, AlphaSongo), l'adversaire annonce son humeur du jour — agressif, taquin, méthodique, chirurgical, sans cœur... — accompagnée d'une citation qui lui correspond.
  • Bilan de session : résumé des parties jouées dans la journée (victoires/défaites, taux de coups optimaux en Dojo).
  • Interface plein écran adaptée à la taille du terminal, avec un repli automatique en petit format sur les terminaux étroits.
  • Graines en jeu : le plateau affiche en permanence combien de graines restent en circulation — le nombre dont dépendent deux des quatre fins de partie.
  • Chaque fin de partie dit pourquoi : la règle qui a tranché, le score atteint à cet instant, puis le score final. Le ramassage des camps change souvent le vainqueur, et cela se voit enfin.
  • Français et anglais, langue mémorisée d'une session à l'autre.

Le jeu, en bref

Le plateau compte 14 trous (7 par joueur) et 70 graines, 5 par trou au départ. À son tour, un joueur sème les graines d'un de ses trous une par une, dans le sens anti-horaire ; si la dernière graine tombe dans une case adverse qui en contient alors 2, 3 ou 4, il capture toutes les graines de cette case (et potentiellement en chaîne).

Une partie se termine de quatre façons, et l'écran dit toujours laquelle :

  • le seuil — un joueur réunit 40 graines dans son grenier ;
  • la rareté — il reste dix graines ou moins sur le plateau : chacun ramasse son camp, et le plus garni l'emporte (nul à égalité parfaite) ;
  • la famine — un joueur n'a plus aucun coup jouable ;
  • le retard irrattrapable — un joueur ne peut plus repasser devant même en ramassant tout le plateau. En Joueur vs Joueur uniquement : contre l'IA et au Dojo, la partie se joue jusqu'au bout.

Le détail complet des règles (semis étendu, protection de la première case adverse, interdiction du Grand Chelem, solidarité, pénalité de la case n°7, Nyindi) est disponible via songo --rules, dans le jeu.

Licence

MIT — © 2026 EBANG MBA'A O'NEIL-LEVY (MoneFan9)