Wondering what’s next for npm?Check out our public roadmap! »

impress

2.0.1 • Public • Published

impress logo

ci Status codacy snyk npm version npm downloads/month npm downloads license

Impress application server for node.js. All decisions are made and optimized for security, performance, high-intensive network operations, scalability, interactivity, rapid development practices, and clean project structure.

Quick start

Metarhia and Impress application server way

  • Applied code need to be simple and secure, so we use code sandboxing with v8 isolated contexts, worker threads and minimal trusted npm dependencies;
  • Domain code need to be separated from system code; so we use DDE, layered (onion) architecture, DI, SOLID:DIP principle and contract-based approach;
  • Impress supports both stateful applications with RPC and client-session sticky to servers; microservices, centralized and distributed architectire;
  • No I/O is faster even then async I/O, so we hold state in memory and use lazy I/O for persistent storage;

Features

  • Auto API routing, just create endpoint files as an async js lambda function;
  • API code live reload with file system watch (when files changes on disk);
  • Graceful shutdown and application state recovery after reload;
  • Minimum code size and dependencies;
  • Can scale on multiple threads and servers;
  • Code sandboxing for security, dependency injection and context isolation;
  • Utilize multiple CPU cores and serve multiple ports with worker threads;
  • Inter-process communication and shared memory used for state management;
  • State synchronization mechanism with transactions and subscription;
  • Cache server-side executable JavaScript in memory;
  • API development support: AJAX RPC and Websocket support;
  • Serve static files from memory cache;
  • Application configuration (for different named environments);
  • Database access layer for PostgreSQL and Relational db schemas;
  • Persistent sessions support with authentication, groups and anonymous;
  • Multiple protocols: HTTP, HTTPS, WS, WSS;
  • Logging with buffering (lazy write) and rotation (keep logs N days);
  • File utilities: upload, download, streaming;
  • Built-in simple testing framework;
  • Server health monitoring;
  • Built-in data structures validation and preprocessing library;
  • Task scheduling (interval or certain time);
  • Request queue with timeout and size;
  • Execution timeout and error handling;

Requirements

  • Node.js v12.9.0 or later (v14 preferred)
  • Linux (tested on Fedora 30, Ubuntu 16, 18, 19 and 20, CentOS 7 and 8)
  • Postgresql 9.5 or later (v11.8 preferred)
  • OpenSSL v1.1.1 or later (optional, for https & wss)
  • certbot (recommended but optional)

License & Contributors

Copyright (c) 2012-2021 Metarhia contributors. See github for full contributors list. Impress Application Server is MIT licensed. Project coordinator: <timur.shemsedinov@gmail.com>

Install

npm i impress

DownloadsWeekly Downloads

1,433

Version

2.0.1

License

MIT

Unpacked Size

33.3 kB

Total Files

13

Homepage

metarhia.com

Last publish

Collaborators

  • avatar
  • avatar
  • avatar
  • avatar