An open API service indexing awesome lists of open source software.

https://github.com/11ways/alchemy

๐Ÿงช A node.js framework
https://github.com/11ways/alchemy

mvc-framework nodejs

Last synced: 6 months ago
JSON representation

๐Ÿงช A node.js framework

Awesome Lists containing this project

README

        


Alchemy logo
Alchemy





Node.js CI (Linux, MacOS, Windows)



Codecov Coverage report



Known Vulnerabilities




Latest version on npm



Project license





A node.js MVC framework



Coded with โค๏ธ by Eleven Ways.

# 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/).