diff options
-rw-r--r-- | 404.html | 24 | ||||
-rw-r--r-- | Gemfile | 29 | ||||
-rw-r--r-- | _config.yml | 42 | ||||
-rw-r--r-- | _includes/footer.html | 18 | ||||
-rw-r--r-- | _includes/header.html | 34 | ||||
-rw-r--r-- | _includes/icon-github.html | 1 | ||||
-rw-r--r-- | _layouts/home.html | 24 | ||||
-rw-r--r-- | _layouts/post.html | 25 | ||||
-rw-r--r-- | _posts/2018-03-01-introduction.markdown | 141 | ||||
-rw-r--r-- | _posts/2018-03-08-kvision-0.0.10-released.markdown | 23 | ||||
-rw-r--r-- | _posts/2018-04-02-kvision-0.0.11-released.markdown | 26 | ||||
-rw-r--r-- | _posts/2018-04-03-kvision-0.0.12-released.markdown | 19 | ||||
-rw-r--r-- | _posts/2018-06-04-kvision-0.0.13-released.markdown | 37 | ||||
-rw-r--r-- | _posts/2018-06-05-kvision-0.0.14-released.markdown | 14 | ||||
-rw-r--r-- | about.md | 36 | ||||
-rw-r--r-- | index.md | 6 |
16 files changed, 0 insertions, 499 deletions
diff --git a/404.html b/404.html deleted file mode 100644 index c472b4ea..00000000 --- a/404.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default ---- - -<style type="text/css" media="screen"> - .container { - margin: 10px auto; - max-width: 600px; - text-align: center; - } - h1 { - margin: 30px 0; - font-size: 4em; - line-height: 1; - letter-spacing: -1px; - } -</style> - -<div class="container"> - <h1>404</h1> - - <p><strong>Page not found :(</strong></p> - <p>The requested page could not be found.</p> -</div> diff --git a/Gemfile b/Gemfile deleted file mode 100644 index 17589d46..00000000 --- a/Gemfile +++ /dev/null @@ -1,29 +0,0 @@ -source "https://rubygems.org" - -# Hello! This is where you manage which Jekyll version is used to run. -# When you want to use a different version, change it below, save the -# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: -# -# bundle exec jekyll serve -# -# This will help ensure the proper Jekyll version is running. -# Happy Jekylling! -#gem "jekyll", "~> 3.6.2" - -# This is the default theme for new Jekyll sites. You may change this to anything you like. -gem "minima", "~> 2.1.1" - -# If you want to use GitHub Pages, remove the "gem "jekyll"" above and -# uncomment the line below. To upgrade, run `bundle update github-pages`. -gem "github-pages", group: :jekyll_plugins - -# If you have any plugins, put them here! -group :jekyll_plugins do - gem "jekyll-feed", "~> 0.6" - gem 'jekyll-livereload' -end - -# Windows does not include zoneinfo files, so bundle the tzinfo-data gem -gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] -gem 'jekyll-seo-tag' - diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 6221e077..00000000 --- a/_config.yml +++ /dev/null @@ -1,42 +0,0 @@ -# Welcome to Jekyll! -# -# This config file is meant for settings that affect your whole blog, values -# which you are expected to set up once and rarely edit after that. If you find -# yourself editing this file very often, consider using Jekyll's data files -# feature for the data you need to update frequently. -# -# For technical reasons, this file is *NOT* reloaded automatically when you use -# 'bundle exec jekyll serve'. If you change this file, please restart the server process. - -# Site settings -# These are used to personalize your new site. If you look in the HTML files, -# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. -# You can create any custom variable you would like, and they will be accessible -# in the templates via {{ site.myvariable }}. -title: KVision -author: Robert Jaros -email: rjaros@treksoft.pl -description: >- # this means to ignore newlines until "baseurl:" - Object oriented Web UI framework for Kotlin/JS. -baseurl: "/kvision" # the subpath of your site, e.g. /blog -url: "https://rjaros.github.io" # the base hostname & protocol for your site, e.g. http://example.com -github_username: rjaros/kvision - -# Build settings -markdown: kramdown -theme: minima -plugins: - - jekyll-feed - - jekyll-seo-tag - -# Exclude from processing. -# The following items will not be processed, by default. Create a custom list -# to override the default setting. -# exclude: -# - Gemfile -# - Gemfile.lock -# - node_modules -# - vendor/bundle/ -# - vendor/cache/ -# - vendor/gems/ -# - vendor/ruby/ diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index 9b9d02bb..00000000 --- a/_includes/footer.html +++ /dev/null @@ -1,18 +0,0 @@ -<footer class="site-footer"> - - <div class="wrapper"> - <div class="footer-col-wrapper"> - <div class="footer-col footer-col-1"> - <ul class="contact-list"> - <li> - Author: <a href="mailto:rjaros@treksoft.pl">Robert Jaros</a> - </li> - </ul> - </div> - </div> - - </div> - -</footer> - -<a href="https://github.com/rjaros/kvision"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a> diff --git a/_includes/header.html b/_includes/header.html deleted file mode 100644 index ceeee0c9..00000000 --- a/_includes/header.html +++ /dev/null @@ -1,34 +0,0 @@ -<header class="site-header" role="banner"> - - <div class="wrapper"> - {% assign default_paths = site.pages | map: "path" %} - {% assign page_paths = site.header_pages | default: default_paths %} - <a class="site-title" href="{{ "/" | relative_url }}">{{ site.title | escape }}</a> - {% if page_paths %} - <nav class="site-nav"> - <input type="checkbox" id="nav-trigger" class="nav-trigger" /> - <label for="nav-trigger"> - <span class="menu-icon"> - <svg viewBox="0 0 18 15" width="18px" height="15px"> - <path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/> - <path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/> - <path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/> - </svg> - </span> - </label> - - <div class="trigger"> - {% for path in page_paths %} - {% assign my_page = site.pages | where: "path", path | first %} - {% if my_page.title %} - <a class="page-link" href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a> - {% endif %} - {% endfor %} - </div> - </nav> - {% endif %} - <div style="clear: both;"> - <p>{{ site.description | escape }}</p> - </div> - </div> -</header> diff --git a/_includes/icon-github.html b/_includes/icon-github.html deleted file mode 100644 index 7f2ac935..00000000 --- a/_includes/icon-github.html +++ /dev/null @@ -1 +0,0 @@ -<a href="https://github.com/{{ include.username }}"><span class="icon icon--github">{% include icon-github.svg %}</span><span class="username">KVision on GitHub</span></a> diff --git a/_layouts/home.html b/_layouts/home.html deleted file mode 100644 index 6441149f..00000000 --- a/_layouts/home.html +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: default ---- - -<div class="home"> - - {{ content }} - - <ul class="post-list"> - {% for post in site.posts %} - <li> - {% assign date_format = site.minima.date_format | default: "%b %-d, %Y" %} - <span class="post-meta">{{ post.date | date: date_format }}</span> - - <h2> - <a class="post-link" href="{{ post.url | relative_url }}">{{ post.title | escape }}</a> - </h2> - </li> - {% endfor %} - </ul> - - <p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | relative_url }}">via RSS</a></p> - -</div> diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index 0063b356..00000000 --- a/_layouts/post.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -layout: default ---- -<article class="post" itemscope itemtype="http://schema.org/BlogPosting"> - - <header class="post-header"> - <h1 class="post-title" itemprop="name headline">{{ page.title | escape }}</h1> - <p class="post-meta"> - <time datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished"> - {% assign date_format = site.minima.date_format | default: "%b %-d, %Y" %} - {{ page.date | date: date_format }} - </time> - {% if page.author %} - • <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">{{ page.author }}</span></span> - {% endif %}</p> - </header> - - <div class="post-content" itemprop="articleBody" style="text-align: justify;"> - {{ content }} - </div> - - {% if site.disqus.shortname %} - {% include disqus_comments.html %} - {% endif %} -</article> diff --git a/_posts/2018-03-01-introduction.markdown b/_posts/2018-03-01-introduction.markdown deleted file mode 100644 index 4497a023..00000000 --- a/_posts/2018-03-01-introduction.markdown +++ /dev/null @@ -1,141 +0,0 @@ ---- -layout: post -title: "Introduction" -author: Robert Jaros -date: 2018-03-01 14:50:53 +0100 -categories: kvision kotlin ---- - -This is my first article about [KVision](https://github.com/rjaros/kvision) - a new open source Web UI framework written in Kotlin language. -I plan to write a series of them - describing what KVision is and how to use it. I will try to explain the design, focus on the -unique features and demonstrate the usage examples. - -### Why new framework? - -There are of course many different front-end frameworks on the market. A lot of them share many similarities, others offer some special and unique features. -Probably most of them are plain JavaScript frameworks, but there are other languages and technologies in play as well. -Just look at [TodoMVC](http://todomvc.com) website to find them and learn about them. - -I've been working with different technologies and frameworks for many years. I've used them in many commercial and non-commercial projects of different size and complexity. -Most of the time I was more then satisfied with the tools I've been using. But I've never found a solution, I could just call perfect. There was always something missing -and something was not fully correct. - -I don't really like to go with the mainstream. I like to explore and learn new possibilities. I try to make things easier and more productive. I like to reuse and integrate good stuff, -made by other people available in open source. I had many thoughts and conclusions about features, a perfect framework should have. -And finally I've decided to make my own framework. I plan to make it a perfect solution for me - it's quite easy when you know the expectations ;-) -But I hope it can be a good solutions for a few other developers as well. - -### Main features - -#### Compiled and strongly typed programming language - -When you work on a small project, dynamic and loosely typed programming language (like JavaScript) is more then OK. -But when the project becomes big and complex, and more developers are working with it, you just need to have more control over the code. You have to be able -to find bugs as soon as possible. You have to be able to refactor a large portions of code. It is possible only with compiled languages. -There are a few such languages in use for web development today - e.g. TypeScript or Scala. And Kotlin is just at the beginning of its way in this -direction. In fact, KVision project started as "SVision" written with [Scala.js](https://www.scala-js.org/), but soon I've decided to change the language to Kotlin, -because of much better IDE support, simpler design and better compilation time. - -#### Object oriented, imperative design - -Unlike most of the popular web frameworks (AngularJS, React, Vue.js and others), -KVision is not declarative - it is not designed to mix HTML code (or pseudo code) with a typical -programming language. You can write KVision application without any knowledge of HTML or CSS, -but at the same time you are able to use this knowledge if you wish. - -In KVision everything is just written in Kotlin. Your whole application is designed as type-safe and compiled. -KVision gives you a hierarchy of consistent components, which you can just use in your project or which you can extend to -modify their default behavior. You reuse you code by well known OOP design patterns - composition and inheritance. - -This design is well known in the UI programming world. In fact, it's probably used everywhere but in the web environment. -Swing, JavaFX, QT and WinForms are clear and solid examples of object oriented UI libraries and KVision goes the same way. - -#### Ready to use components - -Many frameworks give you well designed architecture but lack ready to use components. You have to -search the Internet to find ways to use rich text editor, advanced select box, date picker or even -a simple tab panel. - -KVision contains: - -- sophisticated containers (tabs, stack, dock, grid, horizontal, vertical, flexbox, responsive), -- a bunch of text input components including rich text editor -- buttons, checboxes and radios -- date and time picker -- spinner -- advanced select box with ajax support -- data binding components -- modals -- floating, resizable windows - -All of them with modern, [Bootstrap](https://getbootstrap.com/) based look & feel, and a consistent behavior. - -#### Forms support - -Almost all non trivial applications use some kind of forms. But implementing form support in not only about -showing form controls on the screen. Form items are bound to some data model, and this model should be type-safe. -You would like your text inputs to be "Strings", but you would also like your date values to be of "Date" type, -your spinner value to be "Number" and your checkbox state to be "Boolean". KVision lets you do it in an easy -and consistent way. And additionally it allows you to define and test validation for single fields or for the complete forms. - -#### Suitable for any application - -KVision was designed to be open and flexible. By default it gives you [Bootstrap](https://getbootstrap.com/) based look & feel, -but it can be disabled if you wish. Then you can design your application appearance from the scratch, and you are limited only -by your own knowledge of CSS. - -Ability to implement a fully compatible [TodoMVC](http://todomvc.com) -application, which you can find in the [KVision-examples](https://github.com/rjaros/kvision-examples) repository, -proves that KVision is suitable for any kind of projects, including responsive, mobile web applications or even a simple, plain websites. - -#### Last but not least - -Other KVision features: - -- Type safe DSL builders -- [Font awesome](https://fontawesome.com/) icons support -- Drag & drop support -- Integrated JS router -- [Karma](https://karma-runner.github.io/) testing framework support -- Full IDE support with IntelliJ IDEA Community Edition - -make this framework a complete solution ready for many different use cases. I will go into details of these features -in the following articles. - -### Get started - -1. Download [KVision examples](https://github.com/rjaros/kvision-examples) from GitHub: - - git clone https://github.com/rjaros/kvision-examples.git - -2. Enter "template" example directory: - - cd kvision-examples/template (on Linux) - cd kvision-examples\template (on Windows) - -3. Run Gradle incremental build with: - - ./gradlew -t run (on Linux) - gradlew.bat -t run (on Windows) - -4. Open [http://localhost:8088/](http://localhost:8088/) in your browser. - -5. Import "template" project in IntelliJ IDEA and open src/main/kotlin/com/example/App.kt file. -You can of course use your favourite text editor. - -6. Add some code inside the **start** function: - - override fun start(state: Map<String, Any>) { - Root("kvapp") { - label("Hello world!") - } - } - -7. See your changes immediately in the browser. - -### Learn more - -- Explore all [KVision examples](https://github.com/rjaros/kvision-examples) -- Read other articles at [KVision website](https://rjaros.github.io/kvision/) -- Check [API Documentation](https://rjaros.github.io/kvision/api/) -- Fork and play with the [source code](https://github.com/rjaros/kvision) diff --git a/_posts/2018-03-08-kvision-0.0.10-released.markdown b/_posts/2018-03-08-kvision-0.0.10-released.markdown deleted file mode 100644 index 55c67f56..00000000 --- a/_posts/2018-03-08-kvision-0.0.10-released.markdown +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: post -title: "KVision 0.0.10 released" -author: Robert Jaros -date: 2018-03-08 15:50:53 +0100 -categories: kvision kotlin ---- - -I've just released KVision 0.0.10. - -Changelog: - -- support for more CSS properties including text, font, float and clear -- changes to the DataContainer component -- changes to the StackPanel component -- add focus() and blur() methods to all form controls - -I've also published a new example - an address book application. It shows how to present data in a table view with -sorting and searching functionality, and also presents basic usage of KVision forms. You can find the -[sources](https://github.com/rjaros/kvision-examples/tree/master/addressbook) on GitHub and live demo -is available [here](https://rjaros.github.io/kvision-examples/addressbook/). - -I plan to write KVision tutorial based on this application soon.
\ No newline at end of file diff --git a/_posts/2018-04-02-kvision-0.0.11-released.markdown b/_posts/2018-04-02-kvision-0.0.11-released.markdown deleted file mode 100644 index d856b187..00000000 --- a/_posts/2018-04-02-kvision-0.0.11-released.markdown +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: post -title: "KVision 0.0.11 released" -author: Robert Jaros -date: 2018-04-02 22:30:00 +0100 -categories: kvision kotlin ---- - -I've just released KVision 0.0.11. - -Changelog: - -- Support for [Bootswatch](https://bootswatch.com/3/) and possibly other custom CSS themes (Bootstrap 3 compatible). -- Add support for Bootstrap navbar component. -- Add suport for context menu component, which can be enabled on any widget. -- Add Bootstrap toolbar and button group components. -- Add Bootstrap progress bar component. -- Add simple HTML iframe component. -- Add full-featured file upload component based on [Bootstrap file input](http://plugins.krajee.com/file-input). -- Add [Handlebar.js](http://handlebarsjs.com/) templates support for all text widgets. -- Add support for plain HTML form attributes (method, action, enctype, target, ...). -- Many other various enhancements and bug fixes. - -The [examples](https://github.com/rjaros/kvision-examples) were also updated. The [Address book](https://rjaros.github.io/kvision-examples/addressbook/) -example uses Material-like CSS theme and the [Showcase](https://rjaros.github.io/kvision-examples/showcase/) example presents all new -features and components in action. diff --git a/_posts/2018-04-03-kvision-0.0.12-released.markdown b/_posts/2018-04-03-kvision-0.0.12-released.markdown deleted file mode 100644 index 39651aec..00000000 --- a/_posts/2018-04-03-kvision-0.0.12-released.markdown +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: post -title: "KVision 0.0.12 released" -author: Robert Jaros -date: 2018-04-03 18:22:00 +0100 -categories: kvision kotlin ---- - -I've just released KVision 0.0.12. - -Changelog: -- some fixes in navigation bar component -- added support for dropdowns without caret icon -- some other minor fixes and enhancements - -There is also a new example - a very simple desktop application with three mini apps - a calculator, -a text editor and a web browser. You can find the -[sources](https://github.com/rjaros/kvision-examples/tree/master/desktop) on GitHub and live demo -is available [here](https://rjaros.github.io/kvision-examples/desktop/). diff --git a/_posts/2018-06-04-kvision-0.0.13-released.markdown b/_posts/2018-06-04-kvision-0.0.13-released.markdown deleted file mode 100644 index 5571198e..00000000 --- a/_posts/2018-06-04-kvision-0.0.13-released.markdown +++ /dev/null @@ -1,37 +0,0 @@ ---- -layout: post -title: "KVision 0.0.13 released" -author: Robert Jaros -date: 2018-06-04 14:29:00 +0100 -categories: kvision kotlin ---- - -I've just released KVision 0.0.13. - -Changelog: -- DockPanel usability fixes -- a dialog component -- new simple HTML5 canvas component -- add resizeWindow event to Window component -- add dependencies on kotlinx.serialization and kotlinx.coroutines -- multiplatform kvision-common and kvision-server modules -- Jooby framework integration with automatic JSON-RPC connectivity -- Kwery ORM integration -- Pac4j security module integration -- change module kind option to 'umd' - -KVision contains now an innovative connectivity interface for [Jooby](https://jooby.org) micro web framework on the server side, -which allows to build full-stack, multiplatform applications with shared common code. KVision closely integrates the client and -the server side of the project with a shared data model and fully type-safe connectivity between both sides (based on -automatically generated routings and JSON-RPC endpoints). - -I've created a new example application - "Address book - fullstack". It utilizes: - -- H2 SQL database (configured for "filesystem" database) -- [Kwery](https://github.com/andrewoma/kwery) ORM for database connectivity -- [Pac4J](https://github.com/pac4j/pac4j) security engine for authentication and profile management - -The architecture of the project is heavily based on Kotlin coroutines, wrapping asynchronous client-server calls into easy-to-read -synchronous-like code. - -[You can play with live demo on Heroku](https://kvision-address-book.herokuapp.com/) diff --git a/_posts/2018-06-05-kvision-0.0.14-released.markdown b/_posts/2018-06-05-kvision-0.0.14-released.markdown deleted file mode 100644 index d8b57ffa..00000000 --- a/_posts/2018-06-05-kvision-0.0.14-released.markdown +++ /dev/null @@ -1,14 +0,0 @@ ---- -layout: post -title: "KVision 0.0.14 released" -author: Robert Jaros -date: 2018-06-05 14:29:00 +0100 -categories: kvision kotlin ---- - -I've just released KVision 0.0.14. - -It fixes an important bug in a KDate type converter for Kwery ORM. - -There is also a new example - Number Converter. A simple application to convert integer numbers to words by -using [Tradukisto](https://github.com/allegro/tradukisto) library. diff --git a/about.md b/about.md deleted file mode 100644 index 422bdcd4..00000000 --- a/about.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -layout: page -title: About -permalink: /about/ ---- - -KVision allows you to build user interface of modern web applications with the [Kotlin](https://kotlinlang.org) language. -It's designed to be object oriented in the "most classical" sense - it gives you a hierarchy of many different components, -which are used to build application UI. - -Unlike most of the popular web UI frameworks (AngularJS, React, Vue.js and others), -KVision is not declarative - it is not designed to mix HTML code (or pseudo code) with a typical -programming language like JavaScript. In KVision everything is just written in Kotlin, and your code can be reused not by creating any templates, -but by using well known OOP design patterns - composition and inheritance. - -This design is quite similar to many non-web UI programming libraries including Swing (Java), QT (C++) and WinForms (C#). - -## Features - -- 100% type safe and fully compiled dev environment. -- Type safe DSL builders. -- Based on [Bootstrap](https://getbootstrap.com/) styles, typography and components. -- Utilizes [Snabbdom](https://github.com/snabbdom/snabbdom) fast virtual DOM implementation. -- Integrates with libraries and components from [Font awesome](https://fontawesome.com/), [Bootstrap Select](https://github.com/silviomoreto/bootstrap-select) (with [AJAX](https://github.com/truckingsim/Ajax-Bootstrap-Select) extension), -[Awesome Bootstrap Checkbox](https://github.com/flatlogic/awesome-bootstrap-checkbox), [Trix editor](https://trix-editor.org/), [Bootstrap Datetime picker](https://github.com/AuspeXeu/bootstrap-datetimepicker), -[Bootstrap touchspin](https://github.com/istvan-ujjmeszaros/bootstrap-touchspin), [Bootstrap File Input](http://plugins.krajee.com/file-input), - [Handlebars](http://handlebarsjs.com/) and [Navigo](https://github.com/krasimir/navigo). -- Includes sophisticated layout containers, including CSS flexbox, CSS grid and Bootstrap responsive 12 columns grid. -- Includes convenient forms implementation, with support for many different input components and easy to use validation. -- Data binding support for [observable](https://github.com/rjaros/kotlin-observable-js) data model. -- Easy to use Drag & Drop support. -- Ready to explore [KVision examples](https://github.com/rjaros/kvision-examples) are available, -built with [Gradle](https://gradle.org/) and supporting Webpack's [Hot Module Replacement (HMR)](https://webpack.js.org/concepts/hot-module-replacement/) and -[Kotlin JavaScript DCE (dead code elimination)](https://kotlinlang.org/docs/reference/javascript-dce.html). -- [Karma](https://karma-runner.github.io/) testing framework support. -- IDE support (IntelliJ IDEA Community Edition). diff --git a/index.md b/index.md deleted file mode 100644 index 1eb5d672..00000000 --- a/index.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -# You don't need to edit this file, it's empty on purpose. -# Edit theme's home layout instead if you wanna make some changes -# See: https://jekyllrb.com/docs/themes/#overriding-theme-defaults -layout: home ---- |