NAME

    App::Standup::Diary - Manage a simple Markdown journal for your daily
    standups

SYNOPSIS

      # From command line
      diary --data-dir /home/smonff/diary/ --project-name SeriousWork
    
      # In your Perl code
      my $diary = App::Standup::Diary
        ->new(
          data_dir     => $data_dir,
          project_name => $project_name
      );
    
      $diary->write();

DESCRIPTION

    This module is the implementation of the diary command, that can help
    to keep a directory of organized daily notes aimed at standup
    preparation and presentation.

    It provides a couple of ways to customize the notes template.

    It use internal tools built with CPAN modules:

    App::Standup::Diary::Template

      The Markdown template where your data are interpolated.

    Standup::Role::Date

      Provide date features for all the diary uses.

    Standup::Role::Project

      Provide a project name, so far.

MOTIVATIONS

    Daily standups are a common, tried and tested modern work methodology.
    They are "brief, daily collaboration meeting in which the team review
    progress from the previous day, declares intentions for the current
    day, and highlights any obstacles encountered or anticipated" (source).

    This tool is supposed to provide self-support for persons:

    Who struggle with daily standups presentations oral expression

    Surely familiar with the Perl ecosystem

 How did it start?

    Social anxiety can make my standup presentation very confusing. I also
    tend to forget key points if improvising, due to the stress of having
    no talk notes support. Keeping a diary of my thoughts drastically
    helped me to stay calm and collaborate better with the various teams I
    worked with. And if they are well sorted by year, month and day, it
    makes very easy to find old notes for eventual later usage.

 Ready for production

    I have been using it at work since 2021 and it helped me to reduce the
    stress of standups and meeting.

 Methodology

    Every morning, create the daily file by running diary. It's template is
    a simple 3 items list. Open the day file in $data_dir/$year/$month/ and
    stash your thoughts by using the following methodology:

    done

      List of tasks you accomplished in the previous day

    todo

      List of tasks you plan to accomplish today

    blockers

      List of eventual blockers, so that your colleagues can support you

    Then just read the notes during the daily standup.

 Experiment with Object::Pad

    App::Standup::Diary is my pet project for Perl's Corinna implementation
    of the core OOP features. diary use Object::Pad, not the class feature
    introduced in Perl 5.40. Object::Pad is the test bed for the new core
    OO system.

INSTALLATION

 For common usage

        cpanm App::Standup::Diary

    It will make the diary command available in the ~/perl5/bin/ directory.
    Should be available in your PATH.

    See diary for command line usage.

 For development

      # Install a Perl module manager
      apt install carton
    
      git clone git@codeberg.org:smonff/Diary.git
    
      cd Diary
    
      # Install CPAN dependencies
      carton install

How to use it?

    I set an alias in my .bashrc. Should also work in your
    own-favorite-shell:

      alias diary="diary --data-dir /home/smonff/diary --project-name SeriousWork";

    Each morning, before my work standup, I run diary. It create a Markdown
    file in the specified --project-name directory. I then edit my thoughts
    with an editor.

    See diary for command line usage.

FIELDS

 config

 daily_data_path

 data_dir

 template

    A App::Standup::Diary::Template object.

METHODS

 build_full_file_path()

 build_path($self->date->ymd('/'))

    Use the date from Standup::Role::Date to build the final path file
    name.

 create_directories_tree()

    If $self-should_create_dir()> returns a true value, it would take care
    of the directory creation using Path::Tiny mkpath.

 init_daily_data_path($file_path)

    Helper that initialize $daily_data_path with a Path::Tiny instance for
    the current day diary entry.

      # foo/2022/03 (Path::Tiny)
      $self->init_daily_data_path($self->build_path)

 should_create_dir()

    Check if a new year or month directory should be created so that we can
    store the standup file. In simpler words: are we the first day of the
    year, or of the month?

 write()

    This is App::Standup::Diary entry point, AKA main().

TODOs

    Make the template configurable by setting it in a separate file

    Retrieve TODOS from previous days

    See the issues tracker
    <https://codeberg.org/smonff/Standup-Diary/issues>.

SEE ALSO

    A couple of similar tools:

    StandupGenerator
    <https://metacpan.org/release/JTREEVES/StandupGenerator-0.5/source/README.md>

      On the CPAN, this is pretty much all what I found. I like the spirit
      of this one.

    Almanac <https://codeberg.org/jameschip/almanac>

      A similar effort written in Bash.

ACKNOWLEDGEMENTS

    Thanks to the maintainers of Config::Tiny, Mojo::Template, Object::Pad,
    Path::Tiny, Time::Piece.

LICENSE

    Copyright 2022-2024 Sebastien Feugère

    This library is free software; you can redistribute it and/or modify it
    under the Artistic License 2.0.

    See perlartistic.

AUTHOR

    Sébastien Feugère - seb@feugere.net