# alchemymvc

> MVC framework for Node.js

Latest version **1.4.8** (published 2026-07-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install alchemymvc
pnpm add alchemymvc
yarn add alchemymvc
bun add alchemymvc
```

## Health

**Score 60/100 (C)** — status: active.

Positive: esm support; no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 1.4.8 |
| Published | 2026-07-07 |
| First published | 2013-11-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=16.20.1 |
| Dependencies | 26 |
| Unpacked size | 1.4 MB |
| Known vulnerabilities | 0 (+4 in 3 direct dependencies) |
| Install scripts | no |
| GitHub stars | 3 |
| Author | Jelle De Loecker |
| Maintainers | skerit |
| Keywords | alchemy, alchemymvc, mvc |

## Links

- npm: https://www.npmjs.com/package/alchemymvc
- Repository: https://github.com/11ways/alchemy
- Homepage: https://github.com/11ways/alchemy#readme
- Issues: https://github.com/11ways/alchemy/issues
- npm.io page: https://npm.io/package/alchemymvc

## Dependencies (26)

- [ncp](https://npm.io/package/ncp.md) ~2.0.0
- [body](https://npm.io/package/body.md) ~5.1.0
- [bson](https://npm.io/package/bson.md) ~6.10.4
- [bcrypt](https://npm.io/package/bcrypt.md) ~6.0.0
- [mkdirp](https://npm.io/package/mkdirp.md) ~3.0.1
- [semver](https://npm.io/package/semver.md) ~7.7.2
- [terser](https://npm.io/package/terser.md) ~5.43.1
- [hawkejs](https://npm.io/package/hawkejs.md) ~2.4.3
- [mongodb](https://npm.io/package/mongodb.md) ~6.17.0
- [postcss](https://npm.io/package/postcss.md) ~8.5.6
- [chokidar](https://npm.io/package/chokidar.md) ~4.0.3
- [minimist](https://npm.io/package/minimist.md) ~1.2.8
- [socket.io](https://npm.io/package/socket.io.md) ~4.7.5
- [useragent](https://npm.io/package/useragent.md) ~2.3.0
- [formidable](https://npm.io/package/formidable.md) ~3.5.4
- [mime-types](https://npm.io/package/mime-types.md) ~3.0.2
- [protoblast](https://npm.io/package/protoblast.md) ~0.9.9
- [toobusy-js](https://npm.io/package/toobusy-js.md) ~0.5.1
- [body-parser](https://npm.io/package/body-parser.md) ~2.2.0
- [graceful-fs](https://npm.io/package/graceful-fs.md) ~4.2.11
- [autoprefixer](https://npm.io/package/autoprefixer.md) ~10.4.21
- [jsondiffpatch](https://npm.io/package/jsondiffpatch.md) ~0.5.0
- [ansi-256-colors](https://npm.io/package/ansi-256-colors.md) ~1.1.0
- [@picturae/mmmagic](https://npm.io/package/@picturae/mmmagic.md) 0.5.5
- [postcss-prune-var](https://npm.io/package/postcss-prune-var.md) ~1.1.2
- [@11ways/socket.io-stream](https://npm.io/package/@11ways/socket.io-stream.md) ~0.9.2

## Recent versions

- 1.4.8 (latest) — 2026-07-07
- 1.4.0-alpha.12 (alpha) — 2025-07-11
- 1.3.23 (legacy) — 2024-04-13
- 1.4.7 — 2026-07-06
- 1.4.6 — 2026-07-04
- 1.4.5 — 2026-07-03
- 1.4.4 — 2026-06-28
- 1.4.3 — 2026-06-24
- 1.4.2 — 2026-05-28
- 1.4.1 — 2026-02-03
- 1.4.0 — 2026-01-21
- 1.4.0-alpha.11 — 2025-07-10
- 1.4.0-alpha.10 — 2025-07-10
- 1.4.0-alpha.9 — 2024-12-27
- 1.4.0-alpha.8 — 2024-11-28
- … 73 more at https://npm.io/package/alchemymvc/versions

## README

<h1 align="center">
  <img src="https://protoblast.elevenways.be/media/static/alchemy-small.png" width=30 alt="Alchemy logo"/>
  <b>Alchemy</b>
</h1>
<div align="center">
  <!-- CI - Github Actions -->
  <a href="https://github.com/11ways/alchemy/actions/workflows/unit_test.yaml">
    <img src="https://github.com/11ways/alchemy/actions/workflows/unit_test.yaml/badge.svg" alt="Node.js CI (Linux, MacOS, Windows)" />
  </a>

  <!-- Coverage - Codecov -->
  <a href="https://codecov.io/gh/11ways/alchemy">
    <img src="https://img.shields.io/codecov/c/github/11ways/alchemy/master.svg" alt="Codecov Coverage report" />
  </a>

  <!-- DM - Snyk -->
  <a href="https://snyk.io/test/github/11ways/alchemy?targetFile=package.json">
    <img src="https://snyk.io/test/github/11ways/alchemy/badge.svg?targetFile=package.json" alt="Known Vulnerabilities" />
  </a>
</div>

<div align="center">
  <!-- Version - npm -->
  <a href="https://www.npmjs.com/package/alchemymvc">
    <img src="https://img.shields.io/npm/v/alchemymvc.svg" alt="Latest version on npm" />
  </a>

  <!-- License - MIT -->
  <a href="https://github.com/11ways/alchemy#license">
    <img src="https://img.shields.io/github/license/11ways/alchemy.svg" alt="Project license" />
  </a>
</div>
<br>
<div align="center">
  A node.js MVC framework
</div>
<div align="center">
  <sub>
    Coded with ❤️ by <a href="#authors">Eleven Ways</a>.
  </sub>
</div>

# Getting started

You can create a new, empty app by executing this npm command:

```bash
npm init alchemy your-app-name
```

Then `npm install` the package.json contents.
This is only `alchemymvc` by default.

# Installation

Just installing the npm package can be done like this:

    $ npm install alchemymvc

# Quick start guide

You can find all the documentation on [https://alchemy.elevenways.be](https://alchemy.elevenways.be)


## Base class

Most Alchemy classes inherit from the `Base` class (which in turn inherits from the `Informer` class, a custom event emitter class)

Here are some important static methods:

### Base.setProperty([key,] getter, setter)

This will create a property getter/setter on the class. For example:

```js
MyClass.setProperty(function test_me() {
  return 'test!'
});
```

Will create a property getter called 'test_me' that will always return the string "test!"

```js
var instance = new MyClass();
instance.test_me;
// »»» "test!"
```

### Base.setMethod([key,] fnc)

This will add a method to the class. For example:

```js
MyClass.setMethod(function testMe() {
  return 'test!'
});
```

Now you can call this method:

```js
var instance = new MyClass();
instance.testMe();
// »»» "test!"
```

## Models

Creating a server-side model is easy, you need to inherit from the `Alchemy.Model.App`:

```js
var Block = Function.inherits('Alchemy.Model.App', function Block(conduit, options) {
  Block.super.call(this, conduit, options);
});
```

### Model schema

After that you probably want to define the schema to use, that has to be done in a `constitute` call:

```js
Block.constitute(function addFields() {

  // Add a simple unique string field
  this.addField('name', 'String', {unique: true});

  // Another string field, that is not unique
  this.addField('title', 'String');

  // Longer piece of text
  this.addField('content', 'Text');
});
```

By default 3 fields are already added to the schema:

* **_id**: An ObjectID field
* **created**: A datetime field with the creation date
* **updated**: A datetime field that gets updated whenever the record is saved

## Authors

AlchemyMVC is developed at [Eleven Ways](https://www.elevenways.be/), a team of [IAAP Certified Accessibility Specialists](https://www.accessibilityassociation.org/).

---
_Source: https://npm.io/package/alchemymvc · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
