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

minangscript

v2.0.0

Published

Modern programming language with Minangkabau philosophy. Features native arrays (kumpulan), objects (benda), web development support, and comprehensive algorithm examples. Ready for web applications, data structures, and algorithmic programming.

Readme

MinangScript 🏔️ v2.0

Modern programming language with Minangkabau philosophy. Now featuring native arrays, objects, and web development support!

Version License Node NPM Downloads

🌟 What's New in v2.0?

MinangScript v2.0 is a major release featuring native data structures and web development capabilities:

🆕 Native Data Structures

  • kumpulan (arrays) - buek numbers = kumpulan[1, 2, 3, 4]
  • benda (objects) - buek person = benda{nama: "Ahmad", umur: 25}

🌐 Web Development Ready

  • DOM manipulation with Minangkabau keywords
  • HTTP/API support with native functions
  • Complete web application templates

📊 Algorithm Examples

  • LeetCode Two Sum solutions (3 approaches)
  • Interactive algorithm visualizations
  • Performance benchmarking tools

🚀 Quick Start

Installation

# Global installation
npm install -g minangscript

# Verify installation
minang help

Your First Program

Create hello.minang:

// Traditional greeting with arrays and objects
cetak "🏔️ Salamat datang ka MinangScript v2.0!"

// Create an array (kumpulan)
buek numbers = kumpulan[1, 2, 3, 4, 5]
cetak "Numbers: " + numbers

// Create an object (benda)
buek person = benda{
    nama: "Ahmad",
    umur: 25,
    kota: "Padang"
}

karojo greet(person) {
    jadi "Halo " + person.nama + " dari " + person.kota + "!"
}

cetak greet(person)
minang run hello.minang

Output:

🏔️ Salamat datang ka MinangScript v2.0!
Numbers: 1,2,3,4,5
Halo Ahmad dari Padang!

📚 Data Structures

Arrays (kumpulan)

// Create arrays
buek fruits = kumpulan["apel", "pisang", "mangga"]
buek numbers = kumpulan[1, 2, 3, 4, 5]
buek empty = kumpulan[]

// Access elements
cetak fruits[0]  // "apel"
cetak numbers.length  // 5

// Add elements
fruits.push("jeruk")

Objects (benda)

// Create objects
buek student = benda{
    nama: "Siti",
    umur: 20,
    jurusan: "Informatika"
}

// Access properties
cetak student.nama    // "Siti"
cetak student["umur"] // 20

// Nested objects
buek config = benda{
    app: benda{
        name: "MinangApp",
        version: "1.0.0"
    },
    database: benda{
        host: "localhost",
        port: 5432
    }
}

🌐 Web Development

DOM Manipulation

// Select elements
buek button = dokumen.cari("#myButton")
buek title = dokumen.cari("h1")

// Event handling
button.dengar("klik", karojo() {
    title.konten = "Button clicked!"
})

// Create new elements
buek newDiv = dokumen.buat("div")
newDiv.konten = "Dynamic content"
dokumen.body.tambah(newDiv)

HTTP/API Calls

// Fetch data
karojo fetchUserData(userId) {
    buek response = kirim("get", `/api/users/${userId}`)
    buek user = json.parse(response)
    jadi user
}

// POST data
karojo createUser(userData) {
    buek response = kirim("post", "/api/users", userData)
    jadi response
}

📊 Algorithm Examples

LeetCode Two Sum

// Hash Map approach - O(n)
karojo twoSum(nums, target) {
    buek map = benda{}
    
    untuak (buek i = 0; i < nums.length; i = i + 1) {
        buek complement = target - nums[i]
        
        kalau map[complement] !== undefined {
            jadi kumpulan[map[complement], i]
        }
        
        map[nums[i]] = i
    }
    
    jadi kumpulan[]
}

// Test the solution
buek nums = kumpulan[2, 7, 11, 15]
buek target = 9
buek result = twoSum(nums, target)
cetak "Solution: " + result  // [0, 1]

🎯 Language Features

Variables & Functions

// Variables
buek name = "MinangScript"     // let/var
ambiak version = "2.0"         // let
tagak PI = 3.14159            // const

// Functions
karojo calculate(a, b) {
    buek sum = a + b
    jadi sum
}

Control Flow

// Conditionals
kalau condition {
    cetak "True branch"
} lainKalau otherCondition {
    cetak "Else if branch"  
} lain {
    cetak "Else branch"
}

// Loops
untuak (buek i = 0; i < 10; i = i + 1) {
    cetak "Count: " + i
}

selamo condition {
    // While loop body
}

Advanced Features

// Try-catch
cubo {
    // Risky operation
    buek result = riskyFunction()
} tangkok (error) {
    cetak "Error: " + error
} akhianyo {
    cetak "Cleanup"
}

// Template literals
buek message = `Hello ${name}, welcome to MinangScript!`

📦 CLI Commands

# Project Management
minang new myproject          # Create new project
minang init                   # Initialize package
minang template web-app       # Generate web app template

# Development
minang run app.minang         # Run program
minang build src/ dist/       # Transpile to JavaScript
minang repl                   # Interactive mode

# Package Management
minang install package-name   # Install package
minang search query          # Search packages
minang update               # Update packages

# Examples
minang example:arrays        # Run array examples
minang example:web          # Run web examples
minang example:two-sum      # Run algorithm examples

🌍 Philosophy: "Alam Takambang Jadi Guru"

Nature unfolds to become our teacher

MinangScript embodies the Minangkabau philosophy of learning from nature and community collaboration. The language promotes:

  • Simplicity - Clear, readable syntax inspired by natural language
  • Collaboration - Built-in package management and sharing tools
  • Growth - Designed to evolve with the community's needs
  • Accessibility - Bilingual support for global and local developers

📖 Examples

Explore comprehensive examples in the /examples directory:

  • leetcode-two-sum-simple.minang - Algorithm implementation
  • web-simple.minang - Basic web app
  • web-todo.minang - Todo list application
  • web-api-dashboard.minang - API dashboard
  • two-sum-interactive.minang - Interactive algorithm

🛠️ Development

# Clone repository
git clone https://github.com/DityaPerdana/minangScript.git
cd minangScript

# Install dependencies
npm install

# Run tests
npm test

# Run examples
npm run example:arrays
npm run example:web

📋 Requirements

  • Node.js >= 14.0.0
  • NPM >= 6.0.0
  • OS: Windows, macOS, Linux

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

📄 License

MIT License - see LICENSE file for details.

🔗 Links


MinangScript v2.0 - Alam takambang jadi guru 🏔️

Built with ❤️ for the global programming community