User:Juancarlospaco/sandbox

Nim Website Creator (stylised as NimWC) is a free and open-source web framework.

NimWC primary goal is to ease the creation of complex database-driven websites. The framework emphasizes reusability and "pluggability" of components, less code, low coupling, rapid development, and the principle of don't repeat yourself. Nim Website Creator provides an administrative interface that is generated dynamically through introspection and configured via admin models. NimWC is for both advanced users who wants to write code them self, as well as for persons without special programming knowledge.

History
NimWC first public release was on May 2018 by Thomas T. Jarløv (ThomasTJdev). In November 2018 Juan Carlos Ojeda (juancarlospaco) joined the development team.

Requirements
NimWC is build with Nim (programming language), therefore an installation of Nim is required to build the NimWC executable. When NimWC is build, it can run on any Linux platforms without Nim.

Performance
Nim Website Creator is designed for high performance and low memory and CPU consumption. It tries to solve the C10k problem. NimWC utilizes the web framework Jester and the extremely fast webserver httpbeast.

Licenses
Nim Website Creator code is released under Peer Production License (PPL).

Various third-party Plugins are distributed with their own licenses, mostly MIT licenses.

Community
Nim Website Creator do not have a dedicated chat or communication channel, besides Github issues, but new users are recommended to join the bridged chat channels of Nim on Gitter, Matrix, Telegram, IRC and Discord.

Most of the online community interaction happens on the bridged chat channels of Nim.

Blog and webpages
The main feature of the NimWC is to provide a full featured website, where the user can customize all the pages. This includes:


 * 1-click blogging posts directly from the browser.
 * 1-click static web pages directly from the browser.
 * Raw HTML editing, WYSIWYG editor with Summernote and GrapesJS.
 * Custom title, meta description and keywords for each page, SEO friendly.
 * Custom head, navbar and footer, no hardcoded watermarks, links or logos.
 * Upload/Download files and images (private or public).

Security
The security of the website is integrated into core of NimWC, and more opt-in security features are available. Some of them:


 * Self-Firejailing Web Framework (It Firejails itself) Best Linux Security integrated on the Core.
 * ReCAPTCHA
 * 2 Factor Athentication TOTP
 * Design by Contract contract programming.
 * HoneyPot-Field
 * SQL Type-checked and Query-checked at compile-time, no SQL injections.

Configuration
Almost all the settings can be changed within NimWC by the admin user. This includes:


 * Edit core or custom JS and CSS directly from browser, UI/UX designer friendly.
 * Log-viewer directly from browser.
 * Auto-rotating file Logger.
 * Server info page (system stats).
 * Force Server restart.
 * Edit main config file directly from browser
 * Recompilation (enabling/disabling plugins) without down times.

Plugins
NimWC supports for plugins. The plugins a included during the compile of NimWC, and are a part of the final executable.

Published NimWC plugins are managed through the plugin repo, which users can browse through NimWC.

There are a variety of plugins, e.g.:


 * Backup feature
 * Basket for ecommerce and receipts
 * Newsletter
 * Statistics
 * and more

DevOps
Dockerfile, Vagrantfile, SystemD Service, Desktop launcher file, pure Bash Auto-Install script are provided on a DevOps folder.

Nim Website Creator can be run in conjunction with Apache or Nginx.

Nim Website Creator officially supports database backends: PostgreSQL or SQLite.

Development tools
For developing a NimWC project, no special tools are necessary, since the source code can be edited with any conventional text editor.

Nevertheless, a Skeleton Creator for plugins is built-in and can help increase the productivity of development.

Since NimWC is written in Nim, text editors which are aware of Nim syntax are recommended.

NimWC has command line options to update itself, also to create new Admin users, to create new data in the database and to create new databases.

Compile flags
A full list of NimWC compile flags can be found on NimWC github repo.

Dev Mode
A Dev mode is available as a compile flag for development purposes, the Dev mode makes the framework more verbose and bypass some security restrictions, like ReCAPTCHA.

On Dev mode sending errors via email to the Admin email is automatically disabled, to keep sending error reports via email, the  compile flag can be used.

The Dev mode is activated by adding  on the compile command.

Demo Mode
A Demo mode is available as a compile flag for public demonstration purposes, the Demo mode makes the framework disable some features and fully reset itself every 1 hour.

On Demo mode only the test user is available and 2 Factor Authentication is ignored.

The Dev mode is activated by adding  on the compile command. The official Demo is running on Demo mode.

Postgres
By default an SQLite database is used, because it does not require a database server. But it is possible to switch to Postgres database using the compile flag.

Force Recompile
To force a recompilation a compile flag is provided for development purposes.

The force recompile is activated by adding  on the compile command.

Error Reporting
Sending errors via email to the Admin email can be activated using the compile flag. Error reporting is disabled when Demo mode or Dev mode are activated.

Self Update
The framework can update itself before compilation, using an Internet connection and Git as back-end.

The Git update is activated by adding  on the compile command.

Running NimWC
You can run NimWC in 3 different ways:

Auto install

Nimble

Clone

Online documentation
Online documentation is linked from the Nim Website Creator home page, with videos, examples, API reference, complete library reference, FAQ, cheat sheet, online tools, etc.

Videos

 * Tutorial for running Nim Website Creator.

Presentation Slides

 * Online Presentation Slides (English).
 * Online Presentation Slides (Spanish).