create-selph-app

1.22.13 • Public • Published

Create-Selph-App

Having a hard Time becoming a MERN Stack developer? with Selph you only need to configure one file!

Selph logo

Installation

Create-selph-app is now available on npx! just run the command below in a directory in your computer.

npx create-selph-app myapp

or if you want to use it as a npm global package:

npm i create-selph-app -g

  /* cd to directory */
  
create-selph-app myapp  

*please note that you should have mongodb installed on your system for Selph to use it as a database. if you don't please install it first from https://www.mongodb.com/docs/manual/installation/

What does Selph do?

as you may know most of the projects needs a full-stack developer or two developers for each stack! but with Selph you just type what you want from the backend in the selph.config.json and it generates it for you! and it also gives you the code to you to explore in it!

Commands

Note: you sould only work with these commands

go to the app directory and use these commands:

npm start /* Starts both your backend and frontend */

npm run dev /* starts dev version of both your backend and frontend */

npm run start-frontend /* Starts your frontend */

npm run start-backend /* Starts your backend */

npm run create-admin /* Creates super user for future permissions */

Usage

So as it was said before you only need to say what you want. So you need to declare your wanted modules and its data model. if you open selph.config.json you'll see something like this:

{
    "name": "myapp",
    "apiPort": 5000,
    "https": false,
    "modules": [
	    {
		    "name": "test",
		    "model": {
			    "title": "String",
			    "link": {"type": "String"},
			    "stepNumber": {"type": "Number", "default": 0}
		    }
	    }
    ],
    "baseModel": {
    "isActive": { "type": "Boolean", "default": true},
    "created_date": {"type": "Date", "default": "new Date()"}
    }		   
    
}

so actually what needs to be declared is your modules. so write a new object with a name and a model. you have two ways to declare the type of your model property: first way:

{
...
"property": "data type",
...
}

or:

{
...
"property": {"type": "data type"},
...
}

And when started by said commands, it will migrate itself and generates your wanted backend featuring the needed routes and methods (get list, get detail by id, post, put & delete):

Selph logo

Different data types

Data Type default type
String String
Number any number value: 0, 1.23, etc.
Date "new Date(your date)"
File no defaults

for now there are only these data types but we will update soon

How to declare a foreign key

you only need to set your property data type as the other module name. For example:

{
...
"modules": [
	    {
		    "name": "blogPosts",
		    "model": {...}
	    },
	    {
		   "name": "blogPostsComments".
		   {
		   ...,
		   "relatedBlogPost": { "type": "blogPost"},
		   ...
	    }
    ]
...
}

Custom DB configuration

there is an optional selph config property in your selph.config.json:

{
...,
    "db": {
	    "name": "<YOUR_OPTIONAL_NAME> (default is: <your_appname>_db)",
	    "port": "<YOUR_OPTIONAL_PORT> (default is: 27017)",
	    "user": "<YOUR_DB_USERNAME> (default is your app name)",
	    "password": "<YOUR_DB_PASSWORD> (default is: 1234)",
    }
....
}

*please note each property is optional.

Permissions

you can set permissions to different methods of your module.

the "permissions" property and all of its attributes are optional.

just set an array that contains types of permissions for each method like this:

{
	...,
	{
		"name": "test",
		"model": {...},
		"permissions": {
			"post": ["user"],
			"getList": [], /* if you do not want to set any permission for a method set array to empty or don't type it */
			"getDetail": ["user", "self"],
			"put": ["self"],
			"delete": ["self"]
		}
	}
	...,
}

Different types of permission and its meaning:

name meaning description
admin a user created by npm run create-admin no need to type this one, admin has all the permissions by default
user you need to be logged in to use the method -
self only the creator of the object has the permission to the method see the note below

NOTE: "self" permission is only for getDetail, put and delete and to make it work you must save the creator of any object for that you dont need to change your data model you just set saveCreatorUsers to true in your selph.config.json like this:

{
	...,
	"https": false,
	"apiPort": <SOME_PORT>,
	"saveCreatorUsers": true,
	...,
}

Back-End Documentation

there is a Swagger documentation for you to test your generated back-end on:

localhost:<apiPort>/swagger/

Contact

If you want to contribute on Selph, or if you have any question you can always contact me through this email address: pkpedram80@gmail.com

have a great day!

Package Sidebar

Install

npm i create-selph-app

Weekly Downloads

1

Version

1.22.13

License

MIT

Unpacked Size

92.9 kB

Total Files

52

Last publish

Collaborators

  • selph-js