Domma (Dynamic Object Manipulation & Modeling API) is a lightweight, zero-dependency JavaScript framework that combines jQuery-style DOM manipulation, Lodash utilities, Moment.js-style date handling, and modern UI components into a single ~260KB bundle.
Simply include the script tag in your HTML:
<script src="domma.min.js"></script>
That's it! No npm install, no build step required. You can also use ES modules if preferred.
No. Domma is completely self-contained with zero external dependencies. Everything you need is included in a single file.
Absolutely! Domma's JavaScript functionality works independently of its CSS. You can disable
Domma's theming entirely with $.setup({ noStyles: true }) and use Bootstrap,
Tailwind, or your own custom styles.
Domma uses the same $() syntax as jQuery, so if you're familiar with jQuery,
you'll feel right at home. However, Domma is not a jQuery drop-in replacement — it's a
separate library with its own implementation.
Domma supports all modern browsers including Chrome, Firefox, Safari, and Edge. It uses standard ES6+ features and the Fetch API.
Yes! Domma is available as both UMD and ESM bundles. You can import specific modules if you prefer:
import { Domma, utils, dates } from './domma.esm.js';
Domma provides convenient aliases for common operations:
$ - DOM manipulation (like jQuery)_ - Utility functions (like Lodash)D() - Date handling (like Moment.js)M - Reactive modelsS - Storage wrapperDomma uses a jQuery-like event system:
$('.button').on('click', (e) => {
console.log('Clicked!');
});
// Event delegation
$('.container').on('click', '.item', (e) => {
console.log('Item clicked');
});
Domma's model system allows you to create reactive data objects with validation and DOM binding:
const user = M.create({
name: { type: M.types.string, required: true },
age: { type: M.types.number }
});
M.bind(user, 'name', '#name-input', { twoWay: true });
user.onChange('name', (val) => console.log(val));
Check out the Showcase for interactive examples of all features, or start with the Quickstart guide for a hands-on tutorial.
Please open an issue on our GitHub repository with as much detail as possible, including browser version, code samples, and expected vs actual behaviour.