lavina
v1.0.12
Published
Lavina is an automated dependency propagation tool designed to scan microservice architectures and build dependency graphs between internal projects.
Readme
Lavina
Lavina is a dependency management and visualization tool for microservice and multi-project architectures.
The project consists of two parts:
- CLI application – scans projects, discovers internal dependencies and generates a dependency graph.
- Web UI – interactive visualization and dependency management interface built with Next.js.
The goal of Lavina is to help developers understand, maintain and propagate dependency changes across large systems containing multiple applications, libraries and shared components.
Features
Dependency Discovery
- Scans directories recursively
- Detects JavaScript and PHP projects
- Reads:
package.jsoncomposer.json
- Maps relationships between internal projects
- Generates a dependency graph
Dependency Classification
Projects are automatically categorized as:
- Application
- Library
- Standalone
Visualization
Lavina provides a web interface for:
- Browsing dependencies
- Filtering projects
- Visualizing dependency graphs
- Exploring dependency chains
- Managing version updates
Multi-language Support
Supported project types:
- JavaScript / Node.js
- PHP / Composer
Architecture
lavina/
│
├── cli.js # CLI entry point
├── src/ # CLI implementation
│
└── lavina-ui/ # Next.js UI
├── src/app
├── src/components
└── src/libCLI
Built with:
- Node.js
- Commander.js
- Chalk
Responsible for:
- Project discovery
- Dependency mapping
- Dependency export
Web UI
Built with:
- Next.js 16
- React 19
- React Flow
- TanStack Table
The UI reads dependency data generated by the CLI and presents it in an interactive format.
Installation
Global Installation
npm install -g lavinaVerify installation:
lavina --versionUsage
Scan Dependencies
Run from the root directory containing your projects:
lavina scanVerbose mode:
lavina scan --verboseOutput:
.lavina/deps.jsonOpen Web UI
lavina uiThis starts the bundled Next.js standalone server and opens:
http://localhost:3000Generated Output
Lavina stores dependency information inside:
.lavina/deps.jsonExample:
{
"displayName": "rp-auth (js)",
"version": "5.29.0",
"category": "library",
"projectDependencies": {
"rp-utils (js)": "^1.5.2"
}
}Project Categories
Library
Used by other internal projects.
Application
Depends on internal projects but is not consumed by others.
Standalone
Has no internal dependencies and is not depended upon.
Development
Link CLI Locally
From the project root:
npm linkor
npm run devThis makes the local version available globally as:
lavinaRun UI in Development
Navigate to:
cd lavina-uiInstall dependencies:
npm installStart development server:
npm run devBuild production version:
npm run buildPublishing
Build the UI:
cd lavina-ui
npm run buildReturn to the project root:
cd ..Publish package:
npm publishSupported Dependency Sources
JavaScript
{
"dependencies": {},
"peerDependencies": {}
}PHP
{
"require": {}
}Future Development
Planned features:
- Additional package manager support
- Additional dependency file formats
- Custom version bumping rules
Author
Elena Kikiova
Master's Degree Project
Dependency management and visualization for microservice architectures.
