{"id":28175,"library":"semini","title":"semini","description":"Semini (v1.5.125) is a Node.js package for database and website initialization using MongoDB, Express.js, and Handlebars.js. It provides tools for setting up database schemas, seeding data, and configuring SEO-friendly site structures. Compared to alternatives, it offers a bundled initialization workflow with minimal configuration. Released infrequently, this version is stable but lacks detailed documentation.","status":"active","version":"1.5.125","language":"javascript","source_language":"en","source_url":null,"tags":["javascript"],"install":[{"cmd":"npm install semini","lang":"bash","label":"npm"},{"cmd":"yarn add semini","lang":"bash","label":"yarn"},{"cmd":"pnpm add semini","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"required for Express.js integration","package":"express","optional":false},{"reason":"required for Handlebars.js templating","package":"handlebars","optional":false},{"reason":"required for MongoDB database operations","package":"mongodb","optional":false}],"imports":[{"note":"Package is ESM-only since v1.0.0.","wrong":"const semini = require('semini')","symbol":"default","correct":"import semini from 'semini'"},{"note":"Named export for database initialization.","wrong":"const init = require('semini').init","symbol":"init","correct":"import { init } from 'semini'"},{"note":"Use 'import type' for TypeScript types to avoid runtime errors.","wrong":"import { Config } from 'semini' (value import)","symbol":"types","correct":"import type { Config } from 'semini'"}],"quickstart":{"code":"import { init } from 'semini';\n\nconst config = {\n  database: {\n    uri: process.env.MONGO_URI ?? 'mongodb://localhost:27017/myapp',\n    name: 'myapp'\n  },\n  site: {\n    title: 'My Site',\n    description: 'A site initialized with semini'\n  }\n};\n\ninit(config)\n  .then(() => console.log('Database and site initialized successfully'))\n  .catch(err => console.error('Initialization failed:', err));\n","lang":"typescript","description":"Shows how to import and use the init function with MongoDB connection string from environment variable."},"warnings":[{"fix":"Use import syntax or downgrade to v0.x.","message":"In v1.0.0, the package switched from CommonJS to ESM. require() will fail.","severity":"breaking","affected_versions":">=1.0.0"},{"fix":"Pass a fresh Express instance via config or use a scoped initialization.","message":"The init function mutates the global Express app object if not isolated.","severity":"gotcha","affected_versions":"all"},{"fix":"Use named import { init } instead.","message":"The default import semini() is deprecated since v1.5.0.","severity":"deprecated","affected_versions":">=1.5.0"},{"fix":"Set 'site.viewsDir' in config to the correct path.","message":"Handlebars templates must be placed in a 'views' directory by default, else initialization fails silently.","severity":"gotcha","affected_versions":"all"},{"fix":"Update mongodb dependency to v4 or later.","message":"MongoDB driver v4+ is required as of v1.4.0; v3 is not supported.","severity":"breaking","affected_versions":">=1.4.0"}],"env_vars":null,"last_verified":"2026-05-09T00:00:00.000Z","next_check":"2026-08-07T00:00:00.000Z","problems":[{"fix":"Add \"type\": \"module\" to package.json or use .mjs extension.","cause":"Package is ESM-only, but project is not configured for ESM.","error":"SyntaxError: Cannot use import statement outside a module"},{"fix":"Use import { init } from 'semini' instead of import semini from 'semini'.","cause":"Using default import for named export.","error":"TypeError: init is not a function"},{"fix":"Check MONGO_URI env var or config.database.uri includes username and password.","cause":"Missing or incorrect database credentials in config.","error":"Error: MongoDB connection error: MongoError: bad auth Authentication failed."},{"fix":"Run npm install handlebars.","cause":"Handlebars peer dependency not installed.","error":"Error: Cannot find module 'handlebars'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}