BusyBird

 view release on metacpan or  search on metacpan

lib/BusyBird.pm  view on Meta::CPAN

    return defined($singleton_main)
        ? $singleton_main : ($singleton_main = BusyBird::Main->new);
}

sub timeline {
    my ($timeline_name) = @_;
    return busybird()->timeline($timeline_name);
}

sub end {
    return create_psgi_app(busybird());
}

1;

__END__

=pod

=head1 NAME

BusyBird - a multi-level Web-based timeline viewer

=head1 DESCRIPTION

L<BusyBird> is a personal Web-based timeline viewer application.
You can think of it as a Twitter client, but L<BusyBird> is more generic and focused on viewing.

L<BusyBird> accepts data called B<Statuses> from its RESTful Web API.
The received statuses are stored to one or more B<Timelines>.
You can view those statuses in a timeline by a Web browser.

    [ Statuses ]
         |       +----------------+
         |       |    BusyBird    |
        HTTP     |                |
        POST --> | [ Timeline 1 ]----+
                 | [ Timeline 2 ] |  |
                 |       ...      | HTTP
                 +----------------+  |
                                     v
                              [ Web Browser ]
                                     |
                                    YOU

=head2 Features

=over

=item *

L<BusyBird> is extremely B<programmable>.
You are free to customize L<BusyBird> to view any statuses, e.g.,
Twitter tweets, RSS feeds, IRC chat logs, system log files etc.
In fact L<BusyBird> is not much of use without programming.

=item *

L<BusyBird> has well-documented B<Web API>.
You can easily write scripts that GET/POST statuses from/to a L<BusyBird> instance.
Some endpoints support real-time notification via HTTP long-polling.

=item *

L<BusyBird> maintains B<read/unread> states of individual statuses.
You can mark statuses as "read" via Web API.

=item *

L<BusyBird> renders statuses based on their B<< Status Levels >>.
Statuses whose level is below the threshold are dynamically hidden,
so you can focus on more relevant statuses.
Status levels are set by you, not by L<BusyBird>.

=back

=head1 SCREENSHOTS

L<https://github.com/debug-ito/busybird/wiki/Screenshots>

=head1 QUICK START

Example in Ubuntu Linux.

=over

=item *

Install C<gcc>, C<make> and C<curl>

    $ sudo apt-get install build-essential curl

=item *

Install

    $ curl -L http://cpanmin.us/ | perl - -n BusyBird
    $ export PERL5LIB="$HOME/perl5/lib/perl5:$PERL5LIB"
    $ export PATH="$HOME/perl5/bin:$PATH"

=item *

Run

    $ busybird
    Twiggy: Accepting connections at http://127.0.0.1:5000/

=item *

Open timelines

    $ firefox http://localhost:5000/

=item *

Post a status

    $ curl -d '{"text":"hello, world!"}' http://localhost:5000/timelines/home/statuses.json

=back



( run in 1.595 second using v1.01-cache-2.11-cpan-2398b32b56e )