{"id":49789,"library":"xenops","title":"Xenops Framework","description":"Xenops is a Node.js MVC framework for building REST APIs, real-time applications, and web apps. Version 2.0.25 provides a command-line tool to scaffold applications with integrated routing (Restify), database management (ORM), socket.io support, validation, logging, and a client testing module. Its architecture is service-handler oriented, making it suitable for multi-room chat, virtual classrooms, real-time dashboards, and multiplayer games. The framework is extensible, allowing users to override core functionality. It uses Restify for server and supports static and dynamic views with template management. Globally installable via npm. Release cadence is irregular; no major updates since 2020.","status":"maintenance","version":"2.0.25","language":"javascript","source_language":"en","source_url":"https://github.com/fingent/xenops","tags":["javascript","framework","web","rest","restful","router","app","api","REST API"],"install":[{"cmd":"npm install xenops","lang":"bash","label":"npm"},{"cmd":"yarn add xenops","lang":"bash","label":"yarn"},{"cmd":"pnpm add xenops","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core server framework for routing and REST API handling.","package":"restify","optional":false},{"reason":"Web socket management for real-time features.","package":"socket.io","optional":true},{"reason":"Database driver for MySQL ORM integration.","package":"mysql","optional":true}],"imports":[{"note":"Xenops is primarily a CLI tool; install globally and run `xenops` to scaffold a project.","wrong":"npx xenops myapp (npx may not work due to global-only package)","symbol":"default (global CLI)","correct":"npm install -g xenops; xenops myapp"},{"note":"The framework uses CommonJS; no ESM exports. The server is scaffolded inside your project.","wrong":"import { XenopsServer } from './server'; (CJS only, no ESM support)","symbol":"XenopsServer (from generated app)","correct":"const { XenopsServer } = require('./server');"},{"note":"The routes.js file exports a Router object directly; destructure only if named export.","wrong":"const { Router } = require('./routes/routes'); (Router is exported as default, not named)","symbol":"Router (from routes)","correct":"const Router = require('./routes/routes');"}],"quickstart":{"code":"npm install -g xenops && xenops myapp && cd myapp && npm install && npm start","lang":"javascript","description":"Scaffolds a new Xenops application, installs dependencies, and starts the server on port 8888."},"warnings":[{"fix":"Pin Restify to v8 in package.json: \"restify\": \"^8.0.0\"","message":"Xenops uses Restify v8; newer versions of Restify have breaking changes.","severity":"deprecated","affected_versions":">=2.0"},{"fix":"Use `npm install -g xenops` instead of npx.","message":"Global installation required; npx may not work because package.json bin is not configured properly.","severity":"gotcha","affected_versions":">=1.0"},{"fix":"Set DB_DRIVER=mysql in config; install mysql package manually if not already.","message":"Database configuration must specify mysql driver explicitly; no other databases supported out-of-the-box.","severity":"gotcha","affected_versions":"*"},{"fix":"Consider migrating to a maintained framework like Express or Fastify.","message":"No active development; last commit in 2020. Security vulnerabilities may exist in dependencies.","severity":"deprecated","affected_versions":">=2.0"}],"env_vars":null,"search_vec":"'2.0.25':21 '2020':107 'allow':75 'api':12,115,117 'app':19,114 'applic':16,30 'architectur':48 'build':10 'cadenc':100 'chat':61 'classroom':63 'client':44 'command':25 'command-lin':24 'core':79 'dashboard':67 'databas':35 'dynam':90 'extens':74 'framework':2,8,72,109 'function':80 'game':70 'global':95 'handler':52 'instal':96 'integr':32 'irregular':102 'javascript':108 'line':26 'log':41 'major':104 'make':54 'manag':36,94 'modul':46 'multi':59 'multi-room':58 'multiplay':69 'mvc':7 'node.js':6 'npm':98 'orient':53 'orm':37 'overrid':78 'provid':22 'real':14,65 'real-tim':13,64 'releas':99 'rest':11,111,112,116 'restifi':34,83 'room':60 'rout':33 'router':113 'scaffold':29 'server':85 'servic':51 'service-handl':50 'sinc':106 'socket.io':38 'static':88 'suitabl':56 'support':39,87 'templat':93 'test':45 'time':15,66 'tool':27 'updat':105 'use':82 'user':76 'valid':40 'version':20 'via':97 'view':91 'virtual':62 'web':18,110 'xenop':1,3","created_at":"2026-06-07T17:03:37.163611+00:00","updated_at":"2026-06-07T17:03:37.163611+00:00","problems":[{"fix":"Run `npm install mysql` in the app directory.","cause":"The mysql driver is not automatically installed when scaffolding a project.","error":"Error: Cannot find module 'mysql'"},{"fix":"Run `npm install -g xenops` and ensure npm global bin is in your PATH.","cause":"Xenops not installed globally or npm global bin not in PATH.","error":"xenops is not recognized as an internal or external command"},{"fix":"Use `const Router = require('./routes/routes');` and then call `Router.get(...)` directly.","cause":"Importing Router incorrectly from routes.js. Router is exported as a plain object, not a class.","error":"TypeError: Router is not a constructor"},{"fix":"Change the port in config/config.js or kill the existing process.","cause":"Port 8888 is already in use by another process.","error":"Error: listen EADDRINUSE :::8888"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/fingent/xenops","github":"https://github.com/fingent/xenops","docs":null,"changelog":null,"pypi":null,"npm":"xenops","openapi_spec":null,"status_page":null,"smithery":null,"categories":["devops"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-07","next_check":"2026-09-05","install_tag":null}}