Skip to content

Repository files navigation

Database Engineering API

A practical backend API built with Node.js, Express, MongoDB, and Mongoose to demonstrate important database engineering concepts through a complete product API.

Features

  • MongoDB database integration
  • Mongoose schema and model
  • CRUD operations
  • Schema validation
  • Database indexes
  • Text search
  • Category filtering
  • Price range filtering
  • Stock filtering
  • Pagination
  • Sorting
  • Soft delete
  • Restore deleted records
  • Seed data
  • API versioning
  • Centralized error handling
  • Graceful server shutdown
  • Environment configuration
  • Health check endpoint
  • API testing with requests.http

Tech Stack

  • Node.js
  • Express
  • MongoDB
  • Mongoose
  • Nodemon

API Endpoints

Root

GET /

Health Check

GET /api/v1/health

Get Products

GET /api/v1/products

Get Product By ID

GET /api/v1/products/:id

Create Product

POST /api/v1/products

Update Product

PUT /api/v1/products/:id

Soft Delete Product

DELETE /api/v1/products/:id

Restore Product

PATCH /api/v1/products/:id/restore

Query Examples

Search

GET /api/v1/products?search=keyboard

Pagination

GET /api/v1/products?page=1&limit=5

Category Filter

GET /api/v1/products?category=Accessories

Price Range

GET /api/v1/products?minPrice=2000&maxPrice=7000

Stock Filter

GET /api/v1/products?inStock=true

Sorting

GET /api/v1/products?sort=price&order=asc

Include Soft Deleted Records

GET /api/v1/products?includeDeleted=true

Environment

Create a .env file using .env.example:

PORT=1198
MONGODB_URI=mongodb://127.0.0.1:27017/database_engineering_api

The .env file is ignored by Git, while .env.example documents the required environment variables.

Installation

npm install

Seed Database

npm run seed

This clears the existing product collection and inserts the included demonstration products.

Development

npm run dev

Production

npm start

Default Port

1198

Project Structure

database-engineering-api/
├── scripts/
│   └── seed.js
├── src/
│   ├── config/
│   │   └── database.js
│   ├── controllers/
│   │   └── product.controllers.js
│   ├── middlewares/
│   │   ├── errorHandler.middleware.js
│   │   └── notFound.middleware.js
│   ├── models/
│   │   └── product.model.js
│   ├── routes/
│   │   └── product.routes.js
│   ├── validators/
│   │   └── product.validators.js
│   ├── app.js
│   └── server.js
├── .env.example
├── .gitignore
├── package.json
├── requests.http
└── README.md

Documentation

Detailed project and code documentation is available in DOCUMENTATION.md.

Author

Ashish Ranjan

Links

License

MIT License

About

MongoDB + Mongoose database engineering API with CRUD, validation, indexes, search, filtering, pagination, soft deletes, seed data, and detailed documentation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages