No Description

theMage deebf7f9e6 allow to default the flags field to flags 2 years ago
database 3b44ca93e8 user permissions 3 years ago
examples 82045ad7b7 allin - a small example with most osmo funcs 3 years ago
lib deebf7f9e6 allow to default the flags field to flags 2 years ago
public 33517bf996 a bit more color on the titles 3 years ago
templates 0cd00ee903 routes, some fixes 3 years ago
Changes 13faca6437 Changelog 3 years ago
README.pod 44014a561f some more info on what is going on 3 years ago



oSMo (oSocial Mojolicious) is a framework writen over Mojolicious,
extending Mojolicious with the functionality need to implement simple
and fast a social website.

=head2 Documentation

I know, I know - I will get there.

=head2 So Far

So far oSMo is mostly adding functionality to Mojolicious, assuming some
basic functionality will be used most of the time. The basic infrastructure
for authentication and logging as described in the edeas below is already in
place, even if most of the final implementations are not yet final.

At this point oSMo makes it really easy to create sites that use
bootstrap as a design framework, but it doesn't need to be used and can
be easily replaced by creating a small set of templates in your app
that you'ld need to create anyway with Mojolicious.

In theory everything you can do with Mojo should work with oSMo, and you
get a few new things.

=head2 Working already

=over 2

=item Templates and Themes

Mojolicious template system is really nice, and the only change made on
it was the support for themes - sometimes you may want to make a website
that used different themes for different - the only condition
is that when you get to the rendering the themes is already defined,
the conditions you use to define your themes are your problem.

oSMo will look for the right template first in the theme directory
and then in the main templates directory. The themes may also have their
special version of the public files - if your theme only need
a different css file, it may only have the new css, with the same name as
the file in the main public directory, and that it, you have a new look for
your site.

=item Authentication

oSMo, with auth activated, adds some helpers, conditions and predefined
routes to your Mojo website.

=over 2

=item helper

oSMo adds the helpers authed(), anonymous(), user_can('permission') and
auth_form() - this can be used in your controlers or templates.

=item conditions

oSMo also adds the conditions authed_user, anonym_user and user_can
conditions, that you can use when defining your routes.

=item base routes

But you can also use $app->auth->anonymous_routes or
$app->auth->authed_routes as base for your routes for anonymous or
authenticated users.


oSMo::Auth is also plugable, and you can define your own authentication
plugins for it. Unless you need a register page, you don't even need to create
any page to make your authentication work - just a list of fields you need
on login and a check_user method to verify the credential.

Some Authentication systems may need some more complex logic - and it's
part of the plan to support oAuth, Open ID, Facebook and some others
on the framework itself.

=item Menus and Snippets

Most website have menus, and often enough we need to add small snippets of
html/js/css to our pages depending on conditions - and that shouldn't mean
we need a completly new template to have those. oSMo have support to define

=item Form Validation

Validating forms is always needed - this is still a WIP, but the bases for it
are already here.

=item Email

Because it was needed for the Email Registering and Authentication, and most
sites like to send emails - if nothing else from the contact us form to the
site owner.

=item Sessions

Because sessions should be server side - I think, not client side. We just
send a session Id to the user, taking advantage of Mojo::Session, and keep
everything else server side.


=head2 Ideas

=over 2

=item Task Queueing

oSMo implements a plugable task queueing and execution mechanism,
plugable in a similar way as most parts of Mojolicious are. Execution
of tasks on the cleanup phase of the request, using a MySQL table
and using a message queue system (RabbitMQ).

=item Message Broadcast

oSocial is a decentralized social protocol, and that means that most
of the applications using it will need to broadcast messages to other
oSocial nodes.

=item User Authentication

oSMo implements a plugable authentication engine, and some basic
authication plugins, including email+password and oSocial.

=item Logging

Mojolicious log system was designed for developement more than
for production. It allow for quick debuging, and to automatically
disable the logs in the production systems.

But if that is specially good when creating a small system, sometimes
a lot more than that is needed. oSMo replaces the Mojolicious log system
with its own, in order to add a few more functionalities to it, and make
it more pluggable on how the log are saved and what gets logged.

=item Localization

Because if your site gets interesting, it will most likely need it.


=head2 Instalation


=head2 Getting Started