mustafa

Simple and Fast MVC Framework mvc-framework mvc mustafa library framework
0.1.0 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..

Library.input.params 0 => "param1"
Library.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
	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.entity_model("tablename", Welcomemodel) do |model|
  		model.hello 							#puts hello on terminal
  	
  		ret_val = model.select_all("id = 3")   	#select * from tablename where id = 3
  	
  		puts ret_val[0]["id"] 					# 1. row and id column
  	end
  
    Core.loader.view(self, Welcomeview) do |view|
    	view.add_param("key", "value")
    end
  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: ~> 0.1.0
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