TypeComposer is a modern frontend framework that allows you build user interfaces declaratively using TypeScript or JavaScript classes without writing HTML directly.
It provides a clean, class-based approach to UI development while maintaining full compatibility with existing web technologies.
- 🚀 No HTML Required – Define your entire UI using only TypeScript or JavaScript classes.
- 💡 Declarative Syntax – Create complex layouts with a simple, class-based structure.
- 🔷 Full TypeScript Support – Enjoy type safety, IntelliSense, and seamless TypeScript integration.
- ⚛️ React-Friendly – Easily integrate TypeComposer components into React projects.
- 🎨 Tailwind CSS Ready – Style and position elements with standard CSS or leverage Tailwind CSS for rapid, utility-first styling.
Install TypeComposer using npm:
npm create typecomposer@latestThis will set up a new TypeComposer project with all the necessary configuration.
Creating a UI in TypeComposer is as simple as extending classes and composing elements. Here’s an example of a basic page with a counter button:
importtypescriptLogofrom"/typescript.svg";importlogofrom"/typecomposer.svg";import{App,BorderPaneElement,ButtonElement,H1Element,HBoxElement,ImageElement,VBoxElement}from"typecomposer";import"./style.css";exportclassAppPageextendsBorderPaneElement{privatecount: number=0;onInit(): void{constvbox=newVBoxElement({justifyContent: "center"});constimages=newHBoxElement({width: "100%",alignItems: "center",justifyContent: "center"});images.append(newImageElement({src: logo,className: "logo"}));images.append(newImageElement({src: typescriptLogo,className: "logo"}));vbox.append(images);vbox.append(newH1Element({text: "TypeComposer",textAlign: "center",color: "#fcfffa"}));constcounter=newButtonElement({text: "0",width: "35%",height: "50px",alignSelf: "center"});counter.onclick=()=>(counter.innerHTML=(this.count++).toString());vbox.append(counter);this.center=vbox;}}App.setPage(newAppPage());This project is licensed under the MIT License.