All Projects → oxidizing → Sihl

oxidizing / Sihl

Licence: mit
A modular functional web framework

Programming Languages

ocaml
1615 projects

Projects that are alternatives of or similar to Sihl

Siris
DEPRECATED: The community driven fork of Iris. The fastest web framework for Golang!
Stars: ✭ 146 (-45.32%)
Mutual labels:  framework, web-framework
Mag.js
MagJS - Modular Application Glue
Stars: ✭ 157 (-41.2%)
Mutual labels:  framework, modular
Chicagoboss
Erlang web MVC, now featuring Comet
Stars: ✭ 1,825 (+583.52%)
Mutual labels:  framework, web-framework
Http
An opinionated framework for scalable web 🌎
Stars: ✭ 136 (-49.06%)
Mutual labels:  framework, modular
Rocket
A web framework for Rust.
Stars: ✭ 15,760 (+5802.62%)
Mutual labels:  framework, web-framework
Trails
🌲 Modern Web Application Framework for Node.js.
Stars: ✭ 1,688 (+532.21%)
Mutual labels:  framework, web-framework
Playframework
Play Framework
Stars: ✭ 12,041 (+4409.74%)
Mutual labels:  framework, web-framework
Tinypart
TinyPart is an iOS modularization framework implemented by Ojective-C. It also supports URL-routing and inter-module communication. TinyPart是一个由Objective-C编写的面向协议的iOS模块化框架,同时它还支持URL路由和模块间通信机制。
Stars: ✭ 120 (-55.06%)
Mutual labels:  framework, modular
Ego
Ego is a full-stack web framework written in Go, lightweight and efficient front-end component solutions, based on gin. The front-end is compiled, does not affect the back-end.
Stars: ✭ 185 (-30.71%)
Mutual labels:  framework, web-framework
Oxide
Old repository for the Oxide mod. See individual repositories for updates
Stars: ✭ 173 (-35.21%)
Mutual labels:  framework, modular
Cyclejs.cn
The Cycle.js Chinese documentation website.
Stars: ✭ 132 (-50.56%)
Mutual labels:  framework, functional-programming
Flamingo
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.
Stars: ✭ 198 (-25.84%)
Mutual labels:  framework, web-framework
Uadmin
The web framework for Golang
Stars: ✭ 127 (-52.43%)
Mutual labels:  framework, web-framework
Marble
Marble.js - functional reactive Node.js framework for building server-side applications, based on TypeScript and RxJS.
Stars: ✭ 1,947 (+629.21%)
Mutual labels:  framework, functional-programming
Denovel
A Deno Framework For Web Artisan - Inspired by Laravel
Stars: ✭ 128 (-52.06%)
Mutual labels:  framework, web-framework
Flamingo Commerce
Flexible E-Commerce Framework on top of Flamingo. Used to build E-Commerce "Portals" and connect it with the help of individual Adapters to other services.
Stars: ✭ 151 (-43.45%)
Mutual labels:  framework, web-framework
Core
🚀 The Node.js Framework highly focused on developer ergonomics, stability and confidence
Stars: ✭ 11,697 (+4280.9%)
Mutual labels:  framework, web-framework
Cyclejs
A functional and reactive JavaScript framework for predictable code
Stars: ✭ 9,996 (+3643.82%)
Mutual labels:  framework, functional-programming
Ignition Go
Bootstrap4 /Codeigniter 3 Modular (HMVC) App Building Framework - to build enterprise class web applications... Versions: CodeIgniter 3.1.9 AdminLTE 3.4 Bootstrap 4.5.0
Stars: ✭ 166 (-37.83%)
Mutual labels:  framework, modular
Amber
A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance.
Stars: ✭ 2,345 (+778.28%)
Mutual labels:  framework, web-framework

Logo

A modular and functional web framework
Explore the docs »

Getting Started · Demo project · Report Bug · Request Feature

Table of Contents

About

Note that even though Sihl is being used in production, the API is still under active development.

Sihl is a batteries-included web framework built on top of Opium, caqti, logs and many more. Thanks to the modular architecture, included batteries can be swapped easily. Statically typed functional programming with OCaml makes web development fun and safe.

Getting Started

The easiest way to get started is by using Spin. If you want to jump into code, have a look at the demo project.

Prerequisites

  • Basic understanding of OCaml
  • Installation of opam

To initialize opam:

opam init

To install Spin, following the instructions here. You can install it using opam:

opam install spin

Create a project

Generate a start project:

spin new https://github.com/oxidizing/spin-sihl.git app

Spin template for project generation.

Visit http://localhost:3000/, you should see a welcome text.

Check out the demo project.

Background

Design Goals

These are the main design goals of Sihl.

Fun

The overarching goal is to make web development fun. Fun is hard to quantify, so let's just say fun is maximized when frustration is minimized. This is what the other design goals are here for.

Swappable batteries included

Sihl should provide high-level features that are common in web applications out-of-the-box. It should provide sane and ergonomic defaults for 80% of the use cases with powerful but not necessarily ergonomic customization options for the other 20%.

Ergonomic but safe

OCaml itself ensures a certain level of correctness at compile-time. In order to optimized developer experience, some things are not verified at compile-time but at start-time. Sihl makes sure that your app does not start without the needed configurations and the required environment.

Features

These are some of things that Sihl can take care of for you.

  • Database handling (pooling, transactions, migrations)
  • Configuration (from env variables to configuration services)
  • Logging
  • User management
  • Token management
  • Session management
  • HTTP routes & middlewares
  • Flash Messages
  • Authentication
  • Authorization
  • Emailing
  • CLI Commands
  • Job Queue
  • Schedules
  • Block Storage

Do we need another web framework?

Yes, because all other frameworks have not been invented here!

On a more serious note, originally we wanted to collect a set of services, libraries, best practices and architecture to quickly and sustainably spin-off our own tools and products. An evaluation of languages and tools lead us to build the 5th iteration of what became Sihl with OCaml. We believe OCaml is a phenomenal place to build web apps.

Thanks to OCaml Sihl is ...

  • ... runs fast
  • ... compiles fast
  • ... is pragmatic and safe
  • ... is fun to use

Documentation

The API documentation for the latest version can be found here: https://oxidizing.github.io/sihl

Roadmap

Our main goal is to stabilize the service APIs, so updating Sihl in the future becomes easier. We would like to attract contributions for service contributions, once the framework reaches some level of maturity.

Contributing

Check out the Contributing guidelines.

License

Copyright (c) 2020 Oxidizing Systems

Distributed under the MIT License. See LICENSE for more information.

Contact

Oxidizing Systems - @oxidizingsys - [email protected]

Project Link: https://github.com/oxidizing/sihl

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].