Lipupini

Hypermedia Organization and Showcase System

Photo and Video Gallery, Music Player, Text Document Viewer

Lipupini is a public domain platform for organizing and displaying digital art such as images, videos, sounds and writings that you might want to display under your domain on the Internet. Lipupini aims to support RSS and Fediverse protocols.

Version 7.x


Status

Features

Lipupini Docker Setup

Starting Lipupini with PHP

Add Your Collection

ActivityPub Note

The Name

Demo

Contributing

Acknowledgements


Example UI Screenshot


Status

For displaying a media portfolio or posts on the Internet, despite currently limited ActivityPub support the latest release of Lipupini is considered to be production-ready.

1) Install dependencies and clone the repository to the latest release tag. While the demo site has maintained the same respository since version 1.x, avoid using the demo branch in production unless you are interested in keeping up with development and have a mechanism for rollbacks. 2) Add and initialize your collection, customize .lipupini/files.json with captions, and delete the example collection. 3) Ensure that your files display. If they don't, convert them to supported formats. 4) Deploy to a PHP server.

Updating Lipupini can be as simple as running git pull from your environment depending on the setup.

Features

Some aspects that make Lipupini unique

More

Starting the PHP Webserver

Make sure all dependencies are installed first.

1) Clone the app and cd into the project root

git clone https://github.com/lipupini/lipupini.git
cd lipupini

2) Install Composer dependencies. Composer should automatically create the config file after installing. See system/config/README.md

composer install
  1. Navigate to the webserver document root and start PHP's built-in webserver
cd webroot
php -S localhost:4000 index.php
  1. Visit http://localhost:4000/@example

Add Your Collection

Say you have a folder of awesome photos at /home/sally/Pictures/AwesomePhotos

Your Lipupini installation is at /opt/webapp/lipupini

1) Take the photos from /home/sally/Pictures/AwesomeCollection and put them into the collection directory /opt/webapp/lipupini/collection/sally either by copying them:

cp -R /home/sally/Pictures/AwesomeCollection /opt/webapp/lipupini/collection/sally

or symlinking them:

ln -s /home/sally/Pictures/AwesomeCollection /opt/webapp/lipupini/collection/sally

2) Initialize the .lipupini folder for the collection

cd /opt/webapp/lipupini
bin/generate-keys.php sally
bin/create-files-json.php sally

3) Save a file called avatar.png at /opt/webapp/lipupini/collection/sally/.lipupini/avatar.png

4) Edit the file at /opt/webapp/lipupini/collection/sally/.lipupini/files.json to add captions (this is optional)

5) Delete the example collection:

rm -r collection/example

6) Your collection should now be viewable at http://localhost:4000/@sally

In addition to copying or symlinking, see collection/README.md#vision for ideas on other ways to keep these directories in sync.

ActivityPub Note

ActivityPub transactions should occur via HTTPS per spec. https://ngrok.com can be used to get up and running quickly for development.

For example, after starting Lipupini you can run this command:

ngrok http 4000

Continuing with the example above in "Add Your Collection," if your Ngrok URL becomes https://f674-73.ngrok-free.app, you should then be able to query @sally@f674-73.ngrok-free.app from another Fediverse client once the collection is initialized.

Using Ngrok, with an upgraded plan you can setup a fairly restrictive port firewall, configure it to run on startup, and reliably host any domain with HTTPS.

The Name

"Lipupini" is a word formed by combining other words (portmanteau), and "lipu pini" in this context translates to "past document" in Toki Pona core. Lipupini is for organizing computer files like images, videos, sounds and writings that you might want to display under your domain on the Internet.

Demo

Here is what it can look like so far: https://lipupini-demo.dup.bz/@example

Though ActivityPub implementation is currently limited, the demo is searchable in properly-configured Fediverse clients @example@lipupini-demo.dup.bz

NOTE: Please use activitypub.academy Mastondon server for testing, as this is a test server.

The demo is the demo branch running on Apache2. If you already have Apache2 configured to serve PHP, you can install Composer dependencies and point the virtual host's DocumentRoot to webroot and it should "just work."

Contributing

You are welcome to fork it, change it, add modules! Please don't hesitate to make a PR.

Email apps [at] dup.bz if you'd like a point of contact or post in discussions! Please reach out if you begin to find any aspect frustrating or feel that it should be done in a different way.

If you want to use Lipupini for your artist portfolio or business website, I will support your effort.

Acknowledgements

VanJS: https://vanjs.org

Markdown parser: https://parsedown.org

Image processor: https://github.com/php-imagine/Imagine

Arrow icons: https://www.svgrepo.com/author/Pictogrammers

ActivityPub inspiration: @dansup@pixelfed.social & Landrok's ActivityPub library

TODO