digital content lasts forever. — or five years, whichever comes first.
~Jeff Rothenberg, 1999

folderHorizon


folderHorizon is a standalone program that reads the files contained in your folders and generates a publication in static HTML format. The result can be read either offline or online as a website and being static it is independent of databases or server-side scripting languages. This is a sustainable approach to preserve and easily distribute your content.

folderHorizon is designed for non-programmers and for anyone who needs to consolidate their digital content into a readable and durable format.
No-Code! The programming is just to organize folders and files and anyone with a computer is familiar with this primary archiving approach. folderHorizon does all the rest of the work.

Wild Start


Uzip and run folderHorizon executable in its folder (double-click on Win and Mac [1]), it creates the folderHorizonWorks directory for your archives.


[1] Mac users info
[2] The tutorial archive is set at first run when no other archive is available.
Being editable, you can modify, waste or delete it.
If you want to recover it, just create a new archive named Tutorial.

Content


Usage

Environment


Contacts folderhorizon@proton.me

top

Usage

Program interface


The main interface are your folders where you organize the content.
The folderHorizon terminal shows simple menus that allows to select actions, options etc. by typing a character or number then press Enter.
The terminal reads your folders and monitors your work and your default browser displays the result in real time.

Main commands

When archive content is modified, press 'Enter' to update and view changes on page.

Other commands and options

An example with a working one and many archives

 ===========================================        
 folderHorizon

    Working on 'My Siberia' (456 MB)
    ========================================
    v : view in browser
    r : release the final archive
        ====================================
        c : enable empty caption files

    3 other archives to build
    ========================================
    1 : Hugo Brain Website (3 MB)
    2 : Wordpress Headache (701 MB)
    3 : Wrong Photos (68 MB)

    ========================================
    n : create a new archive
    q : quit the program

    ========================================
              Type a command and press Enter
    :v

While editing HTML/Text in browser after build

===========================================          
* Open 'My Siberia' folder to set your content
* When done, type:                        *
* r : to release the final archive        *
* q : to quit the program                 *
===========================================
                         ...and press Enter
:r

On archive folders/files changes...

      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      The Archive has been modified!
      Press Enter to updare changes.
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                     

top

The archive folder/s


There are two levels of folder in the archive directory: sections/ contain projects/ that contains files and captions. Unicode characters are supported in folder and file names.
Some characters or patterns like '@', 'number #' and '#priv' are reserved for special functions (explained in this document).

Supported files


  * image    jpg|jpeg|jpe|png|tif|tiff|bmp|pict|webp|gif|svg
  * video    mp4|avi|mpg|mpeg|mkv|m2v|vob|oggvideo|mov|3gp|webm|wmv|flv
  * audio    mp3|flac|wav|aif|aiff|ogg|m4a|aac
  * document any downloadable except for ones above and .txt files
             reserved for captions

Example folders scheme

All Animals (archive folder) Homepage figure (any supported file: image/video/audio + its caption file) Cats (section folder) White Cats (project folder) Black Cats (project folder) Other Cats (project folder) files... files... files... ... Dogs (section folder) Big Dogs (project folder) Small Dogs (project folder) files... files... ...

The name of 'sections' and 'projects' folders it is used by the program to build menus with links to the content. You can make as many sections and projects as you want.

The files are read only at second level of project folders, files in section folder will be ignored by the program.

Sorting folders and files

folderHorizon reads your archive tree in alphabetical order. You can change the order of folders and files by adding a prefix to their name. The prefix is a number followed by an hash symbol, example:

	1 # Your file or folder name
	2 # Another file or folder name
	| it forces 'Another...' after 'Your...'

Leading zero numbers, 01, 001, 02 etc. and whitespaces before/after the hash symbol are allowed.
The program trims the prefix keeping your sorting.

Group project folders

Some projects could have the same name/title with different versions or series.
Use the @ character as separator in the projects folder name so the page menu can show them as a group. Folders name:

	My Project Title @ October Series
	My Project Title @ December Series

Menu:

	My Project Title
	   - October Series
	   - December Series
			

Note: project folder name can contain only one @ character.

Files caption

Any file can have a text caption with title and description.
When the "empty caption files" option is enabled, folderHorizon creates an empty .txt file for each file in the same folder.
When disabled, you have to create manually your caption files.
The caption file has the same name (extension included) as the file it describes.
Example:

	MyImageFile.jpg 	(your file)
	MyImageFile.jpg.txt 	(caption of file)

Open the .txt file with a simple text/code editor:

	The first line is the title
	The other lines are the
	description of file content...


This option also supports a pre-formatted text template. A file named [CaptionsTemplate].txt placed in the archive folder will replace the 'empty' captions text.

Video poster/preview image

folderHorizon automatically tries to extract the preview image from your video files.
If it doesn't succeed, or if you do not like the result, you can set your .jpg image in the same folder of video using a strategy similar to the captions:
name the image with the same name of your video (extension included) adding the suffix -videoposter.jpg

	MyVideoFile.avi 			(your video)
	MyVideoFile.avi-videoposter.jpg 	(video poster/preview)
	MyVideoFile.avi.txt 			(caption...)

Search and tags

The Search finds the text occurrences the HTML/Text pages, in the file captions and in the [tags].txt files.
You can create a file named [tags].txt and write your tags/keywords in any context/folder. example: #wild#badgers#foxes#wolves

The search input accepts multiple words using the pipe character | a separator,
example: motorcycle|helicopter

top

Environment

Requirements


top

Configuration files


folderHorizon creates the program and the archives configuration files with default values ​​that can be modified. Configuration .json files contain "Key": "Value" data and they are editable with a simple text/code program. Just be careful not to break the double quotes and commas.

archive.json

The configuration file created in each archive folder contains your archive preferences that you can customize.

Example with | notes

{
  "ArchiveName": "Archive Name",
  "ArchiveDescription": "The description of this archive",
  "ArchiveKeywords": "A list of keywords about content",
  "ArchiveAuthor": "Your Name?",
	| All self-explaining HTML page metadata
  "ImageResizeHeight": "1200",
	| If needed, gallery images are resized by pixel height
	| To avoid the resize, just set a huge number
  "ThumbnailHeight": "400",
	| Thumbnail images resize, 300 to 500 should be ok
  "JPGQuality": "2",
	| Quality of resized Jpeg images, high to low: 2 to 5
  "MP4Quality": "19",
	| Mp4 video quality, high to low: 18 to 24
	"MP4Bitrate": "192",
	| Mp4 video/audio quality, high to low: 320|256|192|128
  "MP3Bitrate": "192",
	| Mp3 audio quality, high to low: 320|256|192|128
  "AudioWaveFormColor": "#333333",
	| The color of the audio waveform generated image
	| See class '.audio' in 'main.css' file
  "AssetDirectory": "asset-default"
	| The 'asset' directory name (see doc [asset-default].html)
  "EnableEmptyCaptions": false
	| Empty caption option enabled/disabled by terminal menu
}

folderHorizon.json

The program configuration file is created in the program directory at first run.
The program also create the directory for your works defined in "WorksPath".
If you want to move/rename the 'folderHorizonWorks' folder, you have to modify also the "WorksPath" value.
Of course, you can use an external Disk Drive.
Important. Do not use whitespaces in "WorksPath" and do not rename its internal folders: 'Archives' and 'Releases'.

Example

{
	"WorksPath": "/Users/*yourname*/folderHorizonWorks",
	"ServicePort": "8080"
}

The "ServicePort" 8080 should be ok by default. In case of error, you can set 8000/9000/9090 etc.
The service allows to write the HTML/Text of the pages in browser and save it in files named [text].html
The service also monitors the archive changes allowing to update and view in real time.

top

FFmpeg


folderHorizon uses a static version (7.0.1) of FFmpeg for media conversions. It also creates video poster/preview and waveform pictures of audio files.
The ffmpeg static binary file is downloaded/extracted in resources/ffmpeg/ from:

We sincerely wish these three people and urls a long long life.

top

Troubleshooting


* Mac users need to force folderHorizon (and maybe ffmpeg) because detected as "from an unidentified developer".
Just convince your Mac that as the owner, you decide.
Open System Settings. Click Privacy & Security, scroll down, and click the Open Anyway button...
The warning prompt reappears and... you can click Open.


* Any report of malfunction is welcome and will be evaluated as soon as possible.
If you think you have a malfunction while updating changes in the archive, there is an easy way to reset the building/updating:


* Do not open the archive links in "new browser tab" during the developement.
It affects the status/changes script.
The 'Search' page has no status/changes script so it opens result links in "new browser tab".
Is suggested to close the multiple tabs result when you modify the archive folders/files.


The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. in no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.


(c) LL 2024