demo.webm
In B2B software development, adapting app styles to match clients' branding is crucial. But managing separate CSS files for each client quickly becomes impractical.
With database-driven themes, updating branding is as simple as a database edit, saving hours of development time and enabling clients to manage their own themes (through the UI) for a seamless user experience.
-
Run
npm install
to install dependencies. -
Run
npm run server
to start the backend server (server.ts
) on port 3000. The server keeps an in-memory database of the client themes and products. -
In another terminal, run
npm start
to start the Angular dev server on port 4200. -
Navigate to
http://localhost:4200/
-
Instant Branding Updates: By storing themes in the database, developers can effortlessly update branding with a simple row edit, eliminating the need for extensive development cycles.
-
Seamless User Experience: Since themes are just data, we can create an API and UI for users to update their own branding without the need for developer intervention.
-
Dynamic CSS Variables: Leveraging
document.documentElement.style.setProperty()
, we can dynamically set CSS variables at runtime. -
Dynamic Font Loading: Utilizing dynamically-generated
<link>
elements, we can import Google Fonts (or any other fonts) at runtime. -
Route Resolver: Avoid a "flash of unstyled content" by loading the theme in a route resolver, before components are rendered.