mustafa

Simple and Fast MVC Framework mvc-framework mvc mustafa library framework
1.0.1 Latest release released

MustafaVC

Mustafa is MVC Framework for Crystal

Getting Started :sunglasses:

Download Visual Studio Code and add Crystal extension for faster coding with snippets.

Add your shard.yml and install lib. Yes it's ready! Build your MVC project.

For more information, you can see Mustafa Wiki

Installation :star:

Add this to your application's shards.yml

dependencies:
  mustafa:
    github: guvencenanguvenal/mustafa
    branch: master

Route :rocket:

http://localhost/welcome

call controller which name is Welcome

http://localhost/welcome/hello

call controller which name is Welcome and run action(method) which name is "hello"

http://localhost/welcome/hello/param1/param2

call controller which name is Welcome and run action(method) which name is "hello" and..

Input.params[0] => "param1"
Input.params[1] => "param2"

Note: params is not get or post

Configuration :mag_right:

Configuration file is config.cr on src/mustafa/config/config.cr

DEFAULT_CONTROLLER = "your default controller" #this controller is default which response http://localhost/ 
MODULE_NAME = "your module name"
VIEW_PATH = "src/your module name/view" # ./src/mustafa/view/ecr_file.ecr

and choose your localhost

LOCALHOST_ADDRESS = "0.0.0.0"

Super Simple :checkered_flag:

Model

Model name must be capitalized case (first letter is upper, other letters is lower)

Welcomemodel.cr

class Welcomemodel < Core::Model
  init Welcomemodel, Core::Model::Scope::Singleton

  def hello
    puts "hello"
  end
end

Controller

Controller name must be capitalized case (first letter is upper, other letters is lower)

Welcomecontroller.cr

class Welcomecontroller < Core::Controller
  init Welcomecontroller

  action "index" do
  
    Core.loader.library([Customlib, Library::Crypto]) do |val|
      val[Customlib].as(Customlib).hello
    end
  
    Core.loader.model(Welcomemodel) do |model|
      model.deneme
    end
  
    Core.loader.view(self, Welcomeview)
  end
end

View

View has a class and an ECR File

Welcomeview.cr

class Welcomeview < Core::View
  init "Welcome.ecr"
  
  def load
    if (view_params["key"] == "value")
      puts "hello"                      #put hello on terminal
    end
  end
end

Welcome.ecr

Selam, <%= @view_params["key"] %>!      # value

Run, go go go

Yourproject.cr

require "mustafa"
#And require your controller, view and model files

module Yourproject
  Mustafa.run
end

#Contribute

Please fork project MustafaVC

#Thanks

Thanks porras/session for session and encoder class.

Thanks logomakr.com for logo.

mustafa:
  github: guvencenanguvenal/mustafa
  version: ~> 1.0.1
License MIT
Crystal 0.19.4

Authors

Dependencies 3

  • mysql
    {'github' => 'crystal-lang/crystal-mysql'}
  • smtp
    {'github' => 'raydf/smtp.cr'}
  • sqlite3
    {'github' => 'crystal-lang/crystal-sqlite3'}

Development Dependencies 0

Dependents 0

Last synced .
search fire star recently