Metadata-Version: 2.4
Name: faik-inventory
Version: 1.0.26
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"
```

## Quick start (copy/paste)

Running in a container starting from python with neo4j installed:

```bash
pip install faik-inventory

# 1) Start Neo4j in the container (default neo4j user)
neo4j start

# 2) Create a user, password, and database
cypher-shell -u neo4j -p neo4j <<'EOF'
CREATE USER app_user IF NOT EXISTS SET PASSWORD 'apppass';
CREATE DATABASE app_db;
GRANT ROLE admin TO app_user;
EOF

# 3) Use the new app user/database
export NEO4J_URI="bolt://127.0.0.1:7687"
export NEO4J_USER="app_user"
export NEO4J_PASSWORD="apppass"
export NEO4J_DATABASE="app_db"
```

Launch the app:

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

If you changed the default `neo4j` password on this container, use that password in the `cypher-shell -u neo4j -p <password>` command.

## 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 External Neo4j

1. Install the app package:

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

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

2. Install and start Neo4j separately (sidecar, service, or command), then start the app:

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

Do not let `faik-inventory` manage Neo4j; it only verifies a pre-existing endpoint.
Set credentials in env vars before launch:

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

`--managed-neo4j` defaults to `NEO4J_USER=neo4j` and `NEO4J_PASSWORD=neo4j` only when those values
are not already set.

Optional: override bolt port check (if your deployment uses a different port):

```bash
faik-inventory \
  --managed-neo4j \
  --managed-neo4j-bolt-port 7687 \
  --host 0.0.0.0 \
  --port 8000
```

## 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 `faik_inventory/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.

test 1
