Web development platform built entirely in PostgreSQL
GPL-3.0 License
Bot releases are visible (Hide)
Here's v0.4.1, which has the following changes:
Install instructions are here.
Published by erichanson about 1 year ago
Ho! Now comes version 0.4 of Aquameta.
Changes include:
This release breaks the import and export of old bundles, due to the refactor of meta-identifiers. Old bundles can be converted to the new .csv format, as described here.
Full Changelog: https://github.com/aquametalabs/aquameta/compare/v0.3.1...v0.4
Published by erichanson over 1 year ago
Last commit before type flattening merge, deep breaking change, meta issue #1.
Notes:
Published by erichanson over 1 year ago
Here's Aquameta 0.3! Major changes include:
endpoint.resource_function
maps URLs to database functions{ events: true}
to a database instantiation in datum.js and then get change events over WebSocket. Still in alpha but the pattern is there.Published by erichanson almost 4 years ago
Without fanfare I'm releasing v0.2.0 of Aquameta. The code base is in a relatively stable state, and I'm about to dramatically destabilize it. The UI has really come a long way and the architecture has evolved and been refined a lot. I LOVE building projects in this environment, even though is still so many edge cases that have to be done from the psql
promt. No looking back, development belongs in the database and the wins to be found by moving it there keep compounding.
There is a long list of architectural changes that need to be made though, and now is the time to make them. Also finding Go has been a game changer, opening up the door for a simple distribution and deployment pattern of a single self-contained binary with no dependencies (I think?).
The foundations of the project are about to shake. So, here's 0.2.
Published by erichanson about 5 years ago
This release adds many new features including ability to do an "online" install from a central bundle repository called the "hub".
Published by erichanson over 5 years ago
Here's rc5 of Aquameta 0.2! Change include:
Published by erichanson over 5 years ago
Aquameta 0.2.0-rc4 released
What new in rc4?
bundle.trackable_nontable_relation
table has been created, for tracking non-table relations like views, foreign tables, etc. opt in.meta.*_definition
pattern, def
views are views that contain meta entities like views, tables, casts, operators, etc., but with only two columns their, say, view_id
, and another column called definition
, which contains the SQL stmt which creates it. Much better for version controlling meta entities.endpoint.template
and endpoint.template_route
which are rendered server-side with plv8 and doT.js, so we can have dynamic results on a base resource (or anything else)make
command now overwrites previously generated filesbin/
directory containing scripts to restart the three aquameta services (pg, nginx, uwsgi), and to tail all logs of said servicespg_cron
extension from Citus, which enables scheduled execution of arbitrary sql statementsplv8
extension (binaries, since apt version is older) which does our template rendering and also allows javascript/ecma procedures to be executed server-sideWe're still a ways away from a complete user experience, but things seem to be in a relatively sane state at the moment and it's been a while since I did a release, so here it is.
Published by erichanson over 5 years ago
Ho! Now comes version 0.2.0-rc3
of Aquameta.
Numerous enhancements including:
plv8
/register
and /login
.docker-compose
)src/
directoryPublished by erichanson over 6 years ago
Ho! Now comes Aquameta v0.2.0 release candidate 2. Lots of new features to talk about:
postgres_fdw
instead of http. This makes the process of cloning, pushing and pulling between instances of Aquameta much simpler. A new user interface is taking shape called the "bundle manager", which enables pushing and cloning between connected databases.bundle.bundle_export_csv()
function. All parts of a bundle are saved to file, and then can be imported via bundle.bundle_import_csv()
.anonymous
is no longer a superuser. Instead a limited set of row-level permissions are granted to the anonymous user, allowing them to only do what is needed to register, confirm and login, or at least that's the idea.certbot
and create an SSL certificate.endpoint.resource*
tables now have an active
flag instead of a unique constraint on resource.path
, so that multiple resources that use the same path can be activated and deactivated instead of just breaking their checkout.endpoint
for sending registration emails etc., have been moved into an email
extension. It has a configurable smtp_server
table that can contain multiple SMTP configurations. It works very nicely with an Amazon SES instance, or any other SMTP server that supports DKIM, so emails don't get sent to the spam folder. It also has the start of a simple email template system.Published by erichanson about 7 years ago
Hi all,
I'm happy to announce the release of Aquameta, a peer-to-peer network for exchanging "bundles", a new kind of complex data object that can be almost anything. They can include code, web apps, data, images and more, and together create a kind of "smart object" that is very versatile and open-ended.
Today, users can exchange emails, publish web pages, exchange binaries via p2p apps, and much more. We'd like to see Aquameta become another kind of communication protocol and network, one where users exchange these bundled complex data objects that hopefully do fun, interesting and useful stuff. Because bundles are made up of data, we claim that it's a very wide pipe for creativity and interactivity, one that opens up a world of new possibilities.
Under the hood, Aquameta is a bunch of PostgreSQL schemas that handle things like version control, web hosting, user interface, events, peer to peer communication, etc. A bundle is made up of rows in these tables and any others that users might wish to create.
Aquameta has a web interface that lets users build and exchange these bundles. They can be sent either server-to-server via http, or browser-to-browser via WebRTC. The networked-communication aspect of Aquameta is still under development and experimentation.
Aquameta can be installed on a desktop, a server, in the cloud or on a small device such as a Raspberry Pi.
Under the hood are a lot of PostgreSQL modules which hopefully can be useful to the PostgreSQL community. They include:
insert into meta.role(name, superuser, password) values ('joe', true, 'mypass');
insert into meta.schema(name) values ('my_schema');
select bundle.stage_row_add(
meta.row_id('public','countries','id','UK')
);
select bundle.commit('org.aquameta.countries','add uk.');
select bundle.checkout('org.aquameta.games.snake');
select session_create();
select subscribe_table(meta.relation_id('widget','machine'));
aquameta=# select name, path, permissions, content, owner from filesystem.file where path='/etc/issue';
name | path | permissions | content | owner
-------+------------+-------------+--------------------------+-------
issue | /etc/issue | 0644 | Ubuntu 14.04.5 LTS \n \l+| root
| | | +|
| | | |
(1 row)
$ ls /mnt/aquameta/public/countries
aquameta=# select path, m.mimetype, substring(content from 1 for 15)
from endpoint.resource r
join endpoint.mimetype m on r.mimetype_id = m.id limit 2;
path | mimetype | substring
-------+-----------+-----------------
/docs | text/html | <!DOCTYPE html>
/dev | text/html | <!DOCTYPE html>
select endpoint.request('0.1','GET','/docs')
select * from widget.widget;
select * from widget.widget_dependency_js;
insert into semantics.relation (relation_id, purpose_id, widget_id) values
(
meta.relation_id('ecomm','customer'),
(select purpose_id from semantics.purpose where purpose='row_detail'),
(select id from widget.widget where name='customer_list_view')
);
Aquameta is in very early stages, despite being under development for years. It is finally at the point of being a marginally functional prototype that hopefully is pointed in the right direction, but there is much work still to be done. The user interface is just beginning to take shape, the system is not secure, test coverage is sparse, and there are surely many bugs and missing features. We are releasing it at this early stage to get feedback and invite contributors to help out.
To give Aquameta a spin, head over to github and consult the README which contains install instructions:
http://github.com/aquametalabs/aquameta
To jump into development, check out the project's roadmap, and join our IRC channel and mailing list:
http://aquameta.org/roadmap
#aquameta on irc.freenode.net
https://groups.google.com/forum/#!aboutgroup/aquameta-discuss