Skip to content
forked from emancu/spirit

A microframework for web development on Elixir

Notifications You must be signed in to change notification settings

FormulaMonks/spirit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spirit

n. a microframework for web development.

Description

We are big fans of cuba for ruby so we wanted to contribute to elixir community with a similar microframework.

The intention of this project is to learn how elixir works and create a framework for our upcoming projects.

We know there are many frameworks like phoenix, clint, sugar and others which we will be watching to learn and contribute but we still want to build a new one. It will teach us a lot!

Installation

Add :spirit to deps

defp deps do
  [
    { :spirit, "~> 0.0.1" }
  ]
end

And run mix do deps.get, deps.compile

Usage

Here's a simple application:

# cat lib/sample_app.ex

defmodule SampleApp do
  use Spirit

  get "/hello" do
    send_resp(conn, 200, "<h1>Hello World!</h1>")
  end

  match _ do
    send_resp(conn, 404, "Not found :/")
  end
end

And the config file

# cat config/config.exs

use Mix.Config

config :spirit, app: SampleApp

To run it, just do mix server and start browsing your application.

Check spirit-example to see the full example and step-by-step guide.

Composition

You can compose as many Spirit applications as you want using forward. This is a recommended practice when you have nested routes or want to group routes based on a criterion.

defmodule Users do
  use Spirit

  get "/" do
    send_resp(conn, 200, "Users index")
  end

  get "/:id" do
    # Show the User with `id`
  end

  post "/" do
    # Create a new user
  end

  match _ do
    send_resp(conn, 404, "Not found")
  end
end

defmodule MainApp do
  use Spirit

  get "/hi/:name" do
    send_resp(conn, 200, "<h1>hello #{name}!</h1>")
  end

  forward "/users", to: Users

  get "/hello/*_rest" do
    send_resp(conn, 200, "matches all routes starting with /hello")
  end

  match _ do
    send_resp(conn, 404, "Not found")
  end
end

About

A microframework for web development on Elixir

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Elixir 100.0%