Multi-tier programming for Web and mobile apps

Android, iOS, Server & client in one piece of code

Powerful type-checking with OCaml/Reason

Get started now!

News

html_of_wiki

We are happy to release the first public version of html_of_wiki.

html_of_wiki is a versatile, minimalist yet powerful static website generator. It is designed with simplicity in mind: no special directories, almost no configuration and everything working out of the box. No web server required, just the compilation of your content to HTML and you're free to choose which static files server service fits you: GitHub Pages, GitLab Pages, etc.

html_of_wiki is used to generate this Web site.

More info about html_of_wiki.

Send us your feedback and bug reports about the Web site on Github.

Graffiti tutorial updated!

Graffiti tutorial explains step by step how to write a multi-user client-server drawing application with Eliom.

It is the best starting point for beginners!

An updated version of this tutorial is now online, thanks to corentinjuvigny and chrismamo1.

Eliom

Multi-tier language for multi-platform apps

Eliom extends OCaml/Reason into a multi-tier language making it possible to write your whole application (client and server parts) as a single program!

It can run as a Web app, or as a mobile app (based on Web technologies).

Multi-tier

Js_of_ocaml

Optimizing compiler for OCaml/Reason to Javascript

Js_of_ocaml translates your OCaml or Reason programs to Javascript. You can choose between readable or optimized JavaScript.

Js_of_ocaml operates from compiled OCaml bytecode programs. You don't even need the source code, and you don't need to recompile all the OCaml libraries you use.

Easy interfacing with Javascript libraries.

let fib num =
  let rec aux num prec2 prec =
    if num = 0
    then prec
    else
      aux (num - 1) prec (prec + prec2)
  in aux num 1 1
function fib(num)
 {var num$0=num,prec2=1,prec=1;
  for(;;)
   {if(0 === num$0)return prec;
    var
     prec$0=prec + prec2 | 0,
     num$1=num$0 - 1 | 0,
     num$0=num$1,
     prec2=prec,
     prec=prec$0;
     continue}}
function(d){var b=d,c=1,a=1;for(;;){if(0===b)return a;var b=b-1|0,e=a+c|0,c=a,a=e;continue}};

Main projects

Js_of_ocaml

Optimizing compiler from OCaml/Reason to Javascript.

Eliom

Multi-tier language and framework for multi-platform apps.

Server

Full-featured and extensible Web Server.

Lwt

Cooperative threading library.

Tyxml

Static type-checking for HTML and SVG.

Ocsigen Toolkit

Native OCaml widgets for browsers (client side only or client-server).

Start

A full-featured app to use as code example for your own projects.

Users

Here is a short list of users:

Tell us if you want (or do not want) to appear in this list.