Skip to main content

Installation

A short, practical installation guide for @abimongo/core. This page shows how to install the package, satisfy the runtime dependencies, and run a minimal local development setup.


Prerequisites

  • Node.js 14+ (LTS recommended)
  • A MongoDB server (local or hosted)
  • Redis (optional — required for caching and GraphQL subscriptions)
  • npm or yarn

Note: Redis is not pre-installed by the package. If you want caching or pub/sub features, run a Redis server locally or use a cloud provider.


Install the package

Install from npm in your project:

npm install @abimongo/core
# or
yarn add @abimongo/core

Peer / runtime dependencies

Install the MongoDB and Redis clients (and GraphQL libs if you plan to use GraphQL features):

npm install mongodb redis
# GraphQL (optional)
npm install graphql @apollo/server

You can pin versions to your project's policy, but the library is designed to work with recent stable releases of these clients.


Configuration (environment variables)

The core package reads connection URIs from environment variables. The recommended variables are:

  • MONGO_URI — MongoDB connection string; e.g. mongodb://localhost:27017/mydb
  • REDIS_URI — Redis connection string; e.g. redis://localhost:6379

Example (.env):

MONGO_URI=mongodb://localhost:27017/abimongo_dev
DB_NAME=your-db-name
REDIS_URI=redis://localhost:6379

Load these into your app using your preferred method (dotenv, environment configuration in your process manager, or container environment).


Quick start (programmatic)

A minimal example that connects, defines a schema and model, performs one write and then exits.

import { AbimongoClient, AbimongoSchema, AbimongoModel } from '@abimongo/core';

async function main() {
const client = new AbimongoClient(process.env.MONGO_URI || 'mongodb://localhost:27017/abimongo_dev');

await client.connect();

const userSchema = new AbimongoSchema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true }
});

const UserModel = new AbimongoModel({ collectionName: 'users', schema: userSchema });

await UserModel.create({ name: 'Alice', email: 'alice@example.com' });

await AbimongoClient.disconnect();
}

main().catch(err => {
console.error(err);
process.exit(1);
});

Local development with Docker (optional)

Use Docker Compose to spin up MongoDB and Redis locally for development. Create a docker-compose.yml with the following services:

version: '3.8'
services:
mongo:
image: mongo:6.0
ports:
- '27017:27017'
volumes:
- mongo-data:/data/db

redis:
image: redis:7
ports:
- '6379:6379'

volumes:
mongo-data:

Start the stack and point your app to MONGO_URI=mongodb://localhost:27017/abimongo_dev and REDIS_URI=redis://localhost:6379.


Verify installation

A quick way to verify the package and its dependencies are present in your project:

npm ls @abimongo/core mongodb redis || true

You can also run a small script (like the Quick start above) to exercise connection, simple CRUD, and a graceful shutdown.


Common issues & troubleshooting

  • MongoDB connection failures:

    • Confirm the MONGO_URI is correct and the server is reachable.
    • If using authentication, ensure the URI contains credentials or the environment is configured.
  • Redis not connecting:

    • Confirm REDIS_URI points to a running Redis instance. Redis is optional unless you use caching or subscriptions.
  • Node version errors:

    • Ensure Node.js 14+ is installed and used by your process manager or runtime.

Next steps