Introduction
QuickApp is a web application framework that is designed to aid developers create Angular web applications quickly. It comes with several common application features such as login, user management, role (permission based) management already implemented.
The focus of quickapp is all about speed of development. How to get a working, running application quickly whilst following best programming practices.
Backends
QuickApp comes with a default ASP.NET Core backend implementation. To implement other backends such as java, node, php, python, etc you will need to implement the APIs as defined in this Swagger API document: http://quickapp-pro.ebenmonney.com/swagger/v1/swagger.json.
Test the API from here: http://quickapp-pro.ebenmonney.com/swagger (Swagger UI)
// 20180122101848 // http://quickapp-pro.ebenmonney.com/swagger/v1/swagger.json { "swagger": "2.0", "info": { "version": "v1", "title": "QuickApp API" }, "basePath": "/", "paths": { "/api/Account/users/me": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountUsersMeGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/UserViewModel" } } } }, "put": { "tags": [ "Account" ], "operationId": "ApiAccountUsersMePut", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "user", "in": "body", "required": false, "schema": { "$ref": "#/definitions/UserEditViewModel" } } ], "responses": { "200": { "description": "Success" } } }, "patch": { "tags": [ "Account" ], "operationId": "ApiAccountUsersMePatch", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "patch", "in": "body", "required": false, "schema": { "type": "array", "items": { "$ref": "#/definitions/Operation" } } } ], "responses": { "200": { "description": "Success" } } } }, "/api/Account/users/{id}": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountUsersByIdGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/UserViewModel" } } } }, "put": { "tags": [ "Account" ], "operationId": "ApiAccountUsersByIdPut", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "user", "in": "body", "required": false, "schema": { "$ref": "#/definitions/UserEditViewModel" } } ], "responses": { "200": { "description": "Success" } } }, "delete": { "tags": [ "Account" ], "operationId": "ApiAccountUsersByIdDelete", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/UserViewModel" } } } }, "patch": { "tags": [ "Account" ], "operationId": "ApiAccountUsersByIdPatch", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "patch", "in": "body", "required": false, "schema": { "type": "array", "items": { "$ref": "#/definitions/Operation" } } } ], "responses": { "200": { "description": "Success" } } } }, "/api/Account/users/username/{userName}": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountUsersUsernameByUserNameGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "userName", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/UserViewModel" } } } } }, "/api/Account/users": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountUsersGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "responses": { "200": { "description": "Success", "schema": { "type": "array", "items": { "$ref": "#/definitions/UserViewModel" } } } } }, "post": { "tags": [ "Account" ], "operationId": "ApiAccountUsersPost", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "user", "in": "body", "required": false, "schema": { "$ref": "#/definitions/UserEditViewModel" } } ], "responses": { "200": { "description": "Success" } } } }, "/api/Account/users/{page}/{pageSize}": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountUsersByPageByPageSizeGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "page", "in": "path", "required": true, "type": "integer", "format": "int32" }, { "name": "pageSize", "in": "path", "required": true, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "Success", "schema": { "type": "array", "items": { "$ref": "#/definitions/UserViewModel" } } } } } }, "/api/Account/users/unblock/{id}": { "put": { "tags": [ "Account" ], "operationId": "ApiAccountUsersUnblockByIdPut", "consumes": [], "produces": [], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "Success" } } } }, "/api/Account/users/me/preferences": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountUsersMePreferencesGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "responses": { "200": { "description": "Success", "schema": { "type": "string" } } } }, "put": { "tags": [ "Account" ], "operationId": "ApiAccountUsersMePreferencesPut", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "data", "in": "body", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success" } } } }, "/api/Account/roles/{id}": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountRolesByIdGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/RoleViewModel" } } } }, "put": { "tags": [ "Account" ], "operationId": "ApiAccountRolesByIdPut", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" }, { "name": "role", "in": "body", "required": false, "schema": { "$ref": "#/definitions/RoleViewModel" } } ], "responses": { "200": { "description": "Success" } } }, "delete": { "tags": [ "Account" ], "operationId": "ApiAccountRolesByIdDelete", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/RoleViewModel" } } } } }, "/api/Account/roles/name/{name}": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountRolesNameByNameGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "name", "in": "path", "required": true, "type": "string" } ], "responses": { "200": { "description": "Success", "schema": { "$ref": "#/definitions/RoleViewModel" } } } } }, "/api/Account/roles": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountRolesGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "responses": { "200": { "description": "Success", "schema": { "type": "array", "items": { "$ref": "#/definitions/RoleViewModel" } } } } }, "post": { "tags": [ "Account" ], "operationId": "ApiAccountRolesPost", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "role", "in": "body", "required": false, "schema": { "$ref": "#/definitions/RoleViewModel" } } ], "responses": { "200": { "description": "Success" } } } }, "/api/Account/roles/{page}/{pageSize}": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountRolesByPageByPageSizeGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "page", "in": "path", "required": true, "type": "integer", "format": "int32" }, { "name": "pageSize", "in": "path", "required": true, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "Success", "schema": { "type": "array", "items": { "$ref": "#/definitions/RoleViewModel" } } } } } }, "/api/Account/permissions": { "get": { "tags": [ "Account" ], "operationId": "ApiAccountPermissionsGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "responses": { "200": { "description": "Success", "schema": { "type": "array", "items": { "$ref": "#/definitions/PermissionViewModel" } } } } } }, "/api/Customer": { "get": { "tags": [ "Customer" ], "operationId": "ApiCustomerGet", "consumes": [], "produces": [], "responses": { "200": { "description": "Success" } } }, "post": { "tags": [ "Customer" ], "operationId": "ApiCustomerPost", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "value", "in": "body", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success" } } } }, "/api/Customer/throw": { "get": { "tags": [ "Customer" ], "operationId": "ApiCustomerThrowGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "responses": { "200": { "description": "Success", "schema": { "type": "array", "items": { "$ref": "#/definitions/CustomerViewModel" } } } } } }, "/api/Customer/email": { "get": { "tags": [ "Customer" ], "operationId": "ApiCustomerEmailGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "responses": { "200": { "description": "Success", "schema": { "type": "string" } } } } }, "/api/Customer/{id}": { "get": { "tags": [ "Customer" ], "operationId": "ApiCustomerByIdGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "Success", "schema": { "type": "string" } } } }, "put": { "tags": [ "Customer" ], "operationId": "ApiCustomerByIdPut", "consumes": [ "application/json-patch+json", "application/json", "text/json", "application/*+json" ], "produces": [], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32" }, { "name": "value", "in": "body", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success" } } }, "delete": { "tags": [ "Customer" ], "operationId": "ApiCustomerByIdDelete", "consumes": [], "produces": [], "parameters": [ { "name": "id", "in": "path", "required": true, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "Success" } } } }, "/api/Home": { "get": { "tags": [ "Home" ], "operationId": "ApiHomeGet", "consumes": [], "produces": [ "text/plain", "application/json", "text/json" ], "responses": { "200": { "description": "Success", "schema": { "type": "array", "items": { "type": "string" } } } } } } }, "definitions": { "UserViewModel": { "required": [ "userName", "email" ], "type": "object", "properties": { "id": { "type": "string" }, "userName": { "maxLength": 200, "minLength": 2, "type": "string" }, "fullName": { "type": "string" }, "email": { "maxLength": 200, "minLength": 0, "type": "string" }, "jobTitle": { "type": "string" }, "phoneNumber": { "type": "string" }, "configuration": { "type": "string" }, "isEnabled": { "type": "boolean" }, "isLockedOut": { "type": "boolean" }, "roles": { "type": "array", "items": { "type": "string" } } } }, "UserEditViewModel": { "required": [ "userName", "email" ], "type": "object", "properties": { "currentPassword": { "type": "string" }, "newPassword": { "minLength": 6, "type": "string" }, "isLockedOut": { "type": "boolean" }, "id": { "type": "string" }, "userName": { "maxLength": 200, "minLength": 2, "type": "string" }, "fullName": { "type": "string" }, "email": { "maxLength": 200, "minLength": 0, "type": "string" }, "jobTitle": { "type": "string" }, "phoneNumber": { "type": "string" }, "configuration": { "type": "string" }, "isEnabled": { "type": "boolean" }, "roles": { "type": "array", "items": { "type": "string" } } } }, "Operation": { "type": "object", "properties": { "value": { "type": "object" }, "path": { "type": "string" }, "op": { "type": "string" }, "from": { "type": "string" } } }, "RoleViewModel": { "required": [ "name" ], "type": "object", "properties": { "id": { "type": "string" }, "name": { "maxLength": 200, "minLength": 2, "type": "string" }, "description": { "type": "string" }, "usersCount": { "format": "int32", "type": "integer" }, "permissions": { "type": "array", "items": { "$ref": "#/definitions/PermissionViewModel" } } } }, "PermissionViewModel": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "groupName": { "type": "string" }, "description": { "type": "string" } } }, "CustomerViewModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer" }, "name": { "type": "string" }, "email": { "type": "string" }, "phoneNumber": { "type": "string" }, "address": { "type": "string" }, "city": { "type": "string" }, "gender": { "type": "string" }, "orders": { "type": "array", "items": { "$ref": "#/definitions/OrderViewModel" } } } }, "OrderViewModel": { "type": "object", "properties": { "id": { "format": "int32", "type": "integer" }, "discount": { "format": "double", "type": "number" }, "comments": { "type": "string" } } } }, "securityDefinitions": { "BearerAuth": { "name": "Authorization", "in": "header", "type": "apiKey", "description": "Login with your bearer authentication token. e.g. Bearer <auth-token>" } } }
2 Comments
Azzam
October 7, 2018 at 9:01 pmCan you eliminate elaborate a little more on how to use different backend? Thanks
bnrashed
July 24, 2019 at 2:18 pmHI Eden
can i use this temp with MySQL in replace of SQL server with Entity framework core