Jam.py (web framework): Difference between revisions

Content deleted Content added
No edit summary
WP:LINKs: WP:Disambiguate, update-standardizes, underscore > space, needless-WP:PIPE > WP:NOPIPE. Cut needless whitespace character carriage returns, between MOS:HEADings and text: to standardize, aid work via small screens.
 
(27 intermediate revisions by 9 users not shown)
Line 2:
{{Infobox software
| name = Jam.py
| screenshot = File:Screenshot from 2024-05-23 09-42-54.png
| caption = Screenshot of Parameters, with the visual form editor being used to create an application
| author = Andrew Yushev
| released = {{Start date and age|2015|07|01}}
| latest release version = {{wikidata|property|reference|edit|P348}}
| latest release date = {{start date and age|{{wikidata|qualifier|P348|P577}}}}
| genre = [[Web framework]]
| license = [[BSD licenses#3-clause |BSD 3-clause]]
| websiterepo = {{URL|https://jampyapplicationbuildergithub.com/}}jam-py-v5/
| programming language = [[Python (programming language)|Python]], [[JavaScript (programming language)|JavaScript]]
| repo = https://github.com/jam-py/jam-py
| platform = [[Cross-platform software|Cross-platform]]
| programming language = [[Python (programming language)|Python]], [[JavaScript (programming language)|JavaScript]]
| website = {{URL|jampyapplicationbuilder.com}}
| platform = [[Cross-platform]]
| author = Andrew Yushev
}}
'''Jam.py''' is [[freeWeb and open source|free and open-sourceframework]] providing [[Low-code development platform|low-code]]/ and [[No-code_development_platformcode development platform|no-code]], full [[Web framework|"fullsolution stack"]] [[Webrapid Serverapplication Gateway Interface|WSGIdevelopment]] using [[rapidWeb applicationServer developmentGateway Interface]] framework(WSGI), for the [[programming language]]s [[JavaScript]] and [[Python (programming language)|Python]] programming language.<ref>{{Cite web |url=https://wiki.python.org/moin/WebFrameworks/ |title=WebFrameworks - Python Wiki|website=wiki.pythonPython Wiki.org}}</ref> It is [[free and open-source software]] released under a [[BSD licenses#3-clause|BSD 3-clause]] license.
'''Jam.py''' is a [[Low-code development platform]] for database-driven business [[web application]]s, based on [[DRY principle]], with emphasis on [[Create, read, update and delete|CRUD]].
 
Jam.py version 5.x is a [[Single-page application|single-page]], [[Event-driven architecture|event driven]] [[low-code development platform]] for [[database]]-driven business [[web application]]s, based on the [[don't repeat yourself]] (DRY) principle, with emphasis on [[create, read, update and delete]] (CRUD). It is designed to automatically create [[JavaScript]] [[HTML form|web forms]] from the underlying database tables, although a form can be created manually if required. The existing database tables can be imported into Jam.py to create the forms and reports. Database views are unsupported for import.
Jam.py is [[free and open source|free and open-source]] [[Low-code development platform|low-code]]/[[No-code_development_platform|no-code]] [[Web framework|"full stack"]] [[Web Server Gateway Interface|WSGI]] [[rapid application development]] framework for the [[JavaScript]] and [[Python (programming language)|Python]] programming language.<ref>{{Cite web|url=https://wiki.python.org/moin/WebFrameworks/|title=WebFrameworks - Python Wiki|website=wiki.python.org}}</ref>
''The server component runs on any computer with Python 2.6 or later.''<ref>{{cite web | url=https://www.linux-magazine.com/Issues/2020/241/Jam.py | title=Building a database front end with Jam.py | work=www.linux-magazine.com, p.50 | accessdate=30 November 2020}}</ref>
 
It offersprovides a built-in web server, [[Graphicalgraphical user interface builder|GUI builder]] (named Application Builder), and database access forincluding third-party databases.
 
Jam.py version 7.x supports routing within the [[Single-page application|single-page]]. Uniform resource locator ([[URL]]) mapping is unsupported.
 
== Features ==
* Singlev5.x is a single distribution which runs with both Python 2.6+ and 3.x
* v7.x runs with Python >3.6, and is using dependencies installed automatically
* Can run as a standalone web development server or be used with any web server which supports [[WSGI]]
* Built-in [[Graphical user interface builder|GUI builder]] callednamed Application Builder
* Support for [[JSON]] client data (for Representational State Transfer ([[REST]]) and [[JavaScript]] clients)
* Support for popular databases [[Oracle Database]], [[Microsoft SQL Server]], [[PostgreSQL]], [[SQLite]], [[MySQL]], [[Firebird (database server)]], SQLCipher<ref>{{cite web |title=SQLCipher |url=https://github.com/sqlcipher |website=GitHub |language=en}}</ref><ref group=Note>{{Cite web|url=https://jamjampy-pydocs.comreadthedocs.io/docsen/latest/admin/project/database.html|title=Database — Jam.py documentation|website=jam-py.com}}</ref>
* Extensible [[authentication]] mechanisms and [[role-based access control]]
* [[Internationalization]] support
* [[jQuery]] for [[Ajax (programming)|Ajax]] and [[user interface|UI]]
* [[Template engine (web)|Template language]]
* [[OpenDocument|Reports Templates]] based on [[LibreOffice]]
* Files upload and camera capturing
* Optimistic locking
 
==Distinctive Example features==
 
The following code shows a simple web application that displays "[[Hello World]]!" when visited:
=== Built-in application builder ===
All [[Software development|development]], [[Software maintenance|maintenance]] and remote database administration can be performed via Builder interface. The most distinctive feature is the Client and Server Module. The Server Module enables the Python code for business logic, executed as a [[server-side]] session. The Client Module executes the JavaScript code within a browser. It is possible to exchange data between the two.
<ref>[https://www.linux-magazine.com/Issues/2020/241/Jam.py Building a database front end with Jam.py]</ref>
 
Application Builder is strongly influenced by [[Delphi (software)|Delphi]] visual designer.<ref>[https://www.webprecis.com/best-frameworks-for-web-design Best Frameworks for Web Design]</ref>
 
=== Application builder client module ===
This JavaScript [["Hello, World!" program]] code displays a simple web page when visited:
 
Task/client module:
<syntaxhighlight lang="javascript">
task.create_menu($("#menu"), $("#content"), {
Line 38 ⟶ 56:
</syntaxhighlight>
 
The above code resides in Task/Client Module(s) within the Application Builder. The task function can be accessed globally.
== PythonAnywhere ==
 
=== Application builder server module ===
[[PythonAnywhere]] Python 3.x deployment is supported<ref group=Note>{{Cite web|url=https://github.com/pythonanywhere/help_pages/blob/master/articles/Jampy.md|title=pythonanywhere/help_pages|website=GitHub|date=11 October 2021}}</ref>
The Python libraries can be imported within the Task/Server Module(s):
 
<syntaxhighlight lang="python">
== Awards ==
import smtplib
* 2015. 10 Best Frameworks for Web Design<ref>{{cite web | url=https://www.webprecis.com/best-frameworks-for-web-design/ | title=10 Best Frameworks for Web Design | work=webprecis.com | date=11 March 2015 | accessdate=11 March 2015}}</ref>
 
* 2016. 35 Best HTML5 and CSS3 Responsive Frameworks<ref>{{cite web | url=https://devrix.com/tutorial/35-best-html5-and-css3-responsive-frameworks/ | title=35 Best HTML5 and CSS3 Responsive Frameworks | work=devrix.com | accessdate=29 August 2016}}</ref>
def send_email():
# code that sends email
</syntaxhighlight>
 
The above code imports smtplib library, which might be used to send emails. The defined functions can be accessed globally.
 
=== Database migrations ===
Jam.py supports database [[Data migration|migration]] and data import from one supported database to another.
The below code in the Task/Server Module will import data from SQLite to application database:
 
<syntaxhighlight lang="python">
from jam.db.db_modules import SQLITE
 
def on_created(task):
task.copy_database(SQLITE, "demo.sqlite")
</syntaxhighlight>
 
Limits:
* The SQLite database cannot be imported into the application database which has [[foreign key]]s.<ref>[https://jampyapplicationbuilder.com/docs/how_to/how_to_migrate_to_another_database.html How to migrate to another database]</ref>
 
== PythonAnywhere ==
[[PythonAnywhere]] Python 3.x deployment is supported<ref group=Note>{{Cite web |url=https://github.com/pythonanywhere/help_pages/blob/master/articles/Jampy.md |title=pythonanywhere/help_pages |website=GitHub |date=11 October 2021}}</ref>
 
==Notes==
Line 59 ⟶ 100:
* [[Django (web framework)]]
* [[Comparison of server-side web frameworks|Comparison of web frameworks]]
* [[List of low-code development platforms|List of low-code development platforms]]
 
{{Clear}}
 
== External links ==
* {{Official website|jam-pyjampyapplicationbuilder.com}}
* {{GitHub|jam-py-v5}}
 
{{Python (programming language)}}
Line 70 ⟶ 110:
{{Web frameworks}}
 
[[Category:2015 software]]
{{Improve categories|date=June 2020}}
 
[[Category:Free software programmed in Python]]
[[Category:Python (programming language) web frameworks]]
[[Category:Low Code Application Platform]]
<!-- Hidden categories below -->
[[Category:Articles with example JavaScript code]]