All Projects → nteetor → Prairie

nteetor / Prairie

Licence: other
Get web applications growing in R

Programming Languages

r
7636 projects

Projects that are alternatives of or similar to Prairie

Rustful
[OUTDATED] A light HTTP framework for Rust
Stars: ✭ 867 (+908.14%)
Mutual labels:  web-framework
Struts
Mirror of Apache Struts
Stars: ✭ 1,067 (+1140.7%)
Mutual labels:  web-framework
Fastplaz
FastPlaz - Pascal Web Framework
Stars: ✭ 72 (-16.28%)
Mutual labels:  web-framework
Aurelia
Aurelia 2, a standards-based, front-end framework designed for high-performing, ambitious applications.
Stars: ✭ 995 (+1056.98%)
Mutual labels:  web-framework
Sparkles
✨ is a web "framework" in Rust
Stars: ✭ 46 (-46.51%)
Mutual labels:  web-framework
Ktor
Framework for quickly creating connected applications in Kotlin with minimal effort
Stars: ✭ 9,190 (+10586.05%)
Mutual labels:  web-framework
Go Zero
go-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
Stars: ✭ 13,156 (+15197.67%)
Mutual labels:  web-framework
Ofbiz Plugins
Apache OFBiz is an open source product for the automation of enterprise processes. It includes framework components and business applications for ERP, CRM, E-Business/E-Commerce, Supply Chain Management and Manufacturing Resource Planning. OFBiz provides a foundation and starting point for reliable, secure and scalable enterprise solutions.
Stars: ✭ 83 (-3.49%)
Mutual labels:  web-framework
Dropwizard
A damn simple library for building production-ready RESTful web services.
Stars: ✭ 8,078 (+9293.02%)
Mutual labels:  web-framework
Foal
Elegant and all-inclusive Node.Js web framework based on TypeScript. 🚀.
Stars: ✭ 1,176 (+1267.44%)
Mutual labels:  web-framework
Jiny
Lightweight, modern, simple JVM web framework for rapid development in the API era
Stars: ✭ 40 (-53.49%)
Mutual labels:  web-framework
Vaxic
Node HTTP server framework
Stars: ✭ 45 (-47.67%)
Mutual labels:  web-framework
Cuba
CUBA Platform is a high level framework for enterprise applications development
Stars: ✭ 1,114 (+1195.35%)
Mutual labels:  web-framework
Flex Flexunit
Mirror of Apache Flex Flexunit
Stars: ✭ 13 (-84.88%)
Mutual labels:  web-framework
Toruk
Go web 开发脚手架
Stars: ✭ 78 (-9.3%)
Mutual labels:  web-framework
Uniapp Cli
一套用于 WEB APP 开发 和 Mobile APP 开发的解决方案
Stars: ✭ 11 (-87.21%)
Mutual labels:  web-framework
Framework
IONDV. Framework is a high level framework for enterprise web applications development.
Stars: ✭ 54 (-37.21%)
Mutual labels:  web-framework
Jkmvc
Jkmvc is an elegant, powerful and lightweight MVC & ORM framework built using kotlin. It aims to be swift, secure, and small. It will turn java's heavy development into kotlin's simple pleasure. No spring.
Stars: ✭ 86 (+0%)
Mutual labels:  web-framework
Butterfly
🔥 蝴蝶--【简单】【稳定】【好用】的 Python web 框架🦋 除 Python 2.7,无其他依赖; 🦋 butterfly 是一个 RPC 风格 web 框架,同时也是微服务框架,自带消息队列通信机制实现分布式
Stars: ✭ 82 (-4.65%)
Mutual labels:  web-framework
Cakephp
CakePHP: The Rapid Development Framework for PHP - Official Repository
Stars: ✭ 8,453 (+9729.07%)
Mutual labels:  web-framework

prairie

A framework to grow your existing R code into web applications.

alt text alt text alt text

Below is a simple prairie application,

app(
  route(
    'get',
    '^$',
    function(req) {
      res <- response()
      
      status(res) <- 200                     # set status
      res[['Content-Type']] <- 'text/html'   # set a content type
      body(res) <- 'Welcome to prairie!'     # set a body
      
      res
    }
  ),
  # Make sure the list has values with names
  # method, path, and handler
  list(
    method = c('get', 'post'),
    path = '^data$',
    handler = function(req) {
      if (method(req) == 'GET') {
        as.response(mtcars)
      } else {
        print(body(req))  # log to console
        
        res <- response()
        body(res) <- 'Thanks for all the data!'
        
        res
      }
    }
  )
)

Work on prairie, when the project was still titled dull, began prior to the release of Shiny version 0.13.0. Prior to version 0.13.0, modularization in Shiny was cumbursome, probably ill-advised, or impossible. Rook, another framework for R, was out of date and, to my knowledge, not well-maintained, if at all. I set out to create an Express-like web framework and during the first couple months of development another package, jug, appeared. Jug takes an Express-like approach to web application contruction using R6 classes. I recommend looking at both Rook and jug. Rook had a significant impact on the development of the powerful httpuv package. Specifically the format of the request environment available to the call function in an httpuv application. If you like dectorators in Python and have any interest in APIs check out the plumber package. Jumping back to prairie, mid November of 2015 I decided to move away from Express, changed the project name, and began work on prairie. Prairie is a style of web application construction I believe to be very R-like. Prairie draws inspiration from sinatra and wookie and appears more functional in use. The request and response object construction is reminiscent of django and express (I didn't completely let go). The master version of prairie, going forward, will always be stable. Prairie is not on CRAN yet, so look into devtools::install_github if you aren't already familiar with the function and would like to try praire out.

As the tagline says, prairie is about growing existing code. Even though httpuv uses the same libuv C library used by Node, R is inherently single-threaded and prairie does not have the same aynschronous capabilities of Node or express. Thus, prairie focuses more on utility. Prairie focuses on coercing your existing R classes into the application, route, and response classes central to the framework. The goal is to avoid requiring rewrites of their code base. By creating your own as.route methods one can serve up methodologies, data, and anything else R across the web. I love working with R and I know personally how skeptical programmers are of R as anything more than a statiscal workhorse. With prairie I hope you, an R programmer and enthusiast, can push the boundaries of "acceptable" use cases for R.

Before I put away my soapbox I have a couple favors to ask,

  1. Help me make prairie better. Let me know what functionality could be added, what isn't programmer friendly, what documentation could be better, and in general your experience using prairie.

  2. Help me keep prairie working. A great man once proved any program can be reduced to a single bug, so I bet there is at least one bug in prairie. You can, and I would greatly appreciate, if you create an issue for any bugs you discover.

With that I offer you prairie and hope you will give the package the package a try. We R all capable of making R harder, better, faster, and stronger, so let's do it.

Nate

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].