Metadata-Version: 2.4
Name: faik-inventory
Version: 1.0.10
Summary: Neo4j-backed FastAPI app with React frontend for IT inventory graph management.
Requires-Python: >=3.14
Description-Content-Type: text/markdown
Requires-Dist: fastapi<1.0,>=0.116
Requires-Dist: jinja2<4.0,>=3.1
Requires-Dist: neo4j<6.0,>=5.28
Requires-Dist: python-multipart<1.0,>=0.0.20
Requires-Dist: uvicorn<1.0,>=0.35

# faik-inventory

Neo4j-backed FastAPI app with a React frontend for managing an IT inventory graph.

## Requirements

- Python 3.14
- Node.js 22+ (development only)

## Environment

Set these as needed before starting the app:

```bash
export NEO4J_URI="bolt://127.0.0.1:7687"
export NEO4J_USER="neo4j"
export NEO4J_PASSWORD="your-password"
export NEO4J_DATABASE="neo4j"
```

## Install

Install backend dependencies:

```bash
pip install -r requirements.txt
```

Configure git to use project hooks:

```bash
git config core.hooksPath .githooks
```

This enables pre-commit checks that prevent committing Neo4j database files and ensure tests pass.

## 1) Run On Bare Python Docker Image With Embedded Neo4j

Fastest path (Debian-based `python:3.14` image), in order:

1. Install Neo4j prerequisites and Neo4j itself:

```bash
apt-get update
apt-get install -y curl ca-certificates gnupg procps
curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
echo 'deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable latest' > /etc/apt/sources.list.d/neo4j.list
apt-get update
apt-get install -y neo4j
neo4j --version
```

2. Install the app package:

```bash
# From package index:
pip install faik-inventory

# Or from a built wheel:
# pip install dist/faik_inventory-*.whl
```

3. Start the app with embedded/managed Neo4j:

```bash
faik-inventory --managed-neo4j --host 0.0.0.0 --port 8000
```

Do not start Neo4j manually as root in this mode; let `faik-inventory --managed-neo4j` launch it.
Managed mode defaults to `NEO4J_USER=neo4j` and `NEO4J_PASSWORD=neo4j` unless you override
`FAIK_INVENTORY_MANAGED_NEO4J_USER` / `FAIK_INVENTORY_MANAGED_NEO4J_PASSWORD`.

Managed Neo4j runtime data is stored under:

```text
~/.local/share/faik-inventory/neo4j/
```

Optional: override managed paths and ports:

```bash
faik-inventory \
  --managed-neo4j \
  --managed-neo4j-home /opt/neo4j \
  --managed-neo4j-dir ~/.local/share/faik-inventory \
  --managed-neo4j-bolt-port 7687 \
  --managed-neo4j-http-port 7474
```

If managed Neo4j prerequisites are missing, the CLI prints Debian-based install commands and exits.

## 2) Run On Normal Python With Remote Neo4j

Set your remote Neo4j environment values, then run:

```bash
faik-inventory --host 0.0.0.0 --port 8000
```

or in development mode:

```bash
uvicorn app:app --reload
```

## 3) Development

Install frontend dependencies:

```bash
npm install
```

Before running the app locally, build frontend assets:

```bash
npm run build
```

Then run FastAPI:

```bash
uvicorn app:app --reload
```

Open:

```text
http://127.0.0.1:8000
```

Wheel build/publish automation is handled in Tekton jobs under `k8s/tekton`.

If you change files under `src/`, rebuild before refreshing:

```bash
npm run build
```

The backend serves the built frontend from `static/app/`.

## Notes

- The `/` route serves the built React app, not the old Jinja page.
- If the frontend build is missing, the app returns a message telling you to run `npm install` and `npm run build`.

Test string

Pipeline trigger check: deploy key added on 2026-03-05.
