Skip to content

piotrpdev/oko

Repository files navigation

demo

Oko

Fully local home security system.

Final Year Project for SETU's BSc (Hons.) in Software Systems Development.

Prerequisites

OpenCV (see opencv-rust/INSTALL.md)

Scripts

./make.sh run           # Default admin password: "hunter42"

./make.sh f             # Run frontend in dev mode
./make.sh b             # Run backend in dev mode

./make.sh seed          # Seed DB with dummy data
./make.sh cam1          # Send dummy camera images

./make.sh t             # Run tests
./make.sh coverage

Repository Structure

.
├── backend                         # Oko webserver (+ recording, mDNS, etc.)
│   ├── ...
│   └── utils
│       ├── camera-impersonator     # CLI for sending fake camera images to Oko
│       └── ws-utils                # Functions for WebSocket port reuse
├── camera                          # ESP32-CAM code
│   ├── ...
│   └── esp-camera-rs               # Safe wrappers for unsafe camera functions
├── frontend                        # Oko web UI
└── landing                         # Project info page (https://oko.piotrp.dev/)

Features

For a full list see the Documents.

Add Camera Video Feed Camera Settings Captive Portal
add camera video feed camera settings captive portal

Documents

(each image links to its respective document)

Presentation Report Poster
add camera video feed poster
Poster concept made at the start of the project

poster prototype

Flow Diagrams

Oko Overview
Oko Overview
Account Creation CI/CD Testing Settings
Account Creation CI/CD Testing Settings
Recording Camera Detection
Recording Camera Detection
Image Streaming ESP32-CAM Setup Permissions
Image Streaming Image Streaming Permissions

Notes

Notes Demo Notes
notes demo notes

License

This project is licensed under the GNU GPL v3.0.

Made using the following resources:

Resource License
axum-login example code MIT
Axum example code MIT
video2image N/A1
Vite PWA Svelte template MIT
Svelte ESLint example config MIT
Svelte Prettier example config MIT
Playwright-rust README MIT
Testing Library setup MIT
Vitest mocking example MIT
opencv-rs example code MIT
tungstenite examples MIT
shadcn Blocks MIT
ESP32-CAM example code GNU LGPLv2.1
ArduinoWebsockets examples GNU GPLv3.0
ESPAsyncWebServer examples GNU LGPLv3.0
Lucide icons ISC
esp-idf-template examples MIT
esp-rs/std-training MIT
esp-idf-svc examples MIT
edge-net examples MIT
gatekeeper source code Unlicense
esp-camera-rs package fork MIT
Geist font OFL-1.1
mdns package fork MIT
mdns examples MIT

Footnotes

  1. "...this solution can be customized to suit your particular requirements. Don’t hesitate to make adjustments and employ this code according to your video-to-image conversion needs."

About

fully local home security system

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •