<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Ildar</title>
    <description>The latest articles on Forem by Ildar (@ildar).</description>
    <link>https://forem.com/ildar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3682875%2Fa3e5b124-6506-4413-87bb-6d3b9257498d.png</url>
      <title>Forem: Ildar</title>
      <link>https://forem.com/ildar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ildar"/>
    <language>en</language>
    <item>
      <title>Build experimental language BayLang for web development</title>
      <dc:creator>Ildar</dc:creator>
      <pubDate>Sun, 28 Dec 2025 16:08:04 +0000</pubDate>
      <link>https://forem.com/ildar/build-experimental-language-baylang-for-web-development-1oj</link>
      <guid>https://forem.com/ildar/build-experimental-language-baylang-for-web-development-1oj</guid>
      <description>&lt;p&gt;Hello. I build new opensource experimental language named as BayLang.&lt;/p&gt;

&lt;p&gt;BayLang is an architecture-oriented language and development platform. It's a programming language designed for building web applications, CRM, ERP, E-Commerce, SaaS.&lt;/p&gt;

&lt;p&gt;The main goal is accelerate web development by use ready blocks and components such as Forms, Tables, Buttons, Input, Select and ready plugins Admin panel, Auth manager and etc.&lt;/p&gt;

&lt;p&gt;Key idea is Clean Architecture as part of the language, not as a set of guidelines. Architectural patterns are built into the development approach itself and supported by the tools.&lt;/p&gt;

&lt;p&gt;Core features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Schema-driven data design, forms, APIs, and presentation are built from defined schemas&lt;/li&gt;
&lt;li&gt;Compilation to PHP and Vue (including SPA and SSR)&lt;/li&gt;
&lt;li&gt;Unified model for both backend and frontend&lt;/li&gt;
&lt;li&gt;Minimal boilerplate code, maximum explicit architecture&lt;/li&gt;
&lt;li&gt;Variable typing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Suitable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enterprise and B2B systems&lt;/li&gt;
&lt;li&gt;Admin panels and backoffice solutions&lt;/li&gt;
&lt;li&gt;SaaS products&lt;/li&gt;
&lt;li&gt;Systems with long lifecycles and high support costs&lt;/li&gt;
&lt;li&gt;Projects where code readability and architectural discipline are important&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;BayLang is not just a new syntax - it is an attempt to formalize the best practices of enterprise development at the language and compiler level.&lt;/p&gt;

&lt;p&gt;Website: &lt;a href="//baylang.com"&gt;baylang.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Example code of component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;class name="App.Components.Pages.IndexPage.IndexPage"&amp;gt;

&amp;lt;use name="Runtime.Widget.Button" component="true" /&amp;gt;
&amp;lt;use name="Runtime.Widget.Section" component="true" /&amp;gt;

&amp;lt;style&amp;gt;
.main_section{
    padding-top: 20px;
    padding-bottom: 20px;
    background-position: center top;
    background-repeat: no-repeat;
    background-size: cover;
}
&amp;lt;/style&amp;gt;

&amp;lt;template&amp;gt;
    &amp;lt;div class="main_page"&amp;gt;
        &amp;lt;Section class="main_section"&amp;gt;
            &amp;lt;h1 class="page_title"&amp;gt;Index page&amp;lt;/h1&amp;gt;
            &amp;lt;div class="page_text"&amp;gt;Hello {{ this.model.message }}&amp;lt;/div&amp;gt;
            &amp;lt;Button @event:click="this.onClick()"&amp;gt;Click&amp;lt;/Button&amp;gt;
        &amp;lt;/Section&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;

/**
 * Click button
 */
void onClick()
{
    this.model.setMessage(this.model.message ~ "!");
}

&amp;lt;/script&amp;gt;

&amp;lt;/class&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Code model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;namespace App.Components.Pages.IndexPage;

use Runtime.BaseModel;
use Runtime.Serializer.MapType;
use Runtime.Serializer.StringType;
use Runtime.Web.RenderContainer;
use App.Components.Pages.IndexPage.IndexPage;


class IndexPageModel extends BaseModel
{
    string component = classof IndexPage;
    string message = "Hello World!";


    /**
     * Serialize object
     */
    static void serializer(MapType rules)
    {
        parent(rules);
        rules.addType("message", new StringType());
    }


    /**
     * Init widget
     */
    void initWidget(Dict params)
    {
        parent(params);
    }


    /**
     * Build title
     */
    void buildTitle(RenderContainer container)
    {
        this.layout.setPageTitle("Index page");
    }


    /**
     * Set message
     */
    void setMessage(string message)
    {
        this.message = message;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
