Note Web PaaS DSL grammer has evolved in NW8 to support:
Please find updated Bakus-Naur Form of Note Web DSL below.
Read on - don't get discouraged if you're not used to reading programming language specifications. Grammar suited for taking notes, might imply some learning curve for seasonal developers or citizen developers or business users. Note In Web, Inc. takes care about this as well!
Stay tuned this month for a demo of how to get your CRUD (for example) cloud solution user stories converted directly into Note Web PaaS DSL and have it deployed, running and ready for data entry - all within half an hour (excluding input story editing)!
Obviously, it would be up to you to review suggested Note Web DSL code, adjust your user stories or requirements, if needed, and request another suggestion. Note Web version to be demoed this month won't trace Note Web DSL constructs onto original requirements, inform you of identified quality attributes, architecturally significant requirements, selected tactics or tradeoffs, nor will it provide formal documentation with diagrams.
However, this month's demo of Note Web design-deploy session would be in line with 2023 expectations set in this Note in Web, Inc. promo video.
<block> ::= (<contextStatement> | <statement>)+
<contextStatement> ::= "context" <string literal> ("runat" <string literal>|"repo" <string literal>)* INDENT (cloudStatement|dashboardStatement)+ DEDENT
<cloudStatement> ::= "user"
| "bucket" <string literal>
| "vpc" <stringLiteral> INDENT (<vpcContent>)+ DEDENT
| <containerServiceStatement>
| "kubernetes service" <string literal> "image" <string literal>
| "app service" <string literal> "image" <string literal>
| <lambdaStatement>
| "queue" <string literal>
| "load balancer" <string literal>
<resourceContent> ::= "relational table" <string literal>
| "document table" <string literal>
| <apiGatewayStatement>
| <cdnStatement>
| <containerClusterStatement>
| <kubernetesClusterStatement>
| <databaseClusterStatement>
| <databaseInstanceStatement>
| "resource" <string literal> "type" <string literal> "url" <string literal> INDENT (<resourceContent>)+ DEDENT
<lambdaStatement> ::= "lambda" <string literal> "template" <string literal> "ref" <string literal>
<apiGatewayStatement> ::= "api gateway" <string literal> INDENT
("ref" <string literal> "url" <string literal>)+ DEDENT
<cdnStatement> ::= "cdn" <string literal> INDENT
("ref" <string literal> "path" <string literal> "url" <string literal>)+ DEDENT
<dashboardStatement> ::= "dashboard" <string literal> INDENT ("web note" <string literal> "aspect" <string literal> "ref" <string literal>)+ DEDENT
<containerClusterStatement> ::= "container cluster" <string literal>
<kubernetesClusterStatement> ::= "kubernetes cluster" <string literal> "cidr" <string literal> "subnets" <string literal>
<databaseClusterStatement> ::= "database cluster" <string literal> "type" <string literal> INDENT <databaseInstanceStatement>+ DEDENT
<databaseInstanceStatement> ::= "database instance" <string literal> "type" <string literal> INDENT ("entity" <string literal> INDENT ("field" <string literal> "type" <string literal>)+ DEDENT)+ DEDENT
<containerServiceStatement> ::= "container service" <string literal> "image" <string literal> ("runat" <string literal> | "registerdns" <string literal> | "registerlb" <string literal> | "repo" <string literal> | "template" <string literal> | "package" <string literal> | "database type" <string literal> | "database url" <string literal> | "url" <string literal> | "subnets" <string literal> | "security groups" <string literal> | "config" <string literal> INDENT ("entity" <string literal> INDENT ("field" <string literal> "type" <string literal>)+ DEDENT)+ DEDENT
<vpcContent> ::= "vm" <string literal> "type" <string literal> "image" <string literal>
<statement> ::= "exit"
| "read input" (<identifier> ",")* <identifier>
| "call service" <identifier> "with" <stringLiteral> ("into" <identifier>|<string literal>)
| "switch" ":" INDENT (<ifThen>)+ [otherwiseThen] DEDENT
<ifThen> ::= <condition> "->" INDENT <block> DEDENT
<otherwiseThen> ::= "otherwise" "->" INDENT <block> DEDENT
<condition> ::= <identifier> "==" <stringLiteral>