Package: aquilo
Aquilo FrameworkA, Flutter & Django inspired, web development framework for python.Build beautiful and responsive websites without ever needing to touch HTML, CSS, or JavaScript.
With Aquilo you can build a website entirely in python, and it will be blazing fast.You can choose to either host your website any cloud provider that supports WSGI specifications.
Or you can build the HTML and static files for your website
and host them wherever you want.InstallationAquilo is still under heavy development and is not available on Pypi yet, so you'll need to install it manually.First you'll need to build the Aquilo package.$gitclonehttps://github.com/KeloDraken/Aquilo
$cdAquilo
$virtualenvvenv
$sourcevenv/bin/activate
$pipinstall-rrequirements.txt
$python-mbuildThen you can install it in your project via pip$mkdir<project_name>
$cd<project_name>
$virtualenvvenv
$sourcevenv/bin/activate
$pipinstall<path_to_aquilo_package>UsageSince Aquilo is heavily influenced by Django, some commands will be familiar.For example, if you want to create a new project, you can use theaquilo startproject <project_name>command.$aquilostartprojectmy_projectThis will create a new project in the current directory.The commands are not the only things I borrowed from Django. The initial project structure is also based on Django.For example, when you create an Aquilo app there'll be a file calledmanage.pyin the root of the project which will
contain the commands you can use.
You will use this file to handle the administrative tasks while creating your website, such as creating new apps, running the
development server, and, eventually, it will also be used
to create and run tests, creating and executing database migrations.Development serverTo start the development server, run$pythonmanage.pyrunserverAppsLike Django, Aquilo is also built on the concept of apps. An app is python package that contains the code for a specific part of the
website. For example, the home page of the website is contained in an app calledhome.To create an app, run$pythonmanage.pystartapp<app_name>This will generate a new app in the<project_name>/appsdirectory. You will need to add the app name to the APPS list entry in the<project_name>/config/settings.pyfile.frompathlibimportPathBASE_DIR=Path(__file__).resolve().parent.parent.parentDEBUG=TrueAPPS=["home","<app_name>",]The order of the APPS list is important. The first app in the list will be the home app. Only 1 page is allowed to be the home page.A new app will contain apages.pyfile, the functions defined in file
will be used to generate the HTML for the pages. The default home page inside the home app will look like this:fromaquiloimportbuild,div,h1defpage_home():root=div(h1("Hello World!"))returnbuild(root,title="Hello World!")You'll notice that the function name has the prefixpage_. All pages must have this prefix, or else they won't be recognised as pages.Aquilo uses a style I first saw in the Flutter Framework, it uses a tree-like structure to create the markup.
You keep adding children to the rootdivclass to create the markup.Thebuildfunction is used to create the markup. It takes the root element which needs to be adivand uses it to generate the HTML markup which is the served.The HTMLThe HTML generated by Aquilo is written into a single HTML file calledoutput.htmlwhich will the page that will served.
This file's content will always be different, depending on the page you are requesting.Bugs & RoadmapRewrite WSGI implementation (I tried deploying a test site to PythonAnywhere, but it didn't work)Add more HTML tags to the parserAdd styling capabilities for easy customisationMake development server watch the project for changes and reload automaticallyBuild a UI component library for Aquilo based on Material DesignAdd indepth documentation in docstrings for all the functionsBuild my portfolio website with AquiloCreate a VSCode extension for Aquilo to help make the code more readable (I've found that it be a bit hard navigate when you have deeply nested elements)