Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,39 @@ jobs:
- name: Test
run: poetry run pytest

ml-service:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./ml-service

steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'

- name: Install Poetry
uses: snok/install-poetry@v1
with:
version: latest
virtualenvs-create: true
virtualenvs-in-project: true

- name: Install dependencies
run: poetry install

- name: Lint
run: poetry run ruff check src tests

- name: Format check
run: poetry run ruff format --check src tests

- name: Test
run: poetry run pytest

frontend:
runs-on: ubuntu-latest
defaults:
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ tmp
*.flv
*.wmv
*.m4v
test-videos/

# Model files and datasets
*.pt
Expand Down
15 changes: 15 additions & 0 deletions .kiro/hooks/run-frontend-tests.kiro.hook
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"enabled": true,
"name": "Run Frontend Tests",
"description": "Automatically run frontend tests using docker-compose when it's time to test. If the service is not running, use the start dev environment hook.",
"version": "1",
"when": {
"type": "userTriggered"
},
"then": {
"type": "runCommand",
"command": "docker-compose -f dev/docker-compose.yml exec frontend npm test"
},
"workspaceFolderName": "eioku-kiro-hackathon",
"shortName": "run-frontend-tests"
}
108 changes: 108 additions & 0 deletions ATTRIBUTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# Third-Party Attribution

This project uses the following open-source libraries, frameworks, and tools.

---

## ML & Computer Vision

| Library | Version | License | Purpose |
|---------|---------|---------|---------|
| [Ultralytics YOLO](https://github.com/ultralytics/ultralytics) | ^8.0.0 | AGPL-3.0 | Object detection |
| [faster-whisper](https://github.com/SYSTRAN/faster-whisper) | ^1.2.1 | MIT | Speech transcription |
| [EasyOCR](https://github.com/JaidedAI/EasyOCR) | ^1.7.0 | Apache-2.0 | Optical character recognition |
| [Places365](https://github.com/CSAILVision/places365) | - | MIT | Scene/place recognition |
| [OpenCV](https://opencv.org/) | ^4.8.0 | Apache-2.0 | Image processing |
| [PyTorch](https://pytorch.org/) | ^2.1 | BSD-3-Clause | Deep learning framework |
| [TorchVision](https://pytorch.org/vision/) | ^0.16 | BSD-3-Clause | Vision models & transforms |
| [NumPy](https://numpy.org/) | ^1.24 | BSD-3-Clause | Numerical computing |
| [Pillow](https://python-pillow.org/) | ^10.0 | HPND | Image manipulation |

---

## Backend Framework

| Library | Version | License | Purpose |
|---------|---------|---------|---------|
| [FastAPI](https://fastapi.tiangolo.com/) | ^0.104.1 | MIT | REST API framework |
| [Uvicorn](https://www.uvicorn.org/) | ^0.24.0 | BSD-3-Clause | ASGI server |
| [Gunicorn](https://gunicorn.org/) | ^23.0.0 | MIT | WSGI HTTP server |
| [SQLAlchemy](https://www.sqlalchemy.org/) | ^2.0.23 | MIT | ORM & database toolkit |
| [Alembic](https://alembic.sqlalchemy.org/) | ^1.13.1 | MIT | Database migrations |
| [Pydantic](https://docs.pydantic.dev/) | ^2.0 | MIT | Data validation |
| [psycopg2](https://www.psycopg.org/) | ^2.9.9 | LGPL-3.0 | PostgreSQL adapter |

---

## Job Queue & Caching

| Library | Version | License | Purpose |
|---------|---------|---------|---------|
| [arq](https://arq-docs.helpmanual.io/) | ^0.26 | MIT | Async job queue |
| [Redis-py](https://redis-py.readthedocs.io/) | ^5.0.0 | MIT | Redis client |

---

## Utilities

| Library | Version | License | Purpose |
|---------|---------|---------|---------|
| [xxHash](https://github.com/Cyan4973/xxHash) | ^3.6.0 | BSD-2-Clause | Fast hashing |
| [PyYAML](https://pyyaml.org/) | ^6.0.3 | MIT | YAML parsing |
| [HTTPX](https://www.python-httpx.org/) | ^0.25.2 | BSD-3-Clause | HTTP client |
| [python-json-logger](https://github.com/madzak/python-json-logger) | ^2.0.7 | BSD-2-Clause | JSON logging |
| [GeoPy](https://geopy.readthedocs.io/) | ^2.4.0 | MIT | Geocoding |
| [PyExifTool](https://github.com/sylikc/pyexiftool) | ^0.5.5 | GPL-3.0 | EXIF metadata |
| [psutil](https://github.com/giampaolo/psutil) | ^5.9.0 | BSD-3-Clause | System monitoring |
| [nvidia-ml-py](https://pypi.org/project/nvidia-ml-py/) | ^12.535 | BSD-3-Clause | GPU monitoring |

---

## Frontend

| Library | Version | License | Purpose |
|---------|---------|---------|---------|
| [React](https://react.dev/) | ^18.2.0 | MIT | UI framework |
| [React DOM](https://react.dev/) | ^18.2.0 | MIT | DOM rendering |
| [Vite](https://vitejs.dev/) | ^5.0.8 | MIT | Build tool |
| [TypeScript](https://www.typescriptlang.org/) | ^5.2.2 | Apache-2.0 | Type system |
| [Vitest](https://vitest.dev/) | ^1.0.4 | MIT | Test framework |
| [Testing Library](https://testing-library.com/) | ^13.4.0 | MIT | Testing utilities |
| [ESLint](https://eslint.org/) | ^8.55.0 | MIT | Linter |

---

## Infrastructure

| Tool | License | Purpose |
|------|---------|---------|
| [PostgreSQL](https://www.postgresql.org/) | PostgreSQL License | Database |
| [Valkey](https://valkey.io/) (Redis fork) | BSD-3-Clause | Message queue |
| [Nginx](https://nginx.org/) | BSD-2-Clause | Reverse proxy |
| [Docker](https://www.docker.com/) | Apache-2.0 | Containerization |
| [FFmpeg](https://ffmpeg.org/) | LGPL/GPL | Video processing |
| [ExifTool](https://exiftool.org/) | GPL-1.0+ | Metadata extraction |

---

## Development Tools

| Tool | License | Purpose |
|------|---------|---------|
| [Poetry](https://python-poetry.org/) | MIT | Python dependency management |
| [Ruff](https://docs.astral.sh/ruff/) | MIT | Python linter |
| [pytest](https://pytest.org/) | MIT | Python testing |

---

## Pre-trained Models

| Model | Source | License | Purpose |
|-------|--------|---------|---------|
| YOLOv8 | Ultralytics | AGPL-3.0 | Object detection weights |
| Whisper | OpenAI | MIT | Speech recognition weights |
| Places365 | MIT CSAIL | MIT | Scene classification weights |

---

*All libraries used under their respective licenses. See individual project repositories for full license text.*
41 changes: 1 addition & 40 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,48 +26,9 @@ Stop with:
### URLs
- **Application**: http://localhost:8080
- **Backend API**: http://localhost:8080/api/
- **Backend API docs**: http://localhost:8080/api/docs
- **Health Check**: http://localhost:8080/health

### Manual Setup

#### Prerequisites

- Python 3.10+
- Node.js 18+
- Git

#### 1. Install Poetry

```bash
curl -sSL https://install.python-poetry.org | python3 -
```

Add Poetry to your PATH:
```bash
export PATH="$HOME/.local/bin:$PATH"
```

Verify installation:
```bash
poetry --version
```

#### 2. Backend Setup

```bash
cd backend
poetry install
poetry run uvicorn src.main:app --reload
```

#### 3. Frontend Setup

```bash
cd frontend
npm install
npm run dev
```

## Development Workflow

1. Make small, incremental changes
Expand Down
Loading