Hydra
Hydra is an app generator designed to put app development in the hands of everyone.
Description
Hydra is a app generation tool with resulting source code. Generated front-end support for Ionic/Angular. Restful service layer support for .NET Core. Back-end support for SQL Server. Other supported technologies coming soon as Hydra is highly extensible. Also includes support for mobile capability, Docker, Helm, Azure Devops, and Kubernetes. It serves as app generator for those who want to own and control the source locally.
Current Features
- Generates a Visual Studio boiler plate solution:
hydra generate workspace
- Generates a Business Model and Entity Domain Model, respectively:
hydra generate businessmodel hydra generate entities
- Generates front-end framework (i.e. Ionic) and resulting application:
hydra generate start hydra generate app
How it Works
Most everything in life is naturally hierarchical, your family, your work organization, data relationships, user interfaces, security models, etc. Hydra starts with what is called a "business model". Business models are broken into the following levels: stakeholders, organizational units, roles (people and systems), responsibilities (or features - for systems), tasks, and data items. Once you get to the data item level, then you can define the detail that results in properties of entity models, columns in database tables, and elements on a screen.
Most rapid application development generators are designed for end users that have no concept of development best practices. Hydra is different in that it is designed with the developer in mind. It results in source code utilizing preferred coding styles, readability, design patterns, and code quality. It doesn't end there. Hydra is highly extensible, allowing for generator participation, interface driven extensions, and even full control UI, business logic, and servicing. It aims to remove the 80% of application development that is repetitive, dull, and drone. It does this while at the same time, allowing for creativity and full autonomy.
Help
-
Hydra App Generator
- Installation
-
Usage
- Hydra Command Line Interface
- Generating a Workspace
- Generating a Business Model
- Business Model Input Files
- Generating an Entity Domain Model
- Entity Domain Model Input Files
- Entity Domain Model Attributes and Properties
- Generating an App
- Look at the generated Entities Project
- Writing custom UI's with Razor syntax
- Extensibility
- Visual Studio Integration
- Contribution
System Requirements
- Windows 10 or higher
- NodeJs (for npm)
- Windows Build Tools (dotnet, MSBuild, etc) for development
- Hydra App Generator Windows Cli (downloadable through the npm Hydra installation package)
- Preferred though not required: Visual Studio or VS Code
Razor Syntax
@using Ripley.Entities
@using AbstraX
@model EntityModel<Post>
@{
Layout = "_Repeater.cshtml";
ViewBag.VirtualScroll = true;
ViewData["Title"] = "Posts";
var media = Model.CreateScriptObject<PostMedia>();
var user = Model.GetLoggedInUser<User>();
}
@section ItemTemplate
{
<div>
@* relies on the facet handler on the entity or entity property *@
<@Model.Entity.Predicate />
@* creates a binding to an element in the view to code *@
<ion-input formControlName="@Model.Entity.TimeStamp" type="text"></ion-input>
@* create an element with script *@
<input type="file" id="files" name="files[]" multiple onchange="handleFileSelect($event)" />
@Html.Partial("PostFeedback", Model.Entity.PostFeedbacks, new ViewDataDictionary(this.ViewData) { { "counter", 1 } });
</div>
}
@section CustomScripts
{
<script>
handleFileSelect(evt : Event) {
let files = evt.target.files; // FileList object
// files is a FileList of File objects. List some properties.
let output = [];
let @media;
let @user;
for (let i = 0, f; f = files[i]; i++) {
@media.FileContents = f.readAsBinaryString();
@media.FileName = f.name;
@media.User = user;
@Model.Create(media);
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a', ') - ',
f.size, ' bytes, last modified: ',
f.lastModifiedDate ? f.lastModifiedDate.toLocaleDateString() : 'n/a',
'</li>');
}
}
</script>
}
Known Issues
Hydra is a "work in progress". Please be patient as stability evolves.
Installation Instructions
Please visit the installation page here: Installation
Related Resources
Visit: http://www.cloudideaas.com/hydra
Enjoy!