# Welcome fellow developer !

Idylle is a thin layer on top of two majors micro frameworks. [Express](http://expressjs.com/fr/) for the REST | HTTP  part and [Socket.io](https://socket.io/) for the realtime.

Since few years, Javascript has become one of the major language for both front and backend applications. Lot's of server-side frameworks came in the market, [Loopback](http://loopback.io/), [Sails](https://sailsjs.com/), [Feathers](https://feathersjs.com/), [Nest](https://nestjs.com/), each of them with their philosophy, some focusing on developer productivity, others on the [Programming Paradigm](https://en.wikipedia.org/wiki/Programming_paradigm), other on the [Architecture](https://en.wikipedia.org/wiki/Software_architecture).&#x20;

Idylle wants to stay a micro framework by its lack of bundled functionality like :

* [Accounts](https://en.wikipedia.org/wiki/User_account), authentication, authorization, roles, etc.
* Database abstraction&#x20;
* Input validation and input sanitation.
* [Web template](https://en.wikipedia.org/wiki/Web_template) engine.

Not providing those feature out of the box doesn't mean you cannot find open source modules/tools avoiding you to redesign the wheel. It just means we think providing a framework doing everything is like having a 'God Class'. It could work, for a time, but the more you progress the less it becomes clear, ending with a black box that no one understand and no one wants to touch.

## The Story

This framework has been designed in 2016 because of the lack of choices in terms of lightweight frameworks. For sure there was [Express](http://expressjs.com/fr/), [Hapi](https://hapijs.com/), [Total.js](https://www.totaljs.com/) and all sorts of micro frameworks, but none of them where fitting with our expectations in terms of **Architecture**.

Mainly developed by one person (so far), it has been used by teams from different backgrounds, server-side developers, junior/seniors Web Front developers, seniors Android / iOS Developers. The main feedback is the "Steep learning curve". As long as you have the core concept of [Asynchronous programming](https://en.wikipedia.org/wiki/Asynchrony_\(computer_programming\)), [Javascript Promises](https://en.wikipedia.org/wiki/Futures_and_promises) and [Multitier architecture](https://en.wikipedia.org/wiki/Multitier_architecture), you are good to go! Everything else will seem really simple.

## The Philosophy

### Model Oriented | Designed for Microservices

When Idylle has been designed it was after a major shift in our server side architecture. Even if we adopted CI/CD, and N-tier architecture, we wasn't really aware of more granular concepts like [Microservices](https://martinfowler.com/microservices/).

At the time we tried few frameworks ([Loopback.io](http://loopback.io/) and [Sails.js](https://sailsjs.com/)) and even if we loved the concepts behind each, we felt like making a choice without a full commitment.&#x20;

When we designed Idylle it was (and still is) with the goal of providing the best tools for micro-services architectures.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://julien-sarazin.gitbook.io/idylle/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
