For a little while now, I have been working on my new website development and hosting platform (yet to be named). The current incarnation is powered by Node.js & MongoDB, using all of the latest fun stuff of course. The system is broken into a couple of different services, which I am not sure qualify as "Micoservices" but are similar enough for me. The backend is completely seperated from the front end, in fact the backend only exposes a RESTful API which the front end must consume and is able to push and pull data via a custom language (DSL) that I have written "QLisp". Which I should probably explain in another post. The front end website actually needs to have it's own backend actually, at the moment this is PHP/CodeIgniter, which acts as the request router and data broker to the data service (To some extent this is how files are managed also). This architecture allows for separating the workload more easily, and allowing website to reside on completely different networks if needed, or even have multiple frontends connect to the same data from different websites or possibly just for localizing a website and having regional servers.
The idea to solve this problem for myself
After thinking about this problem for some time now, and building a few sites using my platform and libraries such as Angular.js with all of these different languages, I think I want to start over. Not to say that I am going to scrap all of my work and start from scratch. I just think I need to reboot what "frontend" development and design mean to me, and more importantly how I actually do this work. This leads me to the conclusion, I want to make my own new Top-Level language like SASS, CoffeeScript, & HTML. But I am hoping to take a much different approach, one that I haven't really seen yet.
That is correct people, I am planning on creating a language that understands Widgets as a base datatype and language feature. This language should be familiar and simple, however it will need to be able to control the Design, Structure, & Execution of the resulting design/layout. I want One Language to Rule Them All, or at least for the frontend. The backend doesn't need much help, I enjoy PHP (sort of), Python, C#, Go, & C++ for any server side code, and they are all fun to work with in their own special use cases, my opinion. Now I have not yet decided on any of the actual implementation or language details or specs.
Design Ideas & Language Features?
- Class or Object Oriented Widget Declarations/Definitions
- Prototype Pattern like Cloning and Inheritance
- Simple Programming, Maybe in a BASIC like syntax (Who knows?, it might be fun)
- Single/Multiple File Widget Declarations/Definitions
- Import like module system (Similar to D? or Go?)
- Style is defined either in Global Space (Used via Import?) and in Local Space (Local Space should be nearly 100% of the styling, using the Prototype Pattern to override inside specific projects and layouts)
That's all good, but what does it look like?
As I have stated earlier, I am not sure what the language will look like, however I have some ideas that I would like to write down. So do not take this as a standard, but just some Ideas I have been thinking about for a couple months here and there.