Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/tutosrive/ferreandina-nosql/llms.txt

Use this file to discover all available pages before exploring further.

Ferreandina NoSQL is a university project developed at UCALDAS by Eduardo and Santiago. It is a complete hardware store management system that handles branches, products, categories, suppliers, supplies, customers, and workers — all backed by a MongoDB document database. The system is built as a two-tier application: a RESTful Java/Javalin API on the backend and a React single-page application on the frontend, communicating over HTTP with full CORS support.

What It Does

Inventory Management

Track products and categories across all store locations. Filter products by category, monitor low-stock items per branch, and remove out-of-stock entries with a single API call.

Branch Management

Manage hardware store branches with full CRUD operations. Each branch maintains its own product inventory, and the API exposes dedicated endpoints for per-branch stock queries and cleanup.

Supplier & Supply Tracking

Maintain a registry of suppliers and the supplies they deliver. A dedicated defective-report endpoint surfaces supplies flagged as defective using MongoDB aggregation pipelines.

Customer & Worker Records

Store and manage customer and employee records with full create, read, update, and delete support. The React frontend provides dedicated list, create, update, and detail views for each resource type.

Tech Stack

Backend

TechnologyVersion
Java21
Javalin7.2.2
MongoDB Driver (sync)5.7.0 (BOM)
Jackson Databind2.21.2
org.json20260522
dotenv-java3.2.0
Build ToolGradle (Kotlin DSL)

Frontend

TechnologyVersion
React18
TypeScript~5.8
Vite6
Tailwind CSS4
PrimeReact10
Axios1.9
React Router DOM6

Key Features

  • Full CRUD for all 7 resource types: branches, categories, products, suppliers, supplies, customers, and workers
  • Advanced MongoDB aggregation queries — low-stock detection, per-branch product listings, and defective-supply reports
  • Generic controller / service pattern on the backend for consistent, DRY resource handling
  • CORS enabled by default via Javalin’s bundled plugin (anyHost() rule set in App.java)
  • React SPA with React Router — lazy-loaded pages for list, create, update, and detail views per resource
  • Bruno request collection (Ferreandina-Bruno-Requests.zip) included in the repository root for quick API testing

Project Structure

The repository is organized into two top-level application directories:
ferreandina-nosql/
├── app/
│   ├── bc/          # Backend — Java 21 + Javalin 7 REST API (Gradle)
│   └── fr/          # Frontend — React 18 + TypeScript SPA (Vite + pnpm)
├── config/
│   └── collections/ # MongoDB seed JSON files (9 collections)
├── Ferreandina-Bruno-Requests.zip
└── tests/
The app/bc directory contains the Gradle multi-project build. The main application entry point is app/bc/app/src/main/java/com/ferreandina/App.java. The app/fr directory is a standard Vite project managed with pnpm.
Ferreandina NoSQL is an academic project created at UCALDAS and is released as open-source software under the GNU Affero General Public License v3.0 (AGPL-3.0). You are free to study, modify, and distribute it under the terms of that license.

Build docs developers (and LLMs) love