GithubHelp home page GithubHelp logo

picoblog's People

Contributors

dependabot[bot] avatar jonasbg avatar

Stargazers

 avatar  avatar

Watchers

 avatar

picoblog's Issues

Configurable config

Too many configs are hard-coded. These need to be configurable either by a config file and overridden by environment variables, such as

  • Data path /data
  • ~Search pattern, *.md vs custom ~

Big screen readability

On bigger screens, iPad, laptop, monitors, the text now spans the entire width, making it hard to read on larger monitors. Make so it has a max width.

HELM support

Create HELM charts so it can be deployed to cluster.

  • HELM chart
  • Push helm chart to OCI endpoint
  • Service
  • Deployment
  • Ingress
  • /healthz endepunkt

Posts without images

Some posts doesn't have a image, or two.

Present them in a better header and make title readable.

Security Enhancements

Some more security enhancements

  • Rate limiting on login
  • Log every failed attempt at login

Github Actions for multi platform docker images

Create a Github action that builds a multi platform image and pushes that to docker hub.

  • Multi-platform docker image
  • Push to dockerhub
  • Scan for vulnerabilities
  • Push to ghcr.io as well as dockerhub

Map support

A map view of all posts based on location: Norway, Trondheim from the YAML Frontmatter.

Or from some of the gps included exif values.

Edit posts

The current workflow is somewhat tedious and not always straight forward. And not really suitable for working from an iPad for instance.

Some thoughts:

  • Show images for a given day for easier picking and importing into your posts
  • IP blocking for editing or something similar for restricting access.
  • Markdown preview while typing such as Notion/Typora etc
  • Markdown frontmatter autogenerated
  • actions supported - create - edit - archive (soft delete)
  • PWA support
  • iPad and iPhone compatible
  • Minimalistic frontend. No buttons. Perhaps only a quick menu with '/'
  • WebDAV support for editing remote files

Support for Synology optimized images

Implement support for Synology optimized images inside @eaDir directory. Defaults to original image if not optimized.

Since its shall be a zero config if possible solution, I does not want to implement a long running task for resizing images. Maybe implementing a cache that optimize images for each request with a mem cache.

  • Support Synology optimized images in @eaDir
  • Make this opt-in config

Hide frontpage

Maybe some posts should be hidden? Make the Frontpage configurable to be hidden, so only shared posts are known to viewers.

  • Hide front page by config
  • Enable config by IP allow list
  • Hide individual posts hidden: true|false. Hidden|private

Export to pdf

Virtual sites are only worth their weight in bits and bytes, which is next to nothing.

Make it possible to export to pdf formatted for physical journal books, ready to be sent to print.

  • Magazine size
  • Photo book size
  • Set range to export, ie from-to date
  • Export by tags or other identifies

Single Image support

Makes images span entire page when presented in a single view. Alternative make them span the entire viewport width.

Poll or watch directories for change

Markdown search is only done during init of application, so a new search requires a restart.

Implement either

  • ~~Watch mechanism recursively in a folder. ~~
  • Polling mechanism at a given interval

Notes

Watch approach

There a limit to how many files that can be watched at once. If it can find *.md files only on listen for changes to those maybe.

Polling

Needs a configurable time to do the search. More intensive on disks maybe, if it will search an entire directory recursively each n minutes.

Image optimization support

Instead of relying on Synology for image optimization, implement own image support.

Cache to either memory (expensive) or to disk and reuse.

Must be configured with CACHE_DIR, located default in CONFIG folder.
Or store cache in wwwroot and use SixLabors.ImageSharp Middleware to automatically optimize these images with support for query parameters for size and quality.

Periodic and Automatic Backup of All Posts

Issue Description

To enhance the resilience and portability of the data, it's necessary to implement a periodic and automatic backup feature for all markdown posts in the Picoblog application.

Proposed Solution

The proposed solution involves the following steps:

  1. Backup Directory: Utilize the existing /config directory to store the backups.

  2. Backup Process:

    • Collect Markdown Files: Traverse the application's content directories and collect all markdown (.md) files.
    • Compression: Compress the collected markdown files into a gzip format.
    • Naming Convention: Name the compressed file using the date of the backup, such as /config/{YYYY-MM-DD}.tar.gz.
    • Automation: Implement a scheduled task or cron job to run the backup process at regular intervals (e.g., daily or weekly).
  3. Restore Process:

    • Select Backup: Allow the user to select a specific backup file from the /config directory.
    • Decompression: Unzip the selected gzip file.
    • Restoration: Replace the existing markdown files with those from the backup.

Example

# Backup
find /path/to/markdown/files -name "*.md" | tar cvzf /config/$(date +%Y-%m-%d).tar.gz -T -

# Restore
tar xvfz /config/{selected-date}.tar.gz -C /path/to/restore

Benefits

  • Resilience: Protects against accidental data loss.
  • Portability: Facilitates migration and recovery across different environments or machines.
  • Ease of Use: Simple restoration process to recover posts.

Considerations

  • Storage Management: Implement retention policies to manage old backup files.
  • Security: Ensure proper permissions on the backup files to prevent unauthorized access.

Full page image when clicked

I would like to open an image in fullsize when I click on it.

When in fullsize I would like to view some metadata. I would also like to go to the next and previous image in the post.

  • Metadata such as
  • Camera Make
  • Lens Model
  • Shutter speed
  • ISO
  • Aperture
  • Date
  • Description
  • Title/Filename
  • Tags
  • Location info on a small map
  • Go to previous image
  • Go to next image
  • Hide metadata information

Favorite a post

Possible to favorite a post. Would be with a cookie setting and possible favorites view.

And also take look at standout post that is pinned to the top.

Unread/read settings as well maybe?

  • Favorite a post as a user
  • Make a pinned standout post
  • Mark unread posts

statistics

Create an admin/statistics view where its possible to see some interesting information such as

  • Number of posts
  • GitHub style attribution pr. day calendar
  • Most active month
  • Most active year
  • Longest post
  • Shortest post
  • Wordcount with lines
  • Read time for all posts
  • Longest streak (do you want streaks?)
  • Current streak
  • Cache information
    • Size
    • Number of files

Support Movies

Local movies are not supported.

  • Implement support for movies

Search and filter

Search for text, year, tags.

Filter by year, month, tags.

  • Filter by year

  • Filter by month

  • Filter based on tags

  • search for text

  • Search for year

  • Search for month

  • Search for tags

Better logging

More logging

  • each request
  • events from the server such as background tasks
  • log level
    • info - log minimal, get request, server events
    • none - no logging (such as today)
    • verbose - logg everything, image loaded, image converted, files read etc...

iOS Progressive Web Application (PWA)

Make the site we app friendly so it can be installed on the Frontpage.

  • PWA
  • Safari Push Notification on new content (not drafts)
  • Swipe to go to next and previous post
  • Swipe down to "close"
  • Swipe and hold down to reload

Implement responsive web site

Build a more robust responsive UI that scales from mobile phone up to large widescreen monitors.

  • Top bar meny wide screens
  • Bottom bar meny for smaller screens

Tags

Support for tags in YAML header and site.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.