A "No-Code" solution allowing users to create template List and Edit screens to visualize their data. Drawn heavily from experience in the CRM sector.
- Microsoft Visual Studio 2017 (Will likely work on earlier versions, but havent tested!)
- MongoDB 3.4
- AngularJS Core 1.6.4
- AngularJS Route 1.6.4
- AngularJS Messages 1.6.4
- jQuery v3.1.1
- Bootstrap v4
- MongoDB .NET Driver 2.4.4
- Fork & Clone
- Build project in Visual Studio to fetch NuGet dependencies
- Set Project "ScreenWizard" as Startup Project
- Set 'Index.Html' as Startup Page
- Start MongoDB server - mongod.exe
- Open MongoDB Shell - mongo.exe
- Run Mongo Seed Commands (See "Mongo Seed Commands" below)
Use the following commands in the MongoShell to seed the MongoDB instance with the correct data before running the project for the first time.
Creating the DB
use ScreenWizard
Defining Collection Names
db.createCollection("Customer")
db.createCollection("Activity")
db.createCollection("Invoice")
Defining the Field MetaData - used internally for display purposes
db.FieldMetadata.insertMany ([
{Table : "Customer", Name : "CustomerId", Type : "Int", DisplayType : "number", IsRequired : true},
{Table : "Customer", Name : "Name", Type : "String", DisplayType : "text", IsRequired : true},
{Table : "Customer", Name : "Email", Type : "Email", DisplayType : "email", IsRequired : false},
{Table : "Customer", Name : "ContactNumber", Type : "Phone", DisplayType : "tel", IsRequired : false},
{Table : "Customer", Name : "DateCreated", Type : "Date", DisplayType : "datetime-local", IsRequired : false},
{Table : "Customer", Name : "Website", Type : "String", DisplayType : "text", IsRequired : false},
{Table : "Customer", Name : "Notes", Type : "String", DisplayType : "text", IsRequired : false},
{Table : "Invoice", Name : "CustomerName", Type : "String", DisplayType : "text", IsRequired : true},
{Table : "Invoice", Name : "CustomerID", Type : "Int", DisplayType : "text", IsRequired : false},
{Table : "Invoice", Name : "InvoiceNumber", Type : "Int", DisplayType : "number", IsRequired : false},
{Table : "Invoice", Name : "AddressLine1", Type : "String", DisplayType : "text", IsRequired : false},
{Table : "Invoice", Name : "AddressLine2", Type : "String", DisplayType : "text", IsRequired : false},
{Table : "Invoice", Name : "City", Type : "String", DisplayType : "text", IsRequired : false},
{Table : "Invoice", Name : "PostCode", Type : "String", DisplayType : "text", IsRequired : false},
{Table : "Invoice", Name : "DueDate", Type : "Date", DisplayType : "datetime-local", IsRequired : false},
{Table : "Invoice", Name : "Balance", Type : "Currency", DisplayType : "number", IsRequired : false},
{Table : "Invoice", Name : "InvoiceItems", Type : "List", DisplayType : "list", IsRequired : false, ItemDetails:
[{Name:"Name"}, {Name:"Price"}, {Name:"Quantity"}, {Name:"Discount"}, {Name:"Subtotal"}]},
{Table : "Invoice", Name : "Total", Type : "Currency", DisplayType : "number", IsRequired : false},
{Table: "Activity", Name: "Title", Type: "String", DisplayType:"text", IsRequired: false},
{Table: "Activity", Name: "Description", Type: "String", DisplayType:"text", IsRequired: false},
{Table: "Activity", Name: "StartDate", Type: "Date", DisplayType:"datetime-local", IsRequired: false},
{Table: "Activity", Name: "EndDate", Type: "Date", DisplayType:"datetime-local", IsRequired: false}
]);