Coder Social home page Coder Social logo

ww6's Introduction

ww6: Web Application Framework and CMS Library-set for Perl 6

Status: It works, but depending on features you use, can be pretty slow.
        The dynamic module loading can have some strange side effects if
        you are mixing pre-compiled libraries with plain .pm ones.
        I recommend compiling everything first, if you use 'panda' or one
        of the other Perl 6 package managers to install it, the compilation 
        will be done for you. That is highly recommended.

=== Story ===

In the beginning was Webtoo Websight, and it was good.
Based on the Perlite libraries it was, and they were good.

Both had reached a mighty version number of 5, but both had also
reached a point where a complete rewrite was in order.

It could have been done in Perl 5, as both were already written in
said language. It could have been done with magical tools such as
Moose, to make it stronger and easier to debug.

But then, the Great Architect said, "no."

And proceeded to rewrite the whole thing, in Perl 6.

This is the result.

=== Features ===

 * Supports Dispatch based configurations, where all URLs are matched
   and dispatched to the correct module.

 * Supports a custom website content management system, which looks for
   pages in a specific format, and parses them with plugins.

 * Supports web applications with dynamically dispatched controllers,
   similar to CodeIgniter from PHP.

 * Has a simple script 'ww6' to create new sites/apps with:
   $ ww6 --create webapp --dir new-app
   To get a list of available templates, type 'ww6 --list'.

 * The templates come with an example daemon.pl6 script (the default
   uses SCGI on port 8118) which is really simple to use:
     ./daemon.pl6
   Then connect an SCGI mount to port 8118 to see your app.

=== Dependencies ===

 = Requirements =

- Rakudo Perl 6
  http://rakudo.org/
  A version of Perl 6 for the Parrot Virtual Machine.

- The Hash::Has, HashConfig and WebRequest libraries
  http://github.com/supernovus/hash-has
  http://github.com/supernovus/HashConfig
  http://github.com/supernovus/WebRequest
  Used by the core, these used to be in a single library collection
  called Perlite, but where separated out into their own projects.

- The SCGI library for Perl 6
  http://github.com/supernovus/SCGI
  This library was written specifically because I was frustrated testing
  ww6 as a CGI script, where the performance was abysmal.
 
- The Exemel and Flower libraries
  http://github.com/supernovus/exemel
  http://github.com/supernovus/flower
  Used by both the CMS libraries, and the Lighter web application library.

- The JSON::Tiny library
  http://github.com/moritz/json
  Required by the HashConfig library, this is used for configuration
  files and Metadata (as well as a few other places in examples.)

- The Temporal Utils library collection
  http://github.com/supernovus/temporal-utils
  Not used by the core, but it is used by a few of the
  CMS plugins (including Headers) and by Flower::Utils::Date which can be
  loaded by the Flower plugin (see the modifiers option in the Flower plugin.)

- If you want to run the SCGI process on a computer behind NAT,
  and have the publically accessible web server forward requests
  to it, you can look into the reverse proxy functionality of OpenSSH.
  The 'extra/service.sh' and 'extra/svc/example.cfg' files show how I had 
  it set up to run on my home computer, and forward to my VPS.

=== Future Plans ===

This project is still under construction, and does not include all of the
functionality from Webtoo Websight 5 yet.

See the docs/TODO.txt for specific details on future plans.

License: http://www.perlfoundation.org/artistic_license_2_0
Author: Timothy M. Totten

ww6's People

Contributors

supernovus avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar  avatar

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.