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

english-lang

v0.2.9

Published

The English (.eng) programming language compiler

Readme

English (.eng)

Write what you mean. Build what you know.

A programming language where you write plain English that compiles directly to React Native — shipping real iOS and Android apps with zero JSX, zero hooks, and zero accidental complexity.


Install

npm install -g english-lang

Usage

# Scaffold a new project (React Native app + screens/ folder)
engc init my-app

# Compile a single file
engc screens/HomeScreen.eng --out rn/src/

# Compile all .eng files in a directory
engc compile screens/ --out rn/src/

# Watch a directory and recompile on every save
engc watch screens/ --out rn/src/

Example

Write this in screens/HomeScreen.eng:

screen HomeScreen:
    title is "Hello World"

    state:
        message is "Hello!"
        count is 0

    when screen opens:
        set count to 1

    when "Say Hello" is pressed:
        set message to "Hello from English!"

    layout:
        vertical stack spacing 16 padding 16:
            show message as heading
            show count
            button "Say Hello"

Run engc screens/HomeScreen.eng --out rn/src/ and get this:

export function HomeScreen({ navigation }: any) {
  const [message, setMessage] = useState<string>("Hello!");
  const [count, setCount] = useState<number>(0);

  useEffect(() => {
    setCount(1);
  }, []);

  const handleSayHello = () => {
    setMessage("Hello from English!");
  };

  return (
    <View style={styles.container}>
      <View style={{ flexDirection: 'column', gap: 16, padding: 16 }}>
        <Text style={styles.heading}>{message}</Text>
        <Text style={styles.body}>{count}</Text>
        <TouchableOpacity style={styles.button} onPress={handleSayHello}>
          <Text style={styles.buttonText}>Say Hello</Text>
        </TouchableOpacity>
      </View>
    </View>
  );
}

Project structure

MyApp/                         ← project root (.eng world)
├── package.json               ← compile / watch scripts only
├── screens/                   ← write your .eng files here
│   ├── HomeScreen.eng
│   └── DetailScreen.eng
└── rn/                        ← entire React Native project
    ├── App.tsx                ← auto-generated by engc (navigation wiring)
    ├── src/                   ← auto-generated .tsx (engc output)
    │   ├── HomeScreen.tsx
    │   └── DetailScreen.tsx
    ├── ios/
    ├── android/
    ├── node_modules/
    ├── index.js
    └── package.json

Rules:

  • You only ever edit files in screens/ — never touch rn/src/ or rn/App.tsx
  • rn/App.tsx is regenerated automatically whenever you add, rename, or remove a .eng file
  • rn/src/*.tsx are regenerated automatically on every save

Quick start:

# One command sets everything up: scaffolds RN, installs deps, starts Metro
engc init MyApp

# From inside MyApp/ — Metro + eng watcher in one command
npm run dev

# In a separate terminal — run on device / simulator
cd rn && npx react-native run-ios

Programmatic use

import { compile } from 'english-lang';

const tsx = compile(engSource, 'HomeScreen.eng');

License

MIT