From a429da9e02c94ae5fb354080166f97a38770df9d Mon Sep 17 00:00:00 2001 From: Kostas Drakontidis Date: Sat, 25 Apr 2026 17:13:20 +0300 Subject: [PATCH] Template upload --- .gitignore | 11 +++++++++++ README.md | 42 +++++++++++++++++++++++++++++++++++++++++- docs/architecture.md | 21 +++++++++++++++++++++ docs/setup.md | 21 +++++++++++++++++++++ docs/ssh_test.png | Bin 0 -> 64502 bytes milestones.md | 14 ++++++++++++++ progress.md | 36 ++++++++++++++++++++++++++++++++++++ 7 files changed, 144 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 docs/architecture.md create mode 100644 docs/setup.md create mode 100644 docs/ssh_test.png create mode 100644 milestones.md create mode 100644 progress.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ab869f6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +__pycache__/ +*.pyc +.venv/ +.env +.vscode/ +.idea/ +reports/ +*.log +*.csv +*.sqlite +.DS_Store diff --git a/README.md b/README.md index ec3b49b..2f6a559 100644 --- a/README.md +++ b/README.md @@ -1 +1,41 @@ -# ECE490_officesense \ No newline at end of file +# ECE490 Team Project Repository + +## Team Information +- Team name: OfficeSense +- Team members: + - Kostas Drakontidis + +## Project Title +Smart Office Presence + +## Project Summary +This project presents the design and implementation of a Smart Office Presence system based on Bluetooth Low Energy (BLE) technology. The system aims to detect user presence at room level using pseudonymized BLE tags, while ensuring privacy through a privacy-by-design approach. The proposed architecture integrates BLE scanners and tags with edge computing capabilities to enable real-time presence detection and decision-making without relying entirely on cloud processing. + +## Objectives + +## Repository Structure +- `src/` → source code +- `docs/` → architecture, setup, extra documentation +- `data/` → datasets, logs, exported measurements +- `tests/` → tests +- `progress.md` → weekly progress log +- `milestones.md` → milestone evidence map +- `demo-evidence/` → screenshots, output snapshots, demo proof + +## Required Workflow +1. Create an Issue before starting a task +2. Work in a branch +3. Commit regularly with meaningful messages +4. Open a Pull Request +5. Merge into `main` +6. Update `progress.md` + +## Deliverables to maintain +- complete `README.md` +- weekly `progress.md` +- `docs/architecture.md` +- `milestones.md` +- demo evidence in `demo-evidence/` + +## Current Status +Update this section with a one-paragraph summary each week. diff --git a/docs/architecture.md b/docs/architecture.md new file mode 100644 index 0000000..d8fe5b4 --- /dev/null +++ b/docs/architecture.md @@ -0,0 +1,21 @@ +# System Architecture + +## Overview +Describe the project at a high level. + +## Components +- sensors / input devices +- processing node +- communication +- storage +- dashboard / app +- actuators / notifications + +## Data Flow +Describe how data moves through the system. + +## Decisions and Tradeoffs +Explain key design choices. + +## Validation Plan +Describe how you will test the system. diff --git a/docs/setup.md b/docs/setup.md new file mode 100644 index 0000000..9c19ae9 --- /dev/null +++ b/docs/setup.md @@ -0,0 +1,21 @@ +# Setup Guide + +## Prerequisites +List required hardware, software, services, and package versions. + +## Installation +```bash +python -m venv .venv +source .venv/bin/activate +pip install -r requirements.txt +``` + +## Run +```bash +python src/main.py +``` + +## Test +```bash +pytest +``` diff --git a/docs/ssh_test.png b/docs/ssh_test.png new file mode 100644 index 0000000000000000000000000000000000000000..65cbf1e27126ba81eee6665653cc0ba2fdb24b83 GIT binary patch literal 64502 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 F`(MMXPT~Ln literal 0 HcmV?d00001 diff --git a/milestones.md b/milestones.md new file mode 100644 index 0000000..342545c --- /dev/null +++ b/milestones.md @@ -0,0 +1,14 @@ +# Milestone Evidence Tracker + +| Week | Expected Deliverable | Evidence Link | Status | +|---|---|---|---| +| 1 | Repo setup, roles, architecture draft | | | +| 2 | Initial sensing / input handling | | | +| 3 | Communication layer | | | +| 4 | Data storage / logging | | | +| 5 | Basic analytics | | | +| 6 | Trend / state logic | | | +| 7 | Alerts / automation | | | +| 8 | Integration | | | +| 9 | Testing / optimization | | | +| 10 | Final demo-ready system | | | diff --git a/progress.md b/progress.md new file mode 100644 index 0000000..23ebf53 --- /dev/null +++ b/progress.md @@ -0,0 +1,36 @@ +# Weekly Progress Log + +Update this file every week. + +## Week 1 +### Completed +- Repository created +- Initial planning completed + +### In Progress +- Architecture draft +- Task assignment + +### Problems / Risks +- Example: hardware delay + +### Next Steps +- Finalize architecture +- Create first Issues + +### Team Contribution +- Student 1: +- Student 2: + +## Week 2 +### Completed + +### In Progress + +### Problems / Risks + +### Next Steps + +### Team Contribution +- Student 1: +- Student 2: