3,365 apps tracked 0 new today 17 updated today Synced 2m ago

Bestatic

A simple but powerful static-site generator

Tatsat Banerjee โœ“ Verified

com.bestaticpy.bestatic
View on Flathub โ†—

Bestatic is a simple but powerful static-site generator that you can install graphically without worrying about dependencies, on Windows, macOS, and Linux, running on any x86_64 and ARM architectures. It can simply turn your text files into fully functional websites and blogs.

Any prior knowledge in Python is not required. Neither is any prior knowledge in dependency or environment management.

It is really minimal yet feature-rich. Like every other static-site generator, it can generate a complete website by processing a bunch of markdown files. As a result, it eliminates the need for server-side programming, databases, and constant security updates. The site that Bestatic generates can be served from any web server or host (or even from Git-based platforms, for completely free).

Some salient features of Bestatic that are probably worth highlighting:

  • Blog-aware. You can easily create your blog/news page along with your website. Customizable list pages for blog posts, reverse chronological order of posts, tags, comments (using Giscus or Disqus), fully customizable URL structures, RSS feeds - All standard good stuff are already included.
  • Feature-rich out of the box ๐ŸŽ. Want LaTeX support? Syntax highlighting for code? Powerful search functionality? Auto-reloading server? Configurable navigation? Custom taxonomies (categories, multiple authors, etc.)? Image optimization? Custom handling of CSV and YAML data? We have all these things built-in. Oh yes, unlike many other static-site generators, our multi-column content layout work out of the box.
  • Flexible and extensible โœจ. Want to configure things in your way? Use simple yaml files. Want to use command line? Use our CLI options. Want to theme in your own way? Use standard Jinja2 templating to design freely. Want to use different markdown plugins or maybe your own custom shortcode? All of these things can de done pretty easily, without any prior knowledge or experience.
  • Scalable. Bestatic ultimately builds a bunch of static files. So, no need for database management, server maintenance, or constant security updates. A hassle-free way to manage large-scale websites.
  • Free and open-source. Of course, Bestatic is free and open-source, licensed under GNU GPL-3.0. This will remain free and open-source forever.
  • Simple. Making things simple for you is our goal. Be it via graphical installation, compatibility across operating systems and hardware architectures, dedicated quickstart, or in-depth documentation: We just want to make your Bestatic journey easy and enjoyable for the beginning!

Getting started: Want to try Bestatic? Download and install it from the release page (separate native installers for Windows, macOS, and Linux) https://github.com/tatsatb/bestatic/releases/latest, or Snap store, or Flathub, or PyPI. Detailed installation instructions, quickstart guide, and user manual are available on our official documentation at https://www.bestaticpy.com.

Observed history

App ChangeVersionWhen โ†‘

No observed changes yet.

The initial import establishes a baseline. Future version changes will appear here.

Browse the app catalogue โ†’

Upstream releases

Release notes supplied by the developer. These dates are not Flathub package publication times.

0.0.3627 Dec 2025

Release v0.0.36 should be considered as a major release of Bestatic. This is a relatively stable version that should work on both x86-64 and arm64 architectures, running Windows, macOS, or Linux.

IMPORTANT: The documentation for Bestatic has been completely updated and it is now available at the official website. This was a long overdue update and we are glad that it is finally here!!

New Features:

  • New GUI Installer for macOS: We have brand new GUI based .pkg installer for macOS (separate native packages for Intel and Apple Silicon). In proper Bestatic style, everything is included in a single-executable. Mac users no longer needs to tinker with homebrew/pipx/command line, if they choose not to (of course, CLI is still a valid installation option).
  • Customizable Port Number: During local testing, users can now specify their port number of choice via --portnumber or -n flag. Previously it was hard coded to 8080 (which is still the default, if that flag is not specified).
  • Miscellaneous keys can now be added to the bestatic.yaml config file (with extra_data key and any nested keys of choice) and Bestatic will now pass it properly to the templates. This can be really valuable in generating second navigation bar.
  • Custom Data Handling: In addition to custom description of taxonomies (via _includes/yamls folder), Bestatic can now process user provided CSV and YAML data and pass the structured data theme templates. With proper themes, webpages can be generated with minimal markdown for repetitive/structured content.
  • Image Optimization module is now available in Bestatic out of the box. This is currently an experimental feature that can be used to optimize image size by automatically converting all images to .webp format. While this would make site builds a bit slower, especially for large images, it would make sites much faster to load.
  • A test Suite has been added to the codebase.
  • Linux users who prefer not to use flatpak or snap, can now use native linux installers. The install.sh and uninstall.sh are provided inside the tarball.
  • Version Updates: Majority of the Python packages have been updated to the newest version. Bestatic now supports Python 3.10-3.14 (all currently maintained Python versions).
  • New Themes: We have added two new themes to the themes repo: bestatic-lab-group and bestatic-lab-group-simple. These themes are designed for academic lab group websites. All other themes have been updated to use the new features as well.

Bug fixes:

  • Quickstart now works even it is tried with a theme other than "Amazing". Fixes issues https://github.com/tatsatb/bestatic/issues/6 and https://github.com/tatsatb/bestatic/issues/7.
  • Blog pagination has been fixed and more than one pages can be created (it broke during the last release).
  • Navigation can be correctly configured via Nav parameter, even if separate homepage template is used now.

Themes are available at the themes repo. Detailed documentation is available at the official website.

As usual, Bestatic can be downloaded and installed from the GitHub release page, or Snap store, or Flathub, or PyPI.

As always, thank you very much for trying Bestatic. โค๏ธโค๏ธ

Full Changelog: https://github.com/tatsatb/bestatic/compare/v0.0.30...v0.0.36

0.0.3027 Dec 2024

New Features:

  • Multiple column layouts are now available for all page content. To use it, Inside a markdown header, use splitsection class to split the content into different sections. Bestatic will pass these sections separately (along with your corresponding headings and section index numbers) to your templates. You can then utilize all Jinja2 logic systems to customize your content into dynamic multiple columns (using Bootstrap CSS or something similar). We will soon update Bestatic themes to take advantage of this feature.
  • Users can now define their own Shortcodes (i.e., macros that can convert simple snippets in contents into per-defined HTML markup) for markdown processing by writing custom Python functions and including them in _shortcodes directory.
  • In addition to per-existing "tags", users can now define custom taxonomies (for e.g., categories, authors, movies, etc.), generate list page for each of those, and process additional data for each of these taxonomies from .yaml files in _includes/yamls directory. As a result, multiple authors can now have custom pages with their biography and list of authored articles.
  • The main config.yaml has been renamed as bestatic.yaml. Old config.yaml would still work for now, but it will eventually be depreciated.
  • Slugs now will be generated automatically as per the filename (of course, user is free to customize it, as usual) when bestatic newpage or bestatic newpost would be used.
  • Dates and times can now be formatted in the bestatic.yaml using the strftime format (see docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes and strftime.org for reference) to display those as per users' choice. The "%B %d, %Y" format has been set as a fallback option.
  • Custom extensions and extension configurations now can be added via bestatic.yaml file. All python-markdown extensions and Pymdown extensions can be used now, along with their individual configurations.
  • The character length of post summary can now be defined in bestatic.yaml file.
  • Single posts can be used as homepage.
  • Navigation can now be simply defined in bestatic.yaml file. It can be as nested as required. With proper themes, users will no longer need to manually edit templates to define the navigation links.
  • For post items, URL parameter can now be completely user defined (e.g., "blog", "news", "articles", etc.), configurable via bestatic.yaml file. "Posts" will now be the fallback option.
  • In addition to previous slug and next slug, each post has access to previous and next titles of the posts.
  • Included markdown-include extension in the Bestatic package so that one markdown file can add content from another markdown file.
  • The fuse-search tool has been rewritten to include user-defined search-index file link.
  • Page type contents now can have access to all the Post type content data. This can be enabled in bestatic.yaml file.

Bug fixes:

  • The newline attribute has been removed from the sitemap.xml files.
  • Tags field can now be empty (if the user chooses to not use any tag).
  • Faulty caching in Bestatic development server has been fixed (which often created issues with Chromium-based browsers).
  • Time zone can now be set in bestatic.yaml file. The UTC has been set as a fallback option.
  • Post summaries on list page will no longer have unprocessed HTML tags.
  • Project Sites on GitHub and GitLab can now be better deployed using -p or --projectsite flag.

Documentation and themes will be updated accordingly soon.

Release 0.0.30 is essentially same as 0.0.29; previously an outdated file got included. So, we are updating the version to v0.0.30.

0.0.2823 Aug 2024

Bug fix:

  • Correctly generate the search index when the -p or --projectsite flag is used.
0.0.2723 Aug 2024

Added features:

  • Added root-import directory which will be directly copied to the root of the generated site folder (in a nested fashion).
  • Added the -p or --projectsite flag for correctly deploying the website as a "project site" to a Github pages (or Gitlab pages), even without using any custom domain.
  • Updated README.md with website links.