{"id":14722,"library":"ndx-framework","title":"ndx-framework","description":"ndx-framework is a full-stack JavaScript application framework built on established technologies like Express.js for the backend and AngularJS (version 1) for the frontend. Designed for stability, scalability, and rapid development, it promotes modularity and utilizes an opinionated stack including CoffeeScript, Pug (formerly Jade), and Stylus for code legibility and conciseness. A key differentiator is its built-in `ndxdb`, an in-memory SQL/NoSQL database that treats JavaScript objects as first-class citizens and can persist data to S3. The framework emphasizes a small footprint, suitable for constrained environments like Heroku, and includes features for SSL, token-based authentication, and OAuth2. It integrates with Grunt for development workflows and Yeoman for scaffolding. The current stable version, 0.2.27, indicates it is a pre-1.0 release, suggesting a potentially slow or ceased development cadence, especially given its reliance on older web technologies.","status":"abandoned","version":"0.2.27","language":"javascript","source_language":"en","source_url":"https://github.com/ndxbxrme/ndx-framework","tags":["javascript"],"install":[{"cmd":"npm install ndx-framework","lang":"bash","label":"npm"},{"cmd":"yarn add ndx-framework","lang":"bash","label":"yarn"},{"cmd":"pnpm add ndx-framework","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core web server framework for Node.js.","package":"express"},{"reason":"Frontend framework (AngularJS 1.x) for client-side applications.","package":"angular"},{"reason":"Primary language for application logic, requiring compilation.","package":"coffeescript"},{"reason":"Template engine (formerly Jade) for server-side rendering.","package":"pug"},{"reason":"CSS preprocessor for styling.","package":"stylus"},{"reason":"Task runner for development (livereload) and build processes.","package":"grunt","optional":false},{"reason":"Scaffolding tool for generating application structure and modules.","package":"yeoman","optional":false},{"reason":"Core server component, likely wrapped by ndx-framework.","package":"ndx-server"},{"reason":"Built-in in-memory database with S3 persistence capabilities.","package":"ndxdb"},{"reason":"Abstraction for plugging in alternative databases.","package":"ndx-database-engine","optional":true}],"imports":[{"note":"The framework primarily uses CommonJS `require()` syntax. The 'ndx' object is the main entry point for configuration and module management within a scaffolded application.","wrong":"import ndx from 'ndx-framework';","symbol":"ndx","correct":"const ndx = require('ndx-framework');"},{"note":"Environment variables are often exposed via `ndx-server`, a core dependency. Direct ES module imports are not supported.","wrong":"import { config } from 'ndx-server';","symbol":"serverConfig","correct":"const serverConfig = require('ndx-server').config;"},{"note":"After requiring the main 'ndx' object, application instances are typically created via methods exposed on it, like `createApp()` (inferred pattern).","symbol":"App","correct":"const app = ndx.createApp();"}],"quickstart":{"code":"npm install -g ndx-framework\nndx-framework --init\nndx-framework --create --appname=myNdxApp\ncd myNdxApp\ngrunt\n# Access your app at http://localhost:3000\n\n# To build for production:\n# grunt build","lang":"bash","description":"Demonstrates the initial global installation of the ndx-framework CLI, scaffolding a new application, and starting it in development mode with Grunt."},"warnings":[{"fix":"Migration to a modern, actively maintained framework is strongly recommended. Attempting to run this framework on current Node.js versions will likely result in numerous dependency resolution and runtime errors.","message":"The framework relies heavily on severely outdated and unmaintained technologies such as AngularJS 1, CoffeeScript, and Grunt. These dependencies are incompatible with modern Node.js versions and pose significant security risks and operational challenges.","severity":"breaking","affected_versions":">=0.2.0"},{"fix":"Developers must be proficient in CoffeeScript, Pug, and Stylus, or integrate robust build pipelines to transpile these languages to standard web formats.","message":"ndx-framework uses non-standard languages (CoffeeScript, Pug, Stylus) that require specific build tooling and introduce a learning curve. Modern JavaScript development typically uses plain JavaScript/TypeScript, HTML, and CSS/Sass.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Carefully configure S3 for data persistence, or integrate a different database via `ndx-database-engine` if more traditional persistent storage is needed.","message":"The built-in `ndxdb` database is primarily in-memory. For persistent data storage, it explicitly requires configuration for S3, which introduces external cloud dependency and specific setup.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Always use the provided `ndx-framework` CLI and `grunt` commands for initialization, development, and building to ensure proper environment setup and task execution.","message":"The framework's primary interaction model is through its command-line interface (`ndx-framework`) and `grunt` tasks. Direct `node app.js` execution or standard Node.js module loading might bypass critical initialization steps.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Always set a long, random, and unique `SESSION_SECRET` in production environments. Understand the implications of `SKIP_IP_ENCRYPT` before disabling token IP encryption.","message":"Security-related environment variables like `SESSION_SECRET` are critical for encryption and session management. Failing to set a strong, unique secret exposes the application to security vulnerabilities.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Install CoffeeScript globally or ensure it's a project dependency: `npm install -g coffeescript`.","cause":"The CoffeeScript compiler, required to run or build the application, is not installed or not accessible in the current environment.","error":"Error: Cannot find module 'coffeescript'"},{"fix":"Install the Grunt CLI globally: `npm install -g grunt-cli`.","cause":"The Grunt CLI (command-line interface) is not installed globally on the system, which is necessary to run development and build tasks.","error":"'grunt' is not recognized as an internal or external command, operable program or batch file."},{"fix":"Stop the conflicting process, or specify a different port using the `PORT` environment variable (e.g., `PORT=4000 grunt`).","cause":"Another process is already occupying the default port (3000) that ndx-framework attempts to use.","error":"Error: listen EADDRINUSE :::3000"},{"fix":"Ensure your code executes within the framework's lifecycle or, if external, explicitly `const ndx = require('ndx-framework');` and reference the variable.","cause":"Attempting to access the `ndx` object before it has been properly initialized or made available within the current scope by the framework.","error":"ReferenceError: ndx is not defined"},{"fix":"Verify that `SomeService` (or the missing provider) is correctly defined and registered as an AngularJS module, and that all its own dependencies are met.","cause":"An AngularJS (Angular 1) service or dependency specified in the frontend application could not be located or injected by the AngularJS injector.","error":"Error: [$injector:unpr] Unknown provider: SomeServiceProvider"}],"ecosystem":"npm"}