
Company News
Free Business Plan Upgrades for Open Source Maintainers
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.
An NPX-executable CLI application that introduces Chan Meng through an interactive, story-driven terminal experience.
Experience minimalist philosophy through an elegant command-line interface.
One-click FREE execution via NPX - no installation required.
Tech Stack Badges:
[!TIP] This project demonstrates minimalist CLI design with modern JavaScript. It combines interactive storytelling with elegant terminal UX to create an engaging personal introduction experience.
https://github.com/user-attachments/assets/66d9844c-bce6-4cd2-844b-022f672f7cbb
|
🎨 Welcome Screen |
🎯 Interactive Menu |
|
🗺️ The Journey |
💭 Philosophy |
|
📧 Connect |
1 Interactive Story-Driven ExperienceExperience a curated journey through Chan's minimalist philosophy via an elegant CLI interface with beautiful ASCII art and gradient colors.
Key capabilities include:
[!TIP] Run
npx chan-menganywhere, anytime - no installation required!
2 Minimalist Design PhilosophyBuilt with minimalist principles at its core - every dependency justified, every feature purposeful.
Design Principles:
"type": "module"npx chan-meng
🎉 That's it! The interactive experience will start immediately.
# Clone the repository
git clone https://github.com/ChanMeng666/chan-meng.git
cd chan-meng
# Install dependencies
npm install
# Build the Ink bundle, then run it
npm run build
npm start # or: node dist/cli.js
# Or develop with watch-mode rebuilds
npm run dev # in one terminal
node dist/cli.js # in another, after each change
[!IMPORTANT] Ensure you have the following:
The CLI experience is organized into four interactive modules:
| Module | Description | Duration |
|---|---|---|
| 🗺️ The Journey | Chan's path from family constraints to minimalist freedom | ~5 min |
| 💭 Philosophy | Core minimalist beliefs and principles | ~4 min |
| ✂️ Practical Minimalism | Concrete examples of the minimalist lifestyle | ~3 min |
| 📧 Connect | Get in touch with Chan Meng | ~1 min |
Quick Tour mode automatically selects the most impactful moments from each module for a 3-minute experience.
Runtime & Language:
UI Framework:
^7.0 — React renderer for the terminal. Layout uses Yoga (Flexbox), styling uses Ink <Text> / <Box> props.^19.2 — component model and useReducer state machine<Select> for every menu / promptConfiguration:
^11.0 — cross-platform preferences persistenceBuild:
src/ → dist/cli.js (single ESM file with shebang, Node 22 target)[!TIP] Published tarball ships only
dist/cli.js(≈1.8 MB single file), sonpx chan-mengcold-starts with zero post-install work beyond theconfnative-ish dep.
chan-meng/
├── index.js # Shebang entry; forwards to src/cli.js
├── esbuild.config.js # Bundle src/ → dist/cli.js (ESM, Node 22)
├── package.json
├── src/
│ ├── cli.js # Ink bootstrap shim (session + signals)
│ ├── App.jsx # <App/> reducer-backed state machine + routing
│ ├── components/ # All UI as Ink/React components
│ │ ├── BigTitle.jsx # ASCII banner with cyan→magenta gradient
│ │ ├── WelcomeScreen.jsx # first screen — mode selection
│ │ ├── MainMenu.jsx # module list for Full Experience
│ │ ├── QuickTour.jsx # curated 3-min tour
│ │ ├── ModuleView.jsx # generic segment walker
│ │ ├── ConnectView.jsx # boxed contact card
│ │ ├── SegmentView.jsx # title + content + metadata layout
│ │ ├── ClosingScreen.jsx # thank-you / session duration
│ │ ├── FirstTimeTips.jsx
│ │ ├── Divider.jsx
│ │ ├── Prompt.jsx # wrapper around @inkjs/ui <Select>
│ │ └── ErrorBanner.jsx
│ ├── state/
│ │ └── navigationReducer.js # Pure reducer + action creators
│ ├── contexts/
│ │ └── CapabilitiesContext.js # terminal caps, re-reads on resize
│ ├── hooks/
│ │ └── useCapabilities.js
│ ├── services/
│ │ └── progress.js # visited/completed modules, session timing
│ ├── content/ # Hardcoded module data (unchanged from v1)
│ │ ├── journey.js philosophy.js practical.js connect.js
│ │ ├── stories.js quick-tour.js
│ └── utils/
│ ├── terminal.js # Terminal capability detection
│ └── config.js # conf wrapper for persistence
├── tests/
│ ├── unit/ # Component + reducer + service tests
│ └── integration/ # ink-testing-library scenarios
└── specs/ # Original feature specs
User preferences and progress are automatically saved in:
| Platform | Configuration Path |
|---|---|
| Linux/macOS | ~/.config/chan-meng-cli/ |
| Windows | %APPDATA%\chan-meng-cli\ |
Stored Data:
[!NOTE] To reset your progress, simply delete the configuration directory.
npm install
# Run all tests
npm test
# Run tests with coverage
npm test -- --coverage
# Run tests in watch mode
npm test -- --watch
# Bundle src/ into dist/cli.js (runs automatically in prepublishOnly)
npm run build
# Dry-run the publish tarball to confirm shape
npm pack --dry-run # shows README.md + LICENSE + package.json + dist/cli.js
# Test the package locally
npm pack && npx ./chan-meng-*.tgz
Development Scripts:
npm test # Run Jest test suite (Ink + reducer + component snapshots)
npm run build # Bundle via esbuild
npm run dev # Watch-mode build
npm start # Run dist/cli.js
npm pack # Create tarball for distribution
Performance Metrics:
ink-testing-libraryink, react, @inkjs/ui + conf (transitive deps included)Code Quality:
lastFrame() assertionsAccessibility:
Contributions are welcome! This project follows minimalist principles - every addition must justify its existence.
Development Process:
git checkout -b feature/amazing-feature)npm test)Contribution Guidelines:
This project is licensed under the MIT License - see the LICENSE file for details.
Open Source Benefits:
Chan Meng Creator & Lead Developer |
Chan Meng - Senior AI/ML Infrastructure Engineer
⭐ Star this project • 📖 Read the Code • 🐛 Report Issues • 🤝 Contribute
Built with Spec-Driven Development using Spec Kit
FAQs
An interactive CLI to meet Chan Meng and explore her minimalist philosophy
The npm package chan-meng receives a total of 1 weekly downloads. As such, chan-meng popularity was classified as not popular.
We found that chan-meng demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.