setup project structure

This commit is contained in:
2025-11-26 10:08:26 +01:00
parent 22e4c4d4df
commit 534f996267
6 changed files with 169 additions and 3 deletions

View File

@@ -1,6 +1,6 @@
# Gamayun
![alt text](Gemini_Generated_Image_wv24iuwv24iuwv24.png)
![alt text](resources/title_image.png)
## Concept
@@ -31,11 +31,73 @@ Client-Server Separation: Compute-intensive operations (embedding generation, LL
- Deployment in air-gapped labs
- Efficient resource utilization (centralized compute nodes can serve multiple investigators)
## Development Setup
## 🛠 Development Setup
This project uses [uv](https://github.com/astral-sh/uv) for fast dependency management and the modern "Src Layout" structure.
### Prerequisites
- Python 3.13+
- [uv](https://github.com/astral-sh/uv) installed (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
### Installation Steps
1. **Clone the repository**
```bash
git clone <your-repo-url>
cd gamayun
```
2. **Create a virtual environment**
This project requires Python 3.13.
```bash
uv venv --python 3.13
```
3. **Activate the environment**
- Linux/macOS:
```bash
source .venv/bin/activate
```
- Windows:
```powershell
.venv\Scripts\activate
```
4. **Install dependencies**
This command installs locked dependencies and links the local `gamayun` package in editable mode.
```bash
uv pip install -r requirements.txt -e .
```
### Running the Application
You can execute the module directly:
```bash
python src/gamayun/main.py
```
### Running Tests
```bash
pytest
```
## Data Flow
### Ingestion Pipeline
```
```bash
Raw Evidence Sources
├─ Forensic Images (E01, DD, AFF4)
├─ Timeline CSV (Timesketch format)
@@ -94,7 +156,7 @@ This manifest allows exact reproduction of the index from the same source data.
### Query Execution Pipeline
```
```bash
Natural Language Query
"bitcoin transaction after drug deal"

29
pyproject.toml Normal file
View File

@@ -0,0 +1,29 @@
[project]
name = "gamayun"
version = "0.0.0"
description = "Scalable vector search engine with focus on post-mortem forensics"
authors = [
{name = "Mario Stöckl", email = "mstoeck3@hs-mittweida.de"}
]
readme = "README.md"
requires-python = "~=3.13"
dependencies = [
"PySide6~=6.8.0",
"qdrant_client~=1.16.1",
]
[project.optional-dependencies]
dev = [
"pytest",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/gamayun"]
[project.scripts]
gamayun-cli = "gamayun.main:main"

75
requirements.txt Normal file
View File

@@ -0,0 +1,75 @@
# This file was autogenerated by uv via the following command:
# uv pip compile pyproject.toml --extra dev -o requirements.txt
annotated-types==0.7.0
# via pydantic
anyio==4.11.0
# via httpx
certifi==2025.11.12
# via
# httpcore
# httpx
grpcio==1.76.0
# via qdrant-client
h11==0.16.0
# via httpcore
h2==4.3.0
# via httpx
hpack==4.1.0
# via h2
httpcore==1.0.9
# via httpx
httpx==0.28.1
# via qdrant-client
hyperframe==6.1.0
# via h2
idna==3.11
# via
# anyio
# httpx
iniconfig==2.3.0
# via pytest
numpy==2.3.5
# via qdrant-client
packaging==25.0
# via pytest
pluggy==1.6.0
# via pytest
portalocker==3.2.0
# via qdrant-client
protobuf==6.33.1
# via qdrant-client
pydantic==2.12.4
# via qdrant-client
pydantic-core==2.41.5
# via pydantic
pygments==2.19.2
# via pytest
pyside6==6.8.3
# via gamayun (pyproject.toml)
pyside6-addons==6.8.3
# via pyside6
pyside6-essentials==6.8.3
# via
# pyside6
# pyside6-addons
pytest==9.0.1
# via gamayun (pyproject.toml)
qdrant-client==1.16.1
# via gamayun (pyproject.toml)
shiboken6==6.8.3
# via
# pyside6
# pyside6-addons
# pyside6-essentials
sniffio==1.3.1
# via anyio
typing-extensions==4.15.0
# via
# grpcio
# pydantic
# pydantic-core
# typing-inspection
typing-inspection==0.4.2
# via pydantic
urllib3==2.5.0
# via qdrant-client

View File

Before

Width:  |  Height:  |  Size: 5.6 MiB

After

Width:  |  Height:  |  Size: 5.6 MiB

0
src/gamayun/__init__.py Normal file
View File

0
src/gamayun/main.py Normal file
View File