-
-
Notifications
You must be signed in to change notification settings - Fork 5
Core principals
Building for the web is the fastest and easiest way to share what you've created. Nearly everything you could want a computer to do is possible using the web platform: playing and recording audio and video media, interacting with MIDI musical instruments, building interactive 3D VR worlds... and making a form-based CRM save to a database. Whatever you can dream, the web has you covered.
The web was designed in the early 1990s. The functionality (and changes to functionality) is discussed in depth by an international collection of businesses and individuals that make up the W3C to form web standards. These standards are designed with such clever foresight that there have only been a handful of version increases over the decades, and everything is designed to be backwards compatible. What other engineering job comes with this much clarity, stability, and fantastic documentation?
WebEngine is designed to work with existing web technologies, rather than inventing new ones.
People choose a web framework because it aligns with their personal values of what it means to be a developer, not just because it's the fastest, securest, lightweightest, etc.
A good developer experience breeds a good user experience.
WebEngine development is designed to incite joy, and with that, everyone can be happy.
HTML can be used to build interfaces for desktop computers, VR headsets, laptops, mobile phones, smart watches, and everything in between.
Tools and techniques can be used to convert HTML into other native user interfaces.
The barrier to entry of writing HTML is simply having access to a computer with a text editor.
Web servers and web browsers are unbelievably efficient at sending content over the internet and rendering it in near real-time.
WebEngine is designed to embrace HTML-first development. Allow splitting HTML into different pages and components, and then treat PHP the same: a single file with a single, obvious responsibility is perfect.
That also means a page does not need to stop being useful just because it starts static. A complete HTML page can be put in front of a user very early, then later gain form handling, data binding, richer interactions, and background updates without being thrown away and rebuilt. In web development this is usually called progressive enhancement, and WebEngine is designed to make that style of growth feel natural.
When picking up someone else's code, or even when looking at your own code from 6 months ago, it's difficult to get into the flow of what's happening. How does the routing work? Where is that class getting instantiated? Why is this parameter this value?
WebEngine is designed to be as quick to pick up by anyone who's ever seen or heard of HTML and PHP. WebEngine and the applications built in it are understood by IDEs and LLMs, so accelerating development with the right tools is a breeze.
Code layout should help people reason about requests and changes. When a new developer opens a project, they should be able to answer simple questions quickly: where does /account/settings live, which file handles the form submit, where is the SQL, and which class applies the business rule?
That is why obvious file locations matter. If a file maps to a URL, that should be clear from its path. If a class is part of the application domain, it should live in an obvious namespace. If a page depends on a template, component, or query file, those should be easy to find without detective work.
This also explains the preference for reducing framework-shaped code. The more a project reads like ordinary HTML, PHP, SQL, and browser behaviour, the easier it is for people to understand and maintain. Modern tools also benefit from that clarity. IDEs, static analysis tools, and large language models (AI) all work better when the codebase has an obvious shape, but the point is still to help the humans stay in control of what is being built.
Continue to the installation page, or write our first page in the Hello World tutorial.
- File-based routing
- Page views
- Page logic
- Dynamic URIs
- Headers and footers
- Custom HTML components
- Page partials
- Binding data to the DOM
- DOM manipulation
- Hello You tutorial
- Todo list tutorial
- Address book tutorial WIP
- Blueprints
- Application architecture
- Coding styleguide WIP
- PHP environment setup WIP
- Web servers WIP
- Background cron tasks
- Database setup WIP
- Client-side compilation WIP
- Testing WebEngine applications WIP
- Production checklist WIP
- Security WIP