ProductPromotion
Logo

Lua

made by https://0x3d.site

GitHub - sailorproject/sailor: A Lua MVC Web Framework.
A Lua MVC Web Framework. Contribute to sailorproject/sailor development by creating an account on GitHub.
Visit Site

GitHub - sailorproject/sailor: A Lua MVC Web Framework.

GitHub - sailorproject/sailor: A Lua MVC Web Framework.

Sailor

License Bountysource

Build Status Coverage Status

LuaRocks Lua

Join the chat at https://gitter.im/sailorproject/sailor Twitter Follow

WE ARE LOOKING FOR NEW MAINTAINERS!

Features

  • Compatible with Lua 5.1, Lua 5.2 and LuaJIT. (5.3 compatibility so far untested)
  • Luarocks setup
  • Runs over Apache2 (with mod_lua), NginX (openresty), Mongoose, Lighttpd, Xavante and Lwan web servers
  • Using Windows, Mac or Linux systems
  • Compatible with MySQL, PostgreSQL, SQLite and other databases supported by the luasql library
  • MVC structure
  • Parsing of Lua pages
  • Routing
  • Basic Object-relational mapping
  • Validation
  • Transactions
  • App comes already shipped with Bootstrap
  • Include, redirect
  • Sessions, cookies
  • Login module
  • Easy deployment (unix only) -> sailor create "app name" /dir/to/app
  • Form generation
  • Lua at client (possible through a Lua=>JS virtual machine deployed with the app)
  • Friendly urls
  • Inspect function for better debugging => similar to a var dump
  • Custom 404 pages
  • Relations
  • Model generation (reading from DB)
  • CRUD generation (reading from model)
  • Theme and layout (now you can have multiple layouts within a theme. e.g. 1-column and 2-column)
  • Integration with Busted for unit and functional tests for your app

Roadmap

  • Integration with mod_lua's DB API and DB module refactor
  • Improvements to the form and validation module

More about the motivation to build this project can be found here: http://etiene.net/10/sailor

Directory tree info

  • /docs - this one is supposed to have documentation
  • /lua-to-js-vms - different Lua->Javascript virtual machines for use of Lua in the browser with Sailor
  • /rockspecs - Rockspec files for LuaRocks install
  • /src - Lua modules with nice stuff from Sailor and other places.
  • /sailor - Sailor modules
  • /sailor/blank-app - blank Sailor web app, can be copy-pasted as base for your own apps
  • /test - apps for testing and demonstration purposes

Supported Environments

Sailor has been tested under Linux, Mac OS X and Windows and is currently compatible with Apache with mod_lua or mod_pLua, Nginx with ngx_lua, Lwan, Lighttpd with mod_magnet, or any CGI-enabled web server, like Civetweb, Mongoose and Xavante, if CGILua is present.

Installation

For Linux, see INSTALL_LINUX.md (Ubuntu) or INSTALL_LINUX_ARCH.md (Arch Linux)

For Windows, see INSTALL_WIN.md

For Mac, see INSTALL_MAC.md

Using Sailor

A default Sailor app will have the following directory tree structure:

  • /conf - configuration files, open and edit them.
  • /controllers - controllers you will make!
  • /themes - default theme files.
  • /models - models you will make!
  • /pub - publicly accessible files (js libraries, for example)
  • /runtime - temporary files generated during runtime.
  • /tests - unit and functional tests
  • /views - this is where your lua pages in .lp will go

Creating Pages

Go to /controllers and create your first controller! It should be a lua module. Name it whatever you want, our example is "site.lua". We will serve two pages, one accessible via /?r=site which will run site.index() by default and another one acessible via /?r=site/notindex.

local site = {}
local model = require "sailor.model"
function site.index(page)
  local foo = 'Hello world'
  local User = model("user")
  local u = User:new()
  u.username = "etiene"
  u.password = "a_password"
  local valid, err = u:validate() -- validate() will check if your attributes follow the rules!
  if not valid then
    foo = "Boohoo :("
  end

  -- Warning: this is a tech preview and some methods of model class do not avoid SQL injections yet.
  page:render('index',{foo=foo,name=u.username}) -- This will render /views/site/index.lp and pass the variables 'foo' and 'name'
end
function site.notindex(page)
  page:write('<b>Hey you!</b>')
end
return site

Go to /views, create a dir named 'site' to match your controller name and create your first page, our example is index.lp

<?=foo?>
<p>
  Hi, <?=name?>
</p>

For more information on what you can do with html and Lua Pages, visit http://keplerproject.github.io/cgilua/manual.html#templates

For more examples, you can check the test controller (/controllers/test.lua), the test views (/views/test/*) and the User model (/models/user.lua)

Documentation & Reference Manual

http://sailorproject.org/?r=docs

Contributing

Contributions are welcome! Just make a pull request :) Please try to follow the code style of the rest of the repository.

If you made an extension for Sailor and would like to share, please get in contact so I can add it to the website.

Thanks

This repository contains the following third-party MIT licensed code:

Suggestions, questions & hugs

Hugs! Not bugs. For bugs, fill an issue! :)

[email protected]

https://twitter.com/etiene_d

Mail List & Support

Join our google group for mail list and support

If you are having trouble to get Sailor working or if you got it working using different specs, please make contact so we can exchange info and I can improve the manual. Thanks!

More Resources
to explore the angular.

mail [email protected] to add your project or resources here 🔥.

Related Articles
to learn about angular.

FAQ's
to learn more about Angular JS.

mail [email protected] to add more queries here 🔍.

More Sites
to check out once you're finished browsing here.

0x3d
https://www.0x3d.site/
0x3d is designed for aggregating information.
NodeJS
https://nodejs.0x3d.site/
NodeJS Online Directory
Cross Platform
https://cross-platform.0x3d.site/
Cross Platform Online Directory
Open Source
https://open-source.0x3d.site/
Open Source Online Directory
Analytics
https://analytics.0x3d.site/
Analytics Online Directory
JavaScript
https://javascript.0x3d.site/
JavaScript Online Directory
GoLang
https://golang.0x3d.site/
GoLang Online Directory
Python
https://python.0x3d.site/
Python Online Directory
Swift
https://swift.0x3d.site/
Swift Online Directory
Rust
https://rust.0x3d.site/
Rust Online Directory
Scala
https://scala.0x3d.site/
Scala Online Directory
Ruby
https://ruby.0x3d.site/
Ruby Online Directory
Clojure
https://clojure.0x3d.site/
Clojure Online Directory
Elixir
https://elixir.0x3d.site/
Elixir Online Directory
Elm
https://elm.0x3d.site/
Elm Online Directory
Lua
https://lua.0x3d.site/
Lua Online Directory
C Programming
https://c-programming.0x3d.site/
C Programming Online Directory
C++ Programming
https://cpp-programming.0x3d.site/
C++ Programming Online Directory
R Programming
https://r-programming.0x3d.site/
R Programming Online Directory
Perl
https://perl.0x3d.site/
Perl Online Directory
Java
https://java.0x3d.site/
Java Online Directory
Kotlin
https://kotlin.0x3d.site/
Kotlin Online Directory
PHP
https://php.0x3d.site/
PHP Online Directory
React JS
https://react.0x3d.site/
React JS Online Directory
Angular
https://angular.0x3d.site/
Angular JS Online Directory