Skip to main content

Flask-based file explorer

Project description

Periplus

Periplus (from Latin periplūs “account of a voyage” and Ancient Greek περίπλους “voyage, naval manoeuvre, account of a voyage”) is a web file explorer built with Flask and Bulma. It serves the current working directory over HTTP with a sortable, keyboard-friendly UI and on-the-fly ZIP downloads.

✨ Features

  • Browse directories and view files from your filesystem
  • Sort by name, size, or modification time (ascending/descending)
  • Toggle visibility of hidden files
  • Inline image previews and a full-page viewer with keyboard navigation
  • Multi-select ZIP download (entire folders or arbitrary selections)
  • File uploads with preserved modification time (when provided by the browser)
  • Create new folders
  • Send files/folders to the system wastebasket instead of deleting outright
  • Responsive UI based on Bulma, no JavaScript framework
  • No internet access required when run locally

Minimal JavaScript

Periplus is designed to rely on JavaScript as little as possible; JavaScript only adds the following extras:

  • Uploads keep file modification times
  • Keyboard navigation in the viewer (← → Esc)
  • “Select all” and checkbox-based multi-file ZIP downloads
  • Smoother navigation (no extra history entries, in-place delete refresh)

📦 Installation

Periplus is available on PyPI and can be installed as usual, for example:

pip install periplus

🚀 Usage

From the directory you want to expose:

# Run the Flask development server on http://127.0.0.1:5000/
periplus run

# Make it available to the local network on port 5000
periplus run --host=0.0.0.0

Flask provides many more options, including for production use, which are discussed in its documentation.

Periplus is primarily designed for local use and light ad-hoc sharing on trusted networks. Because it exposes the directory tree of the process’s working directory, it should not be used on an untrusted network without additional access controls or isolation.

URL structure

Periplus uses the first URL segment to indicate the current mode:

  • GET /browse/...: main UI (folder listings, or raw file responses)
    • GET / redirects to GET /browse/
  • GET /view/...: full-page file viewer
  • GET /preview/...: small thumbnail previews
  • GET /full-preview/...: full-size previews (or suitable conversion)
  • GET /download/...: file downloads and on-the-fly ZIP archives
  • GET /delete/...: send a file/folder to the trash and redirect
  • GET /static/...: built-in CSS and icons

Sorting and visibility state are preserved via query parameters:

  • sort=name|size|date
  • reverse (present for descending)
  • show-hidden (present to show dotfiles)

📜 Licence

Periplus is licensed under the terms of the Mozilla Public Licence 2.0, provided in License.

The licences for Bulma (parts of which are included in src/periplus/css/user.css) and for the Feather icons (two of which are included in src/periplus/svg) are provided in the respective subdirectories.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

periplus-1.0.3.tar.gz (253.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

periplus-1.0.3-py3-none-any.whl (254.1 kB view details)

Uploaded Python 3

File details

Details for the file periplus-1.0.3.tar.gz.

File metadata

  • Download URL: periplus-1.0.3.tar.gz
  • Upload date:
  • Size: 253.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for periplus-1.0.3.tar.gz
Algorithm Hash digest
SHA256 e24a01d882e5e0fcccc0a76058e791f6d288749a270f2aef70580338c21a5a7a
MD5 d002666e2672cee7659efdbe1d344ca6
BLAKE2b-256 4d2744226aab20d97ce0fa70106af7f5efef01920a9a4c25377bdbcbea716793

See more details on using hashes here.

Provenance

The following attestation bundles were made for periplus-1.0.3.tar.gz:

Publisher: publish-to-pypi.yml on KurtBoehm/periplus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file periplus-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: periplus-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 254.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for periplus-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e56bcf0375335e06390507040cdc97399e82e11974ad41e6bd5730f2f5c5a0cf
MD5 7e03d87234cf803181a8567aa0d9e19f
BLAKE2b-256 6eb3bae2c9862f2af1095809012186010a280818eedc108abe71173f950d3397

See more details on using hashes here.

Provenance

The following attestation bundles were made for periplus-1.0.3-py3-none-any.whl:

Publisher: publish-to-pypi.yml on KurtBoehm/periplus

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page