diff --git a/README.md b/README.md index 917d84b..f0971b5 100644 --- a/README.md +++ b/README.md @@ -36,25 +36,134 @@ The end goal is to have the probe nodes collect soil moisture, soil temperature, This project is built on the following technologies: +- [NPM](https://www.npmjs.com/) +- [Node](https://nodejs.org/en) +- [Node](https://www.docker.com/) - [Angular](https://angular.dev/) - [.Net](https://dotnet.microsoft.com/en-us/download) - [XAIO ESP32-C6](https://wiki.seeedstudio.com/xiao_esp32c6_getting_started/) - [Eagle](https://www.autodesk.com/products/eagle/overview?term=1-YEAR&tab=subscription) - [Arduino](https://www.arduino.cc/) -### Installation +## Project Structures: - ```sh -docker build -t plantpal-client:latest . -docker image tag plantpal-client 192.168.1.193:5000/plantpal-client -docker push 192.168.1.193:5000/plantpal-client - ``` +- plant-browser: Front-end client. +- SoilMoistureAPI: Backend API. +- Eagle: PCB project for soil nodes. +- batteryValidationTest: Arduino project for testing batteries. +- soilReporterNode: Arduino project for probe notes to report and forward data to API. +- soilProbeNode: Arduino project for gathering plant information. - ```sh +## Requirement (Client and API) + +- Node: v22.12.0 +- NPM: v10.9.0 +- Docker: v27.4.0 + +## Requirement (Hardware) +- Arduino IDE: v10 + - WiFiManager + - Additional Boards: (https://espressif.github.io/arduino-esp32/package_esp32_index.json) +- XAIO ESP32C6 +- Soil Sensor 2.0 +- Miscellaneous electrical components + +## Installing for Local Development: + +### API: +You will need to modify a few things int he API project for local development. + +1) program.cs +```js +options.ListenAnyIP(80) --> options.ListenAnyIP(8000) +``` + +2) appsettings.json +```js +"DefaultConnection": "Data Source=app/data/SoilMoisture.db" --> "DefaultConnection": "Data Source=SoilMoisture.db" +``` + +Then just click "http" to run the API. + +## Install client dependencies: +From the client folder + +Install dependencies +```sh +npm install +``` + +Run the Client: +```sh +ng s +``` + +## Building Images: +Building images for runtime distrobution + +### API image: + +Build docker image +```sh docker build --no-cache -t plantpal-api:latest . +``` + +Tag image +```sh docker image tag plantpal-api 192.168.1.193:5000/plantpal-api +``` + +Push to registry +```sh docker push 192.168.1.193:5000/plantpal-api - ``` +``` + +### Client image: +Building images for runtime distrobution + +Build docker image +```sh +docker build -t plantpal-client:latest . +``` + +Tag image +```sh +docker image tag plantpal-client 192.168.1.193:5000/plantpal-client +``` + +Push to registry +```sh +docker push 192.168.1.193:5000/plantpal-client +``` + +### Running Docker Images: + +Create new docker network for the containers to communicate +```sh +docker network create soilmoisture_network +``` + +### Run API image + +Run API +```sh +docker run -d --name plantpal_api --network soilmoisture_network -p 8000:80 plantpal_api:latest +``` + +Run client image +```sh +docker run -d --name plantpal_client --network plantpal_network -p 3000:80 plantpal_client:latest +``` + +### Docker Compose: +optionally You can also use docker compose with the file at the root + +```sh +docker-compose up -d --build +``` + + + ## Roadmap - [X] Functional API diff --git a/SoilMoistureAPI/SoilMoisture.db b/SoilMoistureAPI/SoilMoisture.db new file mode 100644 index 0000000..0de02ec Binary files /dev/null and b/SoilMoistureAPI/SoilMoisture.db differ diff --git a/SoilMoistureAPI/SoilMoisture.db-shm b/SoilMoistureAPI/SoilMoisture.db-shm new file mode 100644 index 0000000..8a106cc Binary files /dev/null and b/SoilMoistureAPI/SoilMoisture.db-shm differ diff --git a/SoilMoistureAPI/SoilMoisture.db-wal b/SoilMoistureAPI/SoilMoisture.db-wal new file mode 100644 index 0000000..11b42ca Binary files /dev/null and b/SoilMoistureAPI/SoilMoisture.db-wal differ diff --git a/docker-compose.yml b/docker-compose.yml index 4dba554..5973fca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: context: ./SoilMoistureAPI dockerfile: Dockerfile - container_name: soilmoisture_api + container_name: plantpal_api ports: - "8000:80" # Host port 8000 maps to container port 80 (HTTP) volumes: @@ -14,20 +14,20 @@ services: - ASPNETCORE_URLS=http://+:80 - ConnectionStrings__DefaultConnection=Data Source=/app/data/SoilMoisture.db networks: - - soilmoisture_network + - plantpal_network restart: unless-stopped client: build: context: ./plant-browser dockerfile: Dockerfile - container_name: soilmoisture_client + container_name: plantpal_client ports: - "3000:80" # Host port 3000 maps to container port 80 (NGINX) depends_on: - api networks: - - soilmoisture_network + - plantpal_network restart: unless-stopped networks: diff --git a/plant-browser/nginx.conf b/plant-browser/nginx.conf index 9117d0d..d5c366d 100644 --- a/plant-browser/nginx.conf +++ b/plant-browser/nginx.conf @@ -28,7 +28,7 @@ http { # Proxy API Requests to ASP.NET Core API location /api/ { - proxy_pass http://soilmoisture_api:80/api/; + proxy_pass http://plantpal_api:80/api/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade';