Giter Site home page Giter Site logo

polterguy / magic Goto Github PK

View Code? Open in Web Editor NEW
953.0 31.0 131.0 63.66 MB

An AI-based Low-Code and No-Code software development automation framework

Home Page: https://ainiro.io

License: GNU General Public License v3.0

C# 0.26% JavaScript 5.09% TypeScript 43.05% HTML 22.54% SCSS 3.65% Dockerfile 0.07% CSS 25.34%
ai openai machine-learning automation-framework low-code no-code

magic's Introduction

Magic Cloud - Low-Code, No-Code, and AI-based Software Development

Magic Cloud is a software development automation framework created and maintained by AINIRO.IO that creates backend APIs "automagically". Magic was created to allow developers to automatically CRUD API backends, in addition to using workflows to create and orchestrate backend code in a "drag'n'drop" interface. Magic almost contains everything needed for you to setup and administrate your own cloud-based backend software development platform.


Dashboard


Endpoints Generator

The Endpoints Generator allows you to choose a database and click a button, resulting in having every table in your database securely wrapped into CRUD API endpoints 100% automatically. You can also create endpoints using only SQL with Magic.


Generate a CRUD API in seconds


SQL Studio

With SQL Studio you can write and execute SQL from anywhere, using any device you might have available. SQL Studio also allows you to save and load frequently used SQL snippets, simplifying your job significantly.


SQL Studio


Hyper IDE

With Hyper IDE you can edit your code from your browser. However, its primary feature of course is that it automatically generates 80% of your code without much effort required from you.


Hyper IDE, a Web based IDE


Additional features

Magic comes with a whole range of additional tools simplifying your software development creation and management life cycle.

Hyperlambda

Magic is based upon a unique programming language DSL engine, similar to YAML in syntax, that creates your code almost automatically. Hyperlambda lends itself to workflows, software development automation orchestration, and code generation due to its dynamic nature.

Website

Magic is professionally hosted by AINIRO.IO, and you can find its documentation below.

magic's People

Contributors

arianygard avatar dependabot[bot] avatar gaprogman avatar hflexgrig avatar mshafiey avatar orthimnas avatar polterguy avatar siegeon avatar sweetsh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magic's Issues

SQL AutoComplete for SQL CodeMirror editor

To allow for more easily see tables and columns as we create custom SQL. Implement both on "SQL" menu item in front end, and "Custom SQL" CRUDifier, at the bare minimum,

Relationships among model classes

In real projects, of all but simplest complexity, model classes often relate to each other via one-to-one, one-to-many, or many-to many navigational properties.

Perhaps it would be a good idea to add a master-detail example to the project. Or at least some guidance, on where the best extensibility points are to implement models with navigational properties.

Thank you.

page

hi guys,
How can I define a pageable interface like "/api/controller?page=1&size=50"

Create "what's next" ordered lists on home component

Which informs the user to crudify his magic database, and/or generate a server key pair - Which checks the backend to see if the user has already done this, at which point the list items are hidden on a per item level.

Create frontend endpoint to write to server-side logs

Which also creates a service method in the scaffolded Angular code, allowing you to invoke it from the frontend. Also make sure we're logging IP address of caller, in addition to username, if it's an authenticated user invoking the log endpoint.

Security Exception in initial root/root login

I see the exception below in the console, the Setup page detail won't save either

info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0] User profile is available. Using 'C:\Users\jslootweg\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest. Hosting environment: Development Content root path: C:\Work\magic\magic.backend Now listening on: http://localhost:63247 Application started. Press Ctrl+C to shut down. info: Microsoft.AspNetCore.Hosting.Diagnostics[1] Request starting HTTP/1.1 GET http://localhost:63247/ warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3] Failed to determine the https port for redirect. info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0] Executing endpoint 'magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller)' info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3] Route matched with {action = "Get", controller = "Endpoint"}. Executing controller action with signature System.Threading.Tasks.Task1[Microsoft.AspNetCore.Mvc.ActionResult] Get(System.String) on controller magic.endpoint.controller.EndpointController (magic.endpoint.controller).
info: Microsoft.AspNetCore.Mvc.StatusCodeResult[1]
Executing HttpStatusCodeResult, setting HTTP status code 404
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
Executed action magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller) in 55.1595ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 209.46720000000002ms 404 text/html
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 GET http://localhost:63247/magic/modules/system/ping
info: Microsoft.AspNetCore.Cors.Infrastructure.CorsService[4]
CORS policy execution successful.
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
Route matched with {action = "Get", controller = "Endpoint"}. Executing controller action with signature System.Threading.Tasks.Task1[Microsoft.AspNetCore.Mvc.ActionResult] Get(System.String) on controller magic.endpoint.controller.EndpointController (magic.endpoint.controller). info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1] Executing ObjectResult, writing value of type 'Newtonsoft.Json.Linq.JObject'. info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] Executed action magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller) in 82.8117ms info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1] Executed endpoint 'magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller)' info: Microsoft.AspNetCore.Hosting.Diagnostics[2] Request finished in 96.7008ms 200 application/json; charset=utf-8 info: Microsoft.AspNetCore.Hosting.Diagnostics[1] Request starting HTTP/1.1 GET http://localhost:63247/magic/modules/system/auth/authenticate?username=root&password=root info: Microsoft.AspNetCore.Cors.Infrastructure.CorsService[4] CORS policy execution successful. info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0] Executing endpoint 'magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller)' info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3] Route matched with {action = "Get", controller = "Endpoint"}. Executing controller action with signature System.Threading.Tasks.Task1[Microsoft.AspNetCore.Mvc.ActionResult] Get(System.String) on controller magic.endpoint.controller.EndpointController (magic.endpoint.controller).
info: Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor[1]
Executing ObjectResult, writing value of type 'Newtonsoft.Json.Linq.JObject'.
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2]
Executed action magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller) in 78.664ms
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
Executed endpoint 'magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller)'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
Request finished in 94.4521ms 200 application/json; charset=utf-8
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
Request starting HTTP/1.1 GET http://localhost:63247/magic/modules/system/setup/load-config-file
info: Microsoft.AspNetCore.Cors.Infrastructure.CorsService[4]
CORS policy execution successful.
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
Executing endpoint 'magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller)'
info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[3]
Route matched with {action = "Get", controller = "Endpoint"}. Executing controller action with signature System.Threading.Tasks.Task1[Microsoft.AspNetCore.Mvc.ActionResult] Get(System.String) on controller magic.endpoint.controller.EndpointController (magic.endpoint.controller). info: Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker[2] Executed action magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller) in 10.4389ms info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1] Executed endpoint 'magic.endpoint.controller.EndpointController.Get (magic.endpoint.controller)' fail: Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware[1] An unhandled exception has occurred while executing the request. System.Security.SecurityException: Access denied at magic.lambda.auth.helpers.TicketFactory.VerifyTicket(ITicketProvider ticketProvider, String roles) at magic.lambda.auth.VerifyTicket.Signal(ISignaler signaler, Node input) at magic.signals.services.Signaler.Signal(String name, Node input) at magic.lambda.Eval.ExecuteAsync(ISignaler signaler, IEnumerable1 nodes)
at magic.lambda.Eval.SignalAsync(ISignaler signaler, Node input)
at magic.signals.services.Signaler.SignalAsync(String name, Node input)
at magic.endpoint.services.ExecutorAsync.<>c__DisplayClass8_0.<b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at magic.signals.services.Signaler.ScopeAsync(String name, Object value, Func1 functor) at magic.endpoint.services.ExecutorAsync.<>c__DisplayClass8_0.<<ExecuteUrl>b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at magic.signals.services.Signaler.ScopeAsync(String name, Object value, Func1 functor)
at magic.endpoint.services.ExecutorAsync.ExecuteUrl(String url, String verb, IEnumerable1 args, JContainer payload) at magic.endpoint.services.ExecutorAsync.ExecuteGetAsync(String url, DateTime ifModifiedSince, IEnumerable1 args)
at magic.endpoint.controller.EndpointController.Get(String url)
at lambda_method(Closure , Object )
at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync() --- End of stack trace from previous location where exception was thrown --- at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task) info: Microsoft.AspNetCore.Hosting.Diagnostics[2] Request finished in 102.3743ms 500 application/json

Implement statistical charts on Logs menu item

And hook into semantic log parsing such as "We successfully authenticated", etc - To count and group items according to types, in all different forms, to provide more high level data of what the log actually contains.

Getting types from assemblies

In a few places throughout the code, while configuring services, there are calls like the following:

AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(s => s.GetTypes())

If I understand the intention correctly, you do not want types from all of the domain assemblies, perhaps limiting the call to your assemblies only is needed. Maybe something like this, instead:

AppDomain.CurrentDomain.GetAssemblies()
                .Where(a => a.FullName.Contains("magic."))
                .SelectMany(s => s.GetTypes())

HTH

Better handling of read-only CodeMirror editors

Preferably different theme for read only CodeMirror instances, to separate them from other editors. Such as for instance in the "Endpoints" menu item, the result of invocations, etc ...

FYI, new release coming soon

I've had a lot of downloads, clones, etc the last couple of days due to my DZone article. I just wanted everybody to know that I am working on a release, which will be of more "stable character", and that I'll probably be done with this during the upcoming weekend.

Among some of its features, will be the "signals and slots" parts, refactored and significantly cleaned up code, in addition to a more generic and better "magic.test" module as an integral part, having unit tests for all submodules (auth, email, io and cookie).

If you're not 100% happy with its current code base, please just wait a couple of days, and hopefully I'll be able to make you happy :)

Associate a public key with a bunch of roles

To allow for having the private key becoming more similar in nature to the existing authentication/authorisation - Possibly adding new column in roles table, containing slots allowed to invoke for caller, and appending these into [vocabulary] as we invoke a [whitelist] invocation cryptographically signed by some client.

Merge the CRUDify files for MySQL and MS SQL into one

The type of database should be a parameter, since there is way too much code repetition in the logic as it is now.

Also merge the slots for MySQL and MS SQL into one, taking the database type as a parameter, if possible ... (which might be difficult, but thinking about it ...)

More features in Logs dashboard menu item

Such as a "filter by type" dropdown, etc. This can be achieved today by filtering on e.g. "info", but it's not entirely intuitive. Also implement the ability to delete single log entries, etc.

Implement ability to load Hyperlambda files "cached"

Through additional slot, that loads the file only the initial loading, for then to cache it upon consecutive requests of the same file. Use some sort of Dictionary<string, Node>, with thread synchronisation, to implement it ...

More filtering features in Crypto

Not using dropdown to filter on client in requests among other things, since this requires loading every single public key in the system, which in theory might be a lot of keys.

Namespacing the CRUDifier's result

Such that you can override its "root folder", which by default would be the database name, but could be overridden to allow for making it a custom choice.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.