{"id":34911187,"url":"https://github.com/snieda/tsl2nano","last_synced_at":"2026-05-23T02:33:26.025Z","repository":{"id":42487171,"uuid":"203230113","full_name":"snieda/tsl2nano","owner":"snieda","description":"java no-coding/fullstack database driven application framework","archived":false,"fork":false,"pushed_at":"2025-12-26T08:34:27.000Z","size":191871,"stargazers_count":1,"open_issues_count":20,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-02-19T04:37:19.706Z","etag":null,"topics":["bean","framework","html5","jpa","mda","naked-objects","no-coding","websockets"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/snieda.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-08-19T18:46:14.000Z","updated_at":"2025-12-21T17:31:33.000Z","dependencies_parsed_at":"2025-09-28T22:14:24.168Z","dependency_job_id":null,"html_url":"https://github.com/snieda/tsl2nano","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/snieda/tsl2nano","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snieda%2Ftsl2nano","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snieda%2Ftsl2nano/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snieda%2Ftsl2nano/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snieda%2Ftsl2nano/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snieda","download_url":"https://codeload.github.com/snieda/tsl2nano/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snieda%2Ftsl2nano/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33380731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T01:21:08.577Z","status":"online","status_checked_at":"2026-05-23T02:00:05.530Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bean","framework","html5","jpa","mda","naked-objects","no-coding","websockets"],"created_at":"2025-12-26T11:18:37.244Z","updated_at":"2026-05-23T02:33:26.018Z","avatar_url":"https://github.com/snieda.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TSL2 Html5 Application Framework\r\n\r\n![Java CI with Maven](https://github.com/snieda/tsl2nano/workflows/Java%20CI%20with%20Maven/badge.svg)\r\n![Coveralls github](https://img.shields.io/coveralls/github/snieda/tsl2nano?style=plastic)\r\n\r\n## Homepage\r\n\r\n[home on sourceforge](https://sourceforge.net/projects/tsl2nano/)\r\n\r\n## Content\r\n\r\n[pom](pom.xml) \r\n\r\n## Features\r\n\r\n* pure model implementation + platform independence (naked objects, works on android, too).\r\n* small, having as less as possible static dependencies to other libraries\r\n* using with zero code possible\r\n* everything has a default - all defaults are configurable (Convention over Configuration)\r\n* application, session and entity behaviors are configurable\r\n* implementation through simple java beans + optional bean presenters\r\n* you develop ui independent, but are able to use ui dependent extensions.\r\n* no new language to learn. knowing html5 allows to improve layout and styling.\r\n* navigates through given beans, showing bean-lists and bean-detail dialogs.\r\n* resolves all bean/entity relations to be browsed.\r\n* navigation can be a configurable workflow - or simply an entity browser \r\n* pre-defines formatting, validation and presentation of relations\r\n* pure html-5 (no javascript, only html5-scripting-api for websockets)\r\n* jvm scripts like javascript, groovy and python can be included by rules using the java scriptengine\r\n* using websockets to show status messages, input-assist and dependency field or timer refreshing\r\n* using websockets to provide a chat system\r\n* pure jpa - jpa-annotations are read to resolve attribute-presentation\r\n* independent of a special o/r mapper. all o/r mappers supporting javax.persistence with an EntityManager are usable.\r\n* simple database replication on user-loaded data - offline working possible\r\n* full key-navigation (shortcuts)\r\n* framework designs interfaces and provides extendable implementations\r\n* useable as standalone or web-service (with offline access), can connect to application-server or works standalone.\r\n* many features through nano.common, and nano.incubation like a rule, sql, action engine, network executor etc.\r\n* resolves all external (jdbc-drivers, etc.) jar-dependencies on runtime on an available network connection\r\n* handling blobs of data (byte[]) to be presented in html as picture, audio, video or object.\r\n* providing attributes as virtuals (not bound to a real bean-attribute, rule-expressions, sql-query-expressions and RESTful-service-call-expressions\r\n* automatic translations through network connection\r\n* secure connection over https and wss (_app.ssl.activate=true)\r\n* supporting yaml on environment and bean configurations.\r\n* update mechanism\r\n* injecting own logic on the forms html dom document\r\n* inject onw logic in all phases of presenting through annotations\r\n* show complex dialogs through websockets to edit beans without leaving the current page\r\n* REST service for access/modification of all loaded entities\r\n\r\n## Documentation\r\n\r\n* [Short Wiki-Documentation on SourceForge](https://sourceforge.net/projects/tsl2nano/)\r\n* [Full Wiki-Documentation on SourceForge (not actualized, long loading)](https://sourceforge.net/p/tsl2nano/wiki/tsl2-nano%20Home/)\r\n* [Full Wiki-Documentation (actualized, no pictures)](tsl2.nano.h5/nano.h5.md.html)\r\n* [Video Tutorial on Youtube](https://www.youtube-nocookie.com/embed/WuC37CLdxSA?rel=0)\r\n\r\n### Documentation of Submodules\r\n\r\n* [Core (core library)](tsl2.nano.core/readme.md)\r\n* [Common (common library)](tsl2.nano.common/readme.md)\r\n* [Aspects (simple aspect library)](tsl2.nano.aspects/README.MD)\r\n* [Autotest (Unit Test Generation Framework)](tsl2.nano.autotest/readme.md)\r\n* [Cursus (Change Managment System)](tsl2.nano.cursus/readme.md.html)\r\n* [Generator (Source generation framework)](tsl2.nano.generator/README.MD)\r\n* [Maven Generator (Maven Plugin as Source generation framework)](tsl2.nano.maven-generator/README.MD)\r\n* [Archetype (Maven archetype for full generated spring/springboot/thymeleaf application)](tsl2.nano.archetype/README.MD)\r\n* [ModelKit (do actions on a list of items)](tsl2.nano.modelkit/README.md.html)\r\n* [Terminal (Console Application Framework)](tsl2.nano.terminal/sishell.markdown)\r\n* [Service Access (JEE Access Framework)](tsl2.nano.directaccess/nano-serviceaccess.textile)\r\n* [Direct Access (JPA Direct Access Framework)](tsl2.nano.directaccess/nano-directaccess.textile)\r\n* [Nano H5 Thymeleaf Extension](tsl2.nano.h5-thymeleaf/tsl2-thymeleaf-tutorial.md)\r\n* [Logbook (Example NanoH5 application)](tsl2.nano.h5/README.MD)\r\n\r\n## Code\r\n\r\n* [sourceforge](https://sourceforge.net/p/tsl2nano/code/ci/master/tree/)\r\n* [github](https://github.com/snieda/tsl2nano.git)\r\n* [gitlab](https://gitlab.com/snieda/tsl2nano.git)\r\n\r\n## Releases\r\n\r\n* [Maven Central](https://mvnrepository.com/artifact/net.sf.tsl2nano/tsl2.nano.h5-package)\r\n* [Sourceforge]  (https://sourceforge.net/projects/tsl2nano/files/latest/download)\r\n* [Gitlab]       (https://gitlab.com/snieda/tsl2nano/-/releases)\r\n* [Github]       (https://github.com/snieda/tsl2nano/releases)\r\n\r\n## Quickstart\r\n\r\n### preconditions\r\n\r\n* installed java jdk at least version 17\r\n* be online to refresh jars and generate sample database \r\n* download a release of tsl2.nano.h5 jar file\r\n\r\n### start\r\n\r\n* open a terminal/console \r\n* go to folder where you downloaded the jar file\r\n* start: *java -jar tsl2.nano.h5-x.x.x.jar (replace 'x' with version number)\r\n* a browser window will open: hit the central link to enter the login dialog\r\n* for a first impression, just start with default entries, hit button 'Ok' or ALT+o\r\n* after a while, a default 'anyway' database is created and opened to play around\r\n\r\n### ...and then...\r\n\r\n* after first start, a *run.sh* or *run.bat* is created to be started on the second time\r\n* perhaps change the database url to another one to generate beans for it and to work on it\r\n* on the login dialog open the details expandable panel to play around it\r\n* if you are connected, open a database entry, enter the configuration through the menu and change the layout\r\n\r\n## Screenshots\r\n\r\n![application+datbase-login](tsl2.nano.h5/doc/application+datbase-login.png)\r\n![entity-browser](tsl2.nano.h5/doc/entity-browser.png)\r\n![entity-browser](tsl2.nano.h5/doc/entity-browser-mobile.png)\r\n![entity-searchdialog](tsl2.nano.h5/doc/entity-searchdialog.png)\r\n![entity-detaildialog](tsl2.nano.h5/doc/entity-detaildialog.png)\r\n![entity-configuration](tsl2.nano.h5/doc/entity-configuration.png)\r\n![entity-attribute-configuration](tsl2.nano.h5/doc/entity-attribute-configuration.png)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnieda%2Ftsl2nano","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnieda%2Ftsl2nano","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnieda%2Ftsl2nano/lists"}