npm package: @solsoftware/capsula
Description: Capsula library lets you build JavaScript applications using highly reusable, flexible, and encapsulated software components called capsules. Executable both within the browser and node.js.
Latest version: 0.3.0

# Capsula

[![Join the chat at https://gitter.im/capsula-js/Lobby](https://badges.gitter.im/capsula-js/Lobby.svg)](https://gitter.im/capsula-js/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)

**Capsula** library lets you build JavaScript applications using highly reusable, flexible, and encapsulated software components called "capsules". Capsula helps you develop web-based applications that run in the browser and server-side Node.js applications. You can even build cross-platform desktop applications using Capsula on top of [NW.js](https://nwjs.io/), [Electron](https://electronjs.org/), or similar platform.

With Capsula you can:

- create your application out of **encapsulated components** - capsules.
- have **multi-level architectural views** of your application which helps handle complexity better.
- easily implement complex lifecycles using **state machines**.
- **build user interfaces flexibly** by leveraging quite a unique way of managing layout.
- **handle asynchronous communication** focusing only on what's essential.
- be **both declarative and imperative** having the best of both worlds.
- exploit **really fast dev cycle** of plain JavaScript; no transpiling in the process.

## Getting Started

Check out our [web site's home page](https://solsoftware.github.io/capsula) to start exploring Capsula.

Or immediately get started with the [tutorial](https://solsoftware.github.io/capsula/tutorial).

### Browser Sandbox

For a quick start within your browser copy the contents of the `sandbox` folder into the root folder of your web app and open the `index.html` file in your web browser. The source code for the "Hello world" page is in the `sandbox/scripts/main.js` file.

## Bugs

Use [Github issues](https://github.com/solsoftware/capsula/issues) to report problems, suggest improvements, etc.

## Contributing

If you are willing to help further develop this project, please read the [our contribution guidelines](https://github.com/solsoftware/capsula/blob/master/CONTRIBUTING.md) file for all the details.

## Release History

Visit [Github releases](https://github.com/solsoftware/capsula/releases) to browse release history.

## Versioning

We use [semantic versioning](https://semver.org/).

## Maintainers

- [Zarko Mijailovic](mailto:zarko.mijailovic@sol.rs), SOL Software

## Code of Conduct
Please note that this project is released with a [Contributor Code of Conduct](https://github.com/solsoftware/capsula/blob/master/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.

## Attributions

- Inspiration for this project comes from [ROOM](https://en.wikipedia.org/wiki/Real-Time_Object-Oriented_Modeling)
- Tests have been developed using Jasmine: [https://jasmine.github.io/index.html](https://jasmine.github.io/index.html)
- Documentation has been developed using JSDoc: [http://usejsdoc.org/](http://usejsdoc.org/)
- Drawings have been developed using draw.io: [https://www.draw.io/](https://www.draw.io/)

## License

Copyright (c) 2018 SOL Software. This software is licensed under the Apache-2.0 License.