CSS : Improve appearance of list of tags;

Python : Add an error message to page URL;
Python : Limit number of tags of each entry to 5 tags;
README : Update Subtitle, Future features and Instructions.
XHTML  : Add titles to templates;
XHTML  : Add control characters U+200A HAIR SPACE and U+200B ZERO WIDTH SPACE (temporary);
XHTML  : Various of minor corrections and fixes.
This commit is contained in:
Schimon Jehudah, Adv. 2024-08-25 12:44:59 +03:00
parent 100ccdd489
commit 3d9e5b2e02
30 changed files with 339 additions and 142 deletions

View file

@ -15,7 +15,7 @@ types adc, dweb, ed2k, feed, ftp, gemini, geo, gopher, http, ipfs, irc, magnet,
mailto, monero, mms, news, sip, udp, xmpp and any scheme and type that you
desire.
# Technicalities
## Technicalities
Blasta is a federated bookmarking system which is based on XMPP and stores
bookmarks on your own XMPP account; to achieve this task, Blasta utilizes the
@ -48,8 +48,9 @@ The connection to the Blasta system is made with XMPP accounts.
- Atom Syndication Format;
- Federation;
- Filters;
- Pin directory;
- Publish-Subscribe.
- Pin;
- Publish-Subscribe;
- Report.
## Requirements
@ -67,7 +68,7 @@ Use the following commands to start Blasta.
```shell
$ git clone https://git.xmpp-it.net/sch/Blasta
$ cd Blasta/
python -m uvicorn blasta:app --reload
$ python -m uvicorn blasta:app --reload
```
Open URL http://localhost:8000/ and connect with your Jabber ID.

View file

@ -751,6 +751,10 @@ class HttpInstance:
# It does not seem to actually filter tags.
# NOTE Yes. It does work.
# See function "cache_items_and_tags".
# TODO Search by query
#if param_query:
if param_tags or param_tld or param_filetype or param_protocol:
tags_list = param_tags.split('+')
if len(tags_list) == 1:
@ -1834,15 +1838,16 @@ class HttpInstance:
exist = True
break
else:
print('IQ ISSUE?')
breakpoint()
print('IQ ISSUE?')
message = 'XMPP system message » Error: {}.'.format(iq)
description = 'The requested bookmark could not be retrieved'
path = 'error'
return result_post(request, jabber_id, description, message, path)
if exist:
# TODO Perhaps adding a paragraph with "your tags" and "who else has tagged this link"
# and keep the (5 item) limit.
#entry = Syndication.extract_items(item_payload, limit=True)
entry = Syndication.extract_items(item_payload)
#entry = Syndication.extract_items(item_payload)
# NOTE Display only 5 items, as all the other tags appear at the list of "Related tags".
entry = Syndication.extract_items(item_payload, limit=True)
if entry:
#url_hash = iq_item['id']
url_hash = Utilities.hash_url_to_md5(entry['link'])
@ -1854,11 +1859,12 @@ class HttpInstance:
entry['name'] = name
entry['url_hash'] = url_hash
entry['published_mod'] = Utilities.convert_iso8601_to_readable(entry['published'])
#entry['tags'] = entry['tags'][:5]
entries.append(entry)
tags_list = {}
tags_and_instances = SQLite.get_tags_and_instances_by_url_hash(db_file, url_hash)
for tag, instances in tags_and_instances: tags_list[tag] = instances
else:
else: # NOTE Is it possible to activate this else statement? Consider removal.
# https://fastapi.tiangolo.com/tutorial/handling-errors/
#raise HTTPException(status_code=404, detail="Item not found")
message = 'Blasta system message » Error: Not found.'
@ -1930,7 +1936,6 @@ class HttpInstance:
description = 'The requested bookmark does not exist'
path = 'error'
return result_post(request, jabber_id, description, message, path)
return response
message = 'Information for URL {}'.format(entries[0]['link']) # entry[2]
description = 'Discover new links and see who shares them'
template_file = 'browse.xhtml'
@ -1977,12 +1982,13 @@ class HttpInstance:
db_file = 'main.sqlite'
instances = SQLite.get_entry_instances_by_url_hash(db_file, url_hash)
timestamp = datetime.now().isoformat()
tags_new = Data.organize_tags(tags) if tags else ''
entry = {'title' : title.strip(),
'link' : url.strip(),
'summary' : summary.strip() if summary else '',
'published' : published,
'updated' : timestamp,
'tags' : Data.organize_tags(tags) if tags else '',
'tags' : tags_new,
'url_hash' : url_hash,
'jid' : jabber_id,
'name' : name,
@ -2051,18 +2057,22 @@ class HttpInstance:
if node == 'public':
tags_valid = []
tags_invalid = []
tags_list = tags.split(',')
tags_old_list = tags_old.split(',')
for tag in tags_old_list:
if tag not in tags_list:
#tags_list_new = tags.split(',')
tags_list_new = tags_new
tags_list_old = tags_old.split(',')
for tag in tags_list_old:
if tag not in tags_list_new:
tags_invalid.append(tag)
for tag in tags_list:
if tag not in tags_old_list:
for tag in tags_list_new:
if tag not in tags_list_old:
tags_valid.append(tag)
# FIXME Variable tags_valid is not in use.
# NOTE Variable tags_valid might not be needed. See function associate_entries_tags_jids.
await SQLite.delete_combination_row_by_entry_id_and_tag_id_and_jid_id(db_file, url_hash, tags_invalid, jabber_id)
await SQLite.add_tags(db_file, [entry])
# Slow (high I/O)
if not SQLite.get_entry_id_by_url_hash(db_file, url_hash):
entry_id = SQLite.get_entry_id_by_url_hash(db_file, url_hash)
if not entry_id:
await SQLite.add_new_entries(db_file, [entry]) # Is this line needed?
await SQLite.associate_entries_tags_jids(db_file, entry)
#elif not SQLite.is_jid_associated_with_url_hash(db_file, jabber_id, url_hash):
@ -2072,12 +2082,14 @@ class HttpInstance:
# Entry for HTML
entry['published_mod'] = Utilities.convert_iso8601_to_readable(published)
entry['updated_mod'] = Utilities.convert_iso8601_to_readable(timestamp)
entry['tags'] = entry['tags'][:5]
entries = [entry]
template_file = 'browse.xhtml'
template_dict = {
'request': request,
'description': description,
'entries': entries,
'exist': True,
'jabber_id': jabber_id,
'journal': journal,
'message': message,
@ -2085,7 +2097,8 @@ class HttpInstance:
'param_hash': param_hash,
'path': path,
'pubsub_jid': jabber_id_pubsub,
'syndicate': syndicate}
'syndicate': syndicate,
'tags' : tags_new}
response = templates.TemplateResponse(template_file, template_dict)
response.headers["Content-Type"] = "application/xhtml+xml"
return response
@ -4556,6 +4569,10 @@ class SQLite:
cur = conn.cursor()
cur.execute(sql, par)
# NOTE The result was ordered by number of instances
# ORDER BY main_tags.instances DESC
# And has been changed to order of alphabet
# ORDER BY main_tags.tag ASC
def get_tags_by_entry_id(db_file, entry_id):
"""
Get tags by an ID entry.
@ -4577,11 +4594,11 @@ class SQLite:
# .format(function_name, db_file, index_first))
sql = (
"""
SELECT main_tags.tag
SELECT DISTINCT main_tags.tag
FROM main_tags
INNER JOIN combination_entries_tags_jids ON main_tags.id = combination_entries_tags_jids.tag_id
WHERE combination_entries_tags_jids.entry_id = ?
ORDER BY main_tags.instances DESC
ORDER BY main_tags.tag ASC
LIMIT 5;
"""
)

View file

@ -147,7 +147,19 @@ form > * {
width: 15%;
/* float: right; */
/* width: 200px; */
}
#related-tags dd {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#related-tags dd:hover {
overflow: unset;
overflow-wrap: break-word;
text-overflow: unset;
white-space: unset;
}
#content {

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / about</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / {{path}}</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / atomsub</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -53,8 +53,12 @@
<div id="main" class="row">
<div id="content">
<h2>&nbsp; PubSub Bookmarks</h2>
<p>» The master standard for HTML.</p>
<h3>Atomsub</h3>
<p>
» The master standard for HTML.
</p>
<h3>
Atomsub
</h3>
<p>
Atomsub, or Atom Over XMPP, is a simple and yet ingenious
idea which was realized by the gentlemen: Peter Saint-Andre;
@ -82,7 +86,9 @@
<p>
<a href="https://datatracker.ietf.org/meeting/66/materials/slides-66-atompub-1.pdf">
datatracker.ietf.org
</a> (PDF)
</a>
&#8203;&#8202;
(PDF)
</p>
</li>
<li>
@ -134,6 +140,7 @@
<a href="https://xmpp.org/extensions/xep-0277.html">
xmpp.org
</a>
&#8203;&#8202;
<a href="https://libervia.org/">
libervia.org
</a>
@ -153,6 +160,7 @@
<a href="https://xmpp.org/extensions/xep-0472.html">
xmpp.org
</a>
&#8203;&#8202;
<a href="https://movim.eu/">
movim.eu
</a>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / {{path}}</title>
<link rel="shortcut icon" href="/graphic/blasta.svg" />
<link rel="icon" type="image/svg+xml" href="/graphic/blasta.svg" />
<link rel="stylesheet" type="text/css" media="screen"
@ -135,6 +135,7 @@
href="{% if jid %}/jid/{{jid}}{% elif path in ('query', 'url') %}/{% endif %}?tags={{tag}}">
{{tag}}
</a>
&#8203;&#8202;
{% endfor %}
{% endif %}
by
@ -166,6 +167,7 @@
<span>details</span>
{% endif %}
</a>
&#8203;&#8202;
at
<span class="dt-published date"
datetime="{{entry['published']}}">
@ -186,7 +188,10 @@
<a href="{% if jid %}/jid/{{jid}}{% elif path in ('query', 'url') %}/{% endif %}?tags={{tag}}">
{{tag}}
</a>
&#8203;&#8202;
{% if tags[tag] %}
({{tags[tag]}})
{% endif %}
</dd>
{% endfor %}
<dd>
@ -215,17 +220,19 @@
{% endif %}
<div id="subscribe" class="row">
<p>
<img alt="💡" src="/graphic/xmpp.svg" width="16" height="16"/>
<a href="xmpp:{{pubsub_jid}}?pubsub;action=subscribe;node={{node_id}}">
<img src="/graphic/xmpp.svg" width="16" height="16"/>
PubSub
</a>
&#8203;&#8202;
and
<img alt="⚛" class="enlarge" src="/graphic/syndicate.svg" width="16" height="16"/>
<a href="/{{syndicate}}?mode=feed{% if param_tags %}&amp;tags={{param_tags}}{% endif %}{% if param_url %}&amp;url={{param_url}}{% endif %}{% if param_hash %}&amp;hash={{param_hash}}{% endif %}">
<img src="/graphic/syndicate.svg" width="16" height="16"/>
RSS
<!-- img src="/graphic/atom.svg" width="36" height="14" alt="Atom"/ -->
</a>
feeds for this page are available.
&#8203;&#8202;
syndication feeds for this page are available.
</p>
</div>
<div id="footer" class="row">

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / connect</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / contact</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / {{path}}</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / feeds</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / help</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / ideas</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -53,30 +53,42 @@
<div id="main" class="row">
<div id="content">
<h2>&nbsp; PubSub Bookmarks</h2>
<p>» Some ideas which illustrate potential uses for Blasta.</p>
<h3>The things that you can do with Blasta are endless</h3>
<p>
» Some ideas which illustrate potential uses for Blasta.
</p>
<h3>
The things that you can do with Blasta are endless
</h3>
<p>
Blasta is an open-ended indexing system, and, as such, it
provides a versatile platform with which you have the
ability to tailor its usage according to your desired
preferences. Here are some illustrative scenarios:
</p>
<h4>Research</h4>
<h4>
Research
</h4>
<p>
Whether you are composing an article, delving into an
industry, or diligently working on your dissertation,
leverage Blasta to organize and store your online source
materials and insights.
</p>
<h4>Podcast</h4>
<h4>
Podcast
</h4>
<p>
Explore a plethora of captivating podcasts by visiting
<a href="{{origin}}/tag/podcast?filetype=spx">
/tag/podcast?filetype=spx
</a> or
</a>
&#8203;&#8202;
or
<a href="{{origin}}/tag/podcast?filetype=ogg">
/tag/podcast?filetype=ogg
</a> and enjoy enriching content.
</a>
&#8203;&#8202;
and enjoy enriching content.
</p>
<p>
Additionally, Blasta offers
@ -86,7 +98,9 @@
you are a podcaster, upload your spx, ogg or mp3 files to
Blasta to generate a dedicated feed for your audience.
</p>
<h4>News</h4>
<h4>
News
</h4>
<p>
If you are intending to start a site of news flash, then
Blasta can be an adequate solution for you.
@ -94,7 +108,9 @@
<p>
Additionally, you can also use Blasta to manage your notes.
</p>
<h4>Travel</h4>
<h4>
Travel
</h4>
<p>
Facilitate trip planning by saving links related to
accommodations, activities, and transportation on Blasta
@ -103,7 +119,9 @@
with friends and family members by utilizing the tag
"for:{% if jabber_id %}{{jabber_id}}{% else %}jid{% endif %}".
</p>
<h4>Employment</h4>
<h4>
Employment
</h4>
<p>
Stay updated on job openings and industry trends by
following specific tags related to your field of interest on
@ -116,16 +134,22 @@
resume building, interview tips, and
professional development.
</p>
<h4>File sharing</h4>
<h4>
File sharing
</h4>
<p>
Share you favourite contents that you share via BitTorrent,
eD2k or IPFS, whether publicly by
<a href="{{origin}}/tag/?filetype=torrent">
/tag/?filetype=torrent
</a> and
</a>
&#8203;&#8202;
and
<a href="{{origin}}/tag/?protocol=magnet">
/tag/?protocol=magnet
</a> or whether privately by utilizing the tag
</a>
&#8203;&#8202;
or whether privately by utilizing the tag
"for:{% if jabber_id %}{{jabber_id}}{% else %}jid{% endif %}".
</p>
<p>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / libervia</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -62,7 +62,9 @@
communications needs: instant messaging, (micro)blogging,
file sharing, photo albums, events, forums, tasks, etc.
</p>
<h4>What is Libervia?</h4>
<h4>
What is Libervia?
</h4>
<p>
Libervia (formerly "Salut à Toi") is a Libre communication
ecosystem based on XMPP standard. It allows you to do many
@ -79,7 +81,9 @@
It features many interfaces (desktop, mobile, web, command
line, console), and is multi-platforms.
</p>
<h4>Motives</h4>
<h4>
Motives
</h4>
<p>
The project "Libervia" was born from a need to protect our
liberties, our privacy and our independence. It is intended
@ -92,7 +96,9 @@
private interests. The network must belong to everybody, and
be a force of expression and freedom for all Humanity.
</p>
<h4>Social Contract</h4>
<h4>
Social Contract
</h4>
<p>
Towards this end, "Libervia" and those who participate in
the project operate on a Social Contract, a commitment to
@ -198,7 +204,9 @@
</li>
</ul>
</p>
<h4>Features</h4>
<h4>
Features
</h4>
<p>
<ul>
<li>
@ -225,7 +233,9 @@
</li>
</ul>
</p>
<h4>Interfaces</h4>
<h4>
Interfaces
</h4>
<p>
<ul>
<li>
@ -250,7 +260,10 @@
Lot of powerful tools and features accompany the
project, please check the
<a href="https://libervia.org/documentation">
documentation</a>.
documentation
</a>
&#8203;
.
</li>
</ul>
</p>
@ -263,46 +276,57 @@
Libervia is a Libre software, based on well established
standards (XMPP), decentralised and federating. It is
developed around strong ethical values. Check our
<a href="https://libervia.org/social_contract">social
contract</a>.
<a href="https://libervia.org/social_contract">
social contract
</a>
&#8203;
.
</p>
<h4>Press</h4>
<h4>
Press
</h4>
<p>
<ul>
<li>
<a href="http://andre-ani.fr/news/profil-libriste-goffi/">
Profil de libriste : Goffi
</a>
&#8203;&#8202;
(andre-ani.fr)
</li>
<li>
<a href="https://framablog.org/2015/11/02/salut-a-toi-couteau-suisse-des-reseaux-sociaux-libres/">
Salut à toi, couteau suisse des réseaux sociaux libres
</a>
&#8203;&#8202;
(framablog.org)
</li>
<li>
<a href="https://libervia.org/press">
Libervia Press
</a>
&#8203;&#8202;
(libervia.org)
</li>
<li>
<a href="https://www.linux-magazin.de/news/salut-a-toi-verbesserter-xmpp-client/">
Salut à Toi; Verbesserter XMPP-Client
</a>
&#8203;&#8202;
(linux-magazin.de)
</li>
<li>
<a href="https://linuxfr.org/tags/s%C3%A0t/public">
Tous les contenus étiquetés avec « sàt » - LinuxFr.org
</a>
&#8203;&#8202;
(linuxfr.org)
</li>
<li>
<a href="https://reflets.info/articles/sat-le-couteau-suisse-libre-et-open-source-de-la-communication">
SàT : le couteau suisse Libre et open source de la communication
</a>
&#8203;&#8202;
(reflets.info)
</li>
</ul>
@ -314,12 +338,14 @@
<a href="https://libervia.org">
Official Site
</a>
&#8203;&#8202;
(libervia.org)
</li>
<li>
<a href="xmpp:libervia@chat.jabberfr.org?join">
Official Group Chat
</a>
&#8203;&#8202;
(chat.jabberfr.org)
</li>
</ul>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / movim</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -56,7 +56,9 @@
<p>
» The social platform shaped for your community.
</p>
<h3>About Movim</h3>
<h3>
About Movim
</h3>
<p>
Movim is an abbreviation of "My Open Virtual Identity
Manager" and is a distributed social network which, just
@ -91,7 +93,9 @@
The framework, which is built upon PHP, is a free software
and can be experimented with by external developers.
</p>
<h4>What is Movim?</h4>
<h4>
What is Movim?
</h4>
<p>
Movim is a social and chat platform that acts as a frontend
for the XMPP network.
@ -107,7 +111,9 @@
Movim is fully compatible with the most used XMPP servers
such as ejabberd or Prosody.
</p>
<h4>Blogs &amp; Communities</h4>
<h4>
Blogs &amp; Communities
</h4>
<p>
Movim simplifies the management of your publications and
news articles. So forget the ads, forget the superfluous. We
@ -118,7 +124,9 @@
nodes on different topics. Just click on the Communities
link in your menu and start exploring!
</p>
<h4>Chats &amp; Chatrooms</h4>
<h4>
Chats &amp; Chatrooms
</h4>
<p>
Start a conversation with a friend or join a multi-user
chatroom in one click.
@ -127,34 +135,45 @@
Movim chats are coming with many features to give you the
best chat experience across all your devices
</p>
<h4>Let's get started!</h4>
<h4>
Let's get started!
</h4>
<p>
<a href="https://join.movim.eu/register">
Create an XMPP account</a>
Create an XMPP account
</a>
&#8203;&#8202;
and join one of our public instances on
<a href="https://join.movim.eu">
join.movim.eu</a>
join.movim.eu
</a>
&#8203;&#8202;
(If you already have a XMPP account, you can directly join).
</p>
<h4>Press</h4>
<h4>
Press
</h4>
<p>
<ul>
<li>
<a href="https://itsfoss.com/movim/">
Movim: An Open-Source Decentralized Social Platform Based on XMPP Network
</a>
&#8203;&#8202;
(itsfoss.com)
</li>
<li>
<a href="https://medevel.com/movim/">
Movim: a decentralized open-source XMPP-based messaging and social platform
</a>
&#8203;&#8202;
(medevel.com)
</li>
<li>
<a href="https://www.zdnet.fr/actualites/reseaux-sociaux-decentralises-movim-peut-il-reussir-la-ou-diaspora-a-echoue-39791588.htm">
Réseaux sociaux décentralisés : Movim peut-il réussir là où Diaspora a échoué
</a>
&#8203;&#8202;
(zdnet.fr)
</li>
</ul>
@ -166,12 +185,14 @@
<a href="https://movim.eu">
Official Site
</a>
&#8203;&#8202;
(movim.eu)
</li>
<li>
<a href="xmpp:movim@conference.movim.eu?join">
Official Group Chat
</a>
&#8203;&#8202;
(conference.movim.eu)
</li>
</ul>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / now</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / philosophy</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / profile</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / projects</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / pubsub</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -183,18 +183,22 @@
<a href="/?tags=brand:the-pirate-bay">
brand:the-pirate-bay
</a>
&#8203;&#8202;
<a href="/?tags=directory:torrent">
directory:torrent
</a>
&#8203;&#8202;
<a href="/?tags=service:search">
service:search
</a>
&#8203;&#8202;
by
<a href="/jid/fionn@jabber.i2p">Fionn</a>
...
<a href="/url/3d0db4c019a01ebbbab1cf0723ed7ddd">
<span class="instances-degree-fourth">and 57,293 other people</span>
</a>
&#8203;&#8202;
at
<span class="date">{{date_now_readable}}</span>
</div>
@ -205,6 +209,23 @@
node <code>urn:xmpp:bibliography:0</code> of your XMPP
account.
</p>
<h4>Resources</h4>
<ul>
<li>
<a href="https://wiki.xmpp.org/web/PubSub_message_types">
PubSub message types
</a>
&#8203;&#8202;
(wiki.xmpp.org)
</li>
<li>
<a href="https://wiki.xmpp.org/web/Tech_pages/PubSub">
Tech pages/PubSub
</a>
&#8203;&#8202;
(wiki.xmpp.org)
</li>
</ul>
<br/>
<p class="quote bottom"
title="Arthur Schopenhauer speaks about Bob Wyman, Jérôme Poisson, Joe Hildebrand, Peter Saint-Andre, and Timothée Jaussoin.">

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / questions</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -53,13 +53,19 @@
<div id="main" class="row">
<div id="content">
<h2>&nbsp; PubSub Bookmarks</h2>
<p>» Queries about Blasta.</p>
<h3>Questions</h3>
<p>
» Queries about Blasta.
</p>
<h3>
Questions
</h3>
<p>
This document enumerates questions that were referred to the
project Blasta.
</p>
<h4 id="what-is-jid">What is JID and what does it mean?</h4>
<h4 id="what-is-jid">
What is JID and what does it mean?
</h4>
<p>
JID is an abbreviation of Jabber ID.
</p>
@ -87,7 +93,9 @@
is related to computer language rust be tagged with
"code:rust".
</p>
<h4 id="why-blasta">Why did you create Blasta?</h4>
<h4 id="why-blasta">
Why did you create Blasta?
</h4>
<p>
We have created Blasta out of necessity.
</p>
@ -112,7 +120,9 @@
Hence, we have created Blasta, which is a combination of
YaCy and Shaarli, and is built on top of XMPP.
</p>
<h4 id="why-free">Why do you provide Blasta for free?</h4>
<h4 id="why-free">
Why do you provide Blasta for free?
</h4>
<p>
While we want to make profit, and feed our wives and
children, we are aware that we must be providing the Blasta
@ -127,14 +137,16 @@
later becomes clandestinely subdued to thugs from government
or intelligence, which is the worst of all circumstances.
</p>
<h4 id="perspective">What is your perspective?</h4>
<h4 id="perspective">
What is your perspective?
</h4>
<p>
Our perspective is that people should be living for the sake
of eternity, which is what we are doing by creating and
distributing Blasta.
</p>
<p>
As conveyed in verse 77 of Hávamál:
As conveyed in verse 77 of Hávamál
</p>
<p class="quote" title="“Deyr fé, deyja frændr, deyr sjalfr it sama, ek veit einn, at aldrei deyr: dómr um dauðan hvern.”">
“Kinsmen die, and cattle die and so must one die oneself;
@ -146,11 +158,11 @@
― Hávamál: Sayings of the High One
</p>
<p>
The German philosopher Arthur Schopenhauer has expressed
since the same idea when he said:
The German philosopher Arthur Schopenhauer expressed
essentially the same idea when he said, that
</p>
<p class="quote">
“The most any man can hope for:
“The very most any man can hope for:
<br/>
Is a heroic passage through life.”
<br/>
@ -162,18 +174,24 @@
<p>
Greatness, rather than happiness, is
<span class="instances-degree-first">
a mark of a good life</span>.
the mark of a good life
</span>
&#8203;
.
</p>
<p>
Live for the sake of eternity, for the past, and towards the
future.
</p>
<h4 id="why-xmpp">Why did you choose XMPP as a platform?</h4>
<h4 id="why-xmpp">
Why did you choose XMPP as a platform?
</h4>
<p>
The XMPP platform (which is also known as Jabber), is a
reputable and a strong telecommunication platform which
almost every intelligence and militant agency on the world
is making use of as a premier telecommunication mean.
The <a href="/help/about/xmpp">XMPP</a> platform (which is
also known as Jabber), is a reputable and a strong
telecommunication platform which almost every intelligence
and militant agency on the world is making use of as a
premier telecommunication mean.
</p>
<p>
Because we did not want to use databases, which sometimes
@ -191,7 +209,8 @@
needed.
</p>
<p>
So we chose the specification XEP-0060: Publish-Subscribe
So we chose the specification XEP-0060:
<a href="/help/about/xmpp/pubsub">Publish-Subscribe</a>
(PubSub) as a base mechanism for a data storage platform.
</p>
<p>
@ -201,25 +220,31 @@
truely private and is truely owned by the account owner,
which is also a major advantage to Blasta, not only for the
sake of privacy and data integrity, but also for an
immediate recoverying of the bookmarks sharing system, if
the Blasta database would be to diappear or should be
restructured.
immediate recovery of the bookmarks sharing system, if the
Blasta database would be to diappear or should be
restructured anew.
</p>
<p>Use XMPP. Spread XMPP. Be XMPP.</p>
<h4 id="other-platforms">What platform would you choose if not XMPP?</h4>
<p>
Use XMPP. Spread XMPP. Be XMPP.
</p>
<h4 id="other-platforms">
What platform would you choose if not XMPP?
</h4>
<p>
If we were to choose another platfom, it probably would have
been DeltaChat (SMTP and IMAP), Nostr or Session.
</p>
<h4>Why did you decide to make Blasta open source?</h4>
<h4>
Why did you decide to make Blasta open source?
</h4>
<p>
One of the main reasons is for freedom to thrive.
</p>
<p>
We are worried due to various of PsyOps that are conducted
by governments, military and intelligence agencies, and we
realize that most of their success relies on the
centralization of information hubs; and
We are worried due to various of PsyOps that are being
conducted by governments, military and intelligence
agencies, and we realize that most of their success relies
on the centralization of information hubs; and
</p>
<p>
We are further worried of the awful measures that are being
@ -276,7 +301,9 @@
functionality with <a href="/help/utilities#greasemonkey">
userscripts and userstyles</a>.
</p>
<h4 id="conclusion">Conclusion</h4>
<h4 id="conclusion">
Conclusion
</h4>
<p>
Please <a href="/contact">contact us</a> and ask us
anything. We will be happy to read from you!

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / register</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / {{path}}</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -60,7 +60,7 @@
{{description}}
</h3>
<p>
You can return to the previous page or browse
You can try to reload this page or browse
{% if jabber_id %}
your <a href="/jid">bookmarks</a>.
{% else %}

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / search</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / software</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / syndication</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -67,16 +67,23 @@
pages that list bookmarks.
</p>
<p>
An atom <span class="enlarge"></span> or an orange
<img src="/graphic/syndicate.svg" width="16" height="16"/>
icon at the bottom of a subject page would indicate of
An atom or an orange icon (
<img alt="⚛"
class="enlarge"
height="16"
src="/graphic/syndicate.svg"
width="16"/>
) at the bottom of a subject page would indicate of
availability of an Atom Syndication Feed for use with
Feed Reader.
</p>
<p>
A bulb 💡 or an XMPP
<img src="/graphic/xmpp.svg" width="16" height="16"/>
icon at the bottom of a subject page would indicate of
A bulb or an XMPP icon (
<img alt="💡"
height="16"
src="/graphic/xmpp.svg"
width="16"/>
) at the bottom of a subject page would indicate of
availability of a PubSub subscription for use with an
XMPP client.
</p>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / tag</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -70,7 +70,9 @@
{% endif %}
<a href="/{% if jid %}jid/{{jid}}{% endif %}?tags={{tag}}">
{{tag}}
</a></span>
</a>
</span>
&#8203;&#8202;
{% endfor %}
</p>
</div>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / thanks</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
@ -56,45 +56,59 @@
<p>
» Gratitude and appreciation from the world over.
</p>
<h3>Thanks</h3>
<h3>
Thanks
</h3>
<p>
We would want to express our gratitude and appreciation to
special men and women from Argentina, Canada, France
Germany, Ireland, Italy, Palestine, Russia and The
Netherlands.
</p>
<h4>Mr. Damian Sartori</h4>
<h4>
Mr. Damian Sartori
</h4>
<p>
We would want to thank to Mr. Damian Sartori (a.k.a.:
TheCoffeMaker) from <a href="https://cyberdelia.com.ar/">
Cyberdelia</a> for providing instructions for present and
future database management.
</p>
<h4>Mr. Guus der Kinderen</h4>
<h4>
Mr. Guus der Kinderen
</h4>
<p>
We would want to thank to Mr. Guus der Kinderen of
<a href="http://igniterealtime.org">Ignite Realtime</a> who
has instantly provided us with relevant references from
has instantly provided us with relevant references from the
XMPP specification
<a href="https://xmpp.org/extensions/xep-0060.html">
XEP-0060: Publish-Subscribe</a> and who has generously
provided us with <a href="http://goodbytes.im">Goodbytes</a>
Openfire servers for testing Blasta and related projects.
<a href="https://igniterealtime.org/projects/openfire/">
Openfire</a> servers for testing Blasta.
</p>
<h4>Mr. Jérôme Poisson</h4>
<h4>
Mr. Jérôme Poisson
</h4>
<p>
We would want to thank to Mr. Jérôme Poisson of project
<a href="https://libervia.org">Libervia</a> who has
instructed us in coordinating the Blasta system with the
Libervia system.
</p>
<h4>Mrs. Laura Lapina</h4>
<h4>
Mrs. Laura Lapina
</h4>
<p>
We would want to thank to Mrs. Laura Lapina of 404 City and
Loqi who has contributed her advises to select the proper
technologies, and plan and engineer the master database
operation workflow.
</p>
<h4>Mr. Schimon Jehudah Zachary</h4>
<h4>
Mr. Schimon Jehudah Zachary
</h4>
<p>
We would want to thank to Mr. Schimon Jehudah Zachary of
project <a href="https://git.xmpp-it.net/sch/Rivista">
@ -104,22 +118,28 @@
information, including elaborative SQLite queries that have
accelerated and saved us precious development time.
</p>
<h4>Mr. Simone Canaletti</h4>
<h4>
Mr. Simone Canaletti
</h4>
<p>
We would want to thank to Mr. Simone Canaletti of project
<a href="https://woodpeckersnest.eu">WPN</a> who has helped
in deploying and testing our applications, including
benchmarking for mass deployment, in addition to providing
us with the adequate means for hosting the development
ground of the Blasta platform and related projects.
in deploying and testing Blasta, including benchmarking for
mass deployment, in addition to providing us with the
adequate means for hosting the development ground of the
Blasta platform and related projects.
</p>
<h4>Mr. Stephen Paul Weber</h4>
<h4>
Mr. Stephen Paul Weber
</h4>
<p>
We would want to thank to Mr. Stephen Paul Weber of project
<a href="https://soprani.ca">Soprani.ca</a> who has
explained to us about various of the XMPP specifications.
</p>
<h4>Mr. Timothée Jaussoin</h4>
<h4>
Mr. Timothée Jaussoin
</h4>
<p>
We would want to thank to Mr. Timothée Jaussoin of project
<a href="https://movim.eu">Movim</a> who has contributed
@ -130,7 +150,9 @@
various of occasions, including answering to questions that
were already asked and answered more than once.
</p>
<h4>XMPP Berlin in association with XMPP Italia</h4>
<h4>
XMPP Berlin in association with XMPP Italia
</h4>
<p>
Finally, we would want to thank to the fine gentlemen
Lorenzo, Mario, Martin, Roberto, Schimon, Simone, and others
@ -143,7 +165,9 @@
</a>
</p>
<p>
<a href="https://video.xmpp-it.net">XMPP-IT</a>
<a href="https://video.xmpp-it.net">
XMPP-IT
</a>
</p>
<br/>
<p class="quote bottom">

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / utilities</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="color-scheme" content="dark light" />
<title>Blasta</title>
<title>Blasta / xmpp</title>
<link rel="shortcut icon" href="/graphic/blasta.svg"/>
<link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
<link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>