diff --git a/README.md b/README.md index 323ab630..9e96886a 100644 --- a/README.md +++ b/README.md @@ -9,27 +9,6 @@ > > The website will display the data that the arduino will send to the database and the users will be able to generate AI reports for their needs. -#### To test the website, here are some initial default data stored in the database: - -#### Admin Users: -> Email: riyad@gmail.com, Password: password - -> Email: nabiha@gmail.com, Password: password - -#### Provider Users: -> Email: cdaoud@gmail.com, Password: password - -> Email: nour@gmail.com, Password: password - -> Email: taha@gmail.com, Password: password - -#### Client Users: -> Email: gheeda@gmail.com, Password: password - -> Email: joe@gmail.com, Password: password - -> Email: sara@gmail.com, Password: password -
@@ -38,63 +17,33 @@ ### ER Diagram
- +
-
- -## System Design - Database Schema Overview -The Amp Intelligence platform utilizes a relational database schema designed to support a scalable, secure, and modular architecture for intelligent energy monitoring and user management. The schema is optimized for clarity in data ownership, role-based access, and historical data collection, ensuring robust data integrity and efficient query performance. - -### Core Entities & Relationships -### 1) Users - -- Centralized user management is facilitated through the Users table, which supports multiple user roles: Clients, Providers, and Admins. This enables clear segregation of access rights and responsibilities. - -- The schema supports optional direct mapping between Users and Slaves, ensuring traceability of device ownership per client. - -- The design ensures flexibility to support role-based data visualization and management in both the platform’s dashboard and APIs. - -### 2) Masters & Slaves - -- The Masters table represents the core energy monitoring controllers, typically installed and managed by provider entities (linked via user_id). - -- Each Master can manage multiple Slaves, which represent individual monitored assets or devices. The Slaves are associated back to the Masters and can also link directly to Users (clients) via the slave_id field in the Users table, ensuring traceability of monitored assets. - -### 3) Metrics & Lines - -- The Metrics table serves as the historical data ledger, storing essential telemetry such as voltage, current, power, and energy per Slave and Master device, organized on a monthly basis for performance optimization. - -- The Lines table provides additional granularity by storing per-phase measurements (L1, L2, L3) and is directly linked to the Masters. This supports detailed line-level diagnostics, crucial for industrial-grade energy analytics. +### Component Diagram -### 4) Contact Forms - -- User-generated communication is handled by the Contact_Forms table, ensuring that feedback, support requests, and queries are traceable to specific users. - -- This supports seamless user support workflows and ensures accountability. - -### 5) Design Principles -- Scalability & Modularity: The schema supports multi-tenant architecture, where Providers can manage multiple Masters and Clients can own specific Slaves. This allows the platform to scale horizontally by simply extending these relationships. - -- Data Integrity & Traceability: All critical records are timestamped (created_at, updated_at), supporting full audit trails. Foreign key relationships ensure data consistency across all levels. +
+ +
-- Performance Considerations: Metrics are decoupled into Metrics and Lines, optimizing for both high-frequency telemetry capture and in-depth line-level analysis without query performance degradation. +### Flow Diagram -### Summary -This ERD lays the foundation for Amp Intelligence’s core platform services by enabling structured, efficient, and secure energy data management while providing flexibility for future expansion, including integrations with third-party platforms, advanced reporting engines, and AI-driven anomaly detection systems. +
+ +
-
+

### The Most Remarkable Features -- Seamless IoT Data Ingestion: The system integrates with ESP32 microcontrollers to capture real-time energy consumption data from client devices. This data is securely transmitted and stored in the platform's centralized database, ensuring accurate and continuous monitoring of power usage. +- Seamless IoT Data Ingestion: The system captures and securely stores real-time energy consumption data from client devices using ESP32 microcontrollers. -- AI-Powered Consumption Forecasting for Providers: Leveraging advanced AI models, the platform provides energy providers with predictive analytics based on historical consumption patterns. These insights enable providers to anticipate client power demand, enhance load management, and optimize resource allocation. +- AI-Powered Consumption Forecasting: Advanced AI models analyze historical patterns to help energy providers anticipate demand and optimize resource allocation. -- Personalized AI Optimization Plans for Clients: The system offers clients intelligent, data-driven power usage plans. By analyzing past consumption behaviors, the AI recommends actionable strategies to optimize energy usage, reduce costs, and promote sustainable consumption habits. +- Personalized AI Optimization Plans: Clients receive intelligent, data-driven strategies to optimize energy usage, reduce costs, and promote sustainability based on their consumption behaviors.

@@ -143,3 +92,24 @@ This ERD lays the foundation for Amp Intelligence’s core platform services by | ![Landing](./readme/demo/1440x1024.png) | ![fsdaf](./readme/demo/1440x1024.png) | ![fsdaf](./readme/demo/1440x1024.png) |

+ +#### To test the website, here are some initial default data stored in the database: + +#### Admin Users: +> Email: riyad@gmail.com, Password: password + +> Email: nabiha@gmail.com, Password: password + +#### Provider Users: +> Email: cdaoud@gmail.com, Password: password + +> Email: nour@gmail.com, Password: password + +> Email: taha@gmail.com, Password: password + +#### Client Users: +> Email: gheeda@gmail.com, Password: password + +> Email: joe@gmail.com, Password: password + +> Email: sara@gmail.com, Password: password diff --git a/amp-client/src/Components/CommonComponents/ActionButton/ActionButton.jsx b/amp-client/src/Components/CommonComponents/ActionButton/ActionButton.jsx index a1aef0a6..eab96027 100644 --- a/amp-client/src/Components/CommonComponents/ActionButton/ActionButton.jsx +++ b/amp-client/src/Components/CommonComponents/ActionButton/ActionButton.jsx @@ -1,20 +1,36 @@ import "./styles.css"; -const ActionButton = ({ backgroundColor, color, text, width, onClick, margin }) => { - const buttonStyle = { - backgroundColor: backgroundColor || "#000000", - color: color || "#FFFFFF", - borderRadius: "6px", - padding: "10px 20px", - fontWeight: 500, - fontSize: "20px", - border: "none", - cursor: "pointer", - width: width || "auto", - margin: margin || "0px", - }; +const ActionButton = ({ + backgroundColor, + color, + text, + width, + onClick, + margin, + className = "", +}) => { + const useInlineStyles = !className; - return ; + const buttonStyle = useInlineStyles + ? { + backgroundColor: backgroundColor || "#000000", + color: color || "#FFFFFF", + borderRadius: "6px", + padding: "10px 20px", + fontWeight: 500, + fontSize: "20px", + border: "none", + cursor: "pointer", + width: width || "auto", + margin: margin || "0px", + } + : { width, margin }; + + return ( + + ); }; export default ActionButton; diff --git a/amp-client/src/Pages/ClientPages/ClientPowerPlan/ClientPowerPlan.jsx b/amp-client/src/Pages/ClientPages/ClientPowerPlan/ClientPowerPlan.jsx index 1a3dcaac..e70b9edd 100644 --- a/amp-client/src/Pages/ClientPages/ClientPowerPlan/ClientPowerPlan.jsx +++ b/amp-client/src/Pages/ClientPages/ClientPowerPlan/ClientPowerPlan.jsx @@ -1,6 +1,7 @@ import "./styles.css"; import { useState } from "react"; import { useSelector } from "react-redux"; +import ActionButton from "../../../Components/CommonComponents/ActionButton/ActionButton"; import ClientPowerPlanService from "../Services/ClientPowerPlanService/ClientPowerPlanService"; const ClientPowerPlan = () => { @@ -11,60 +12,80 @@ const ClientPowerPlan = () => { const { fetchPowerPlanReport } = ClientPowerPlanService(); return ( -
-

Power Plan

+
+
+

Monthly Energy Report

+

+ Personalized power optimization plan for your devices +

+
+ + {reportData && !loading && ( +
+ console.log("Download triggered")} + width="250px" + margin="20px auto" + /> +
+ )} {!reportData && !loading && ( -
-

Click On the Button to generate the power plan for this month

- + width="250px" + margin="20px auto 0" + />
)} {loading ? ( -
-
+
+
+

Generating your plan...

) : ( reportData && ( -
-

Report Summary

-

{reportData.summary}

+
+
+

Summary

+

{reportData.summary}

+
-
-

Voltage Insights

-

{reportData.voltageInsights}

-
+
+
+

Voltage Insights

+

{reportData.voltageInsights}

+
+
+

Power Insights

+

{reportData.powerInsights}

+
+
+

Energy Insights

+

{reportData.energyInsights}

+
+
-
-

Power Insights

-

{reportData.powerInsights}

-
- -
-

Energy Insights

-

{reportData.energyInsights}

-
- -
+

Recommendations

    - {reportData.recommendations - .split("\n") - .map((recommendation, index) => ( -
  • {recommendation}
  • - ))} + {reportData.recommendations.split("\n").map((rec, index) => ( +
  • {rec}
  • + ))}
-
- -
- -
+
) )} diff --git a/amp-client/src/Pages/ClientPages/ClientPowerPlan/styles.css b/amp-client/src/Pages/ClientPages/ClientPowerPlan/styles.css index 422cf273..aafea274 100644 --- a/amp-client/src/Pages/ClientPages/ClientPowerPlan/styles.css +++ b/amp-client/src/Pages/ClientPages/ClientPowerPlan/styles.css @@ -1,119 +1,136 @@ -.client-power-plan-container { - padding: 20px; +.client-container { + padding: 2rem; + background-color: #f0f4f8; + max-width: 900px; + margin: auto; + border-radius: 12px; + margin-top: 30px; } -.generate-report-section { - background-color: #f9f9f9; - padding: 30px; - border-radius: 8px; +.client-header { text-align: center; - margin-bottom: 20px; + color: #2c3e50; +} + +.client-title { + font-size: 2rem; + font-weight: bold; } -.generate-report-section p { +.client-subtitle { + font-size: 1.1rem; color: #555; - margin-bottom: 15px; } -.generate-button { - background-color: #ffa726; - color: white; - padding: 10px 20px; - border: none; - border-radius: 5px; - cursor: pointer; - font-size: 1rem; - transition: background-color 0.3s ease; +.client-generate-card { + text-align: center; + margin-top: 2rem; + background: #fff; + padding: 1.5rem; + border-radius: 1rem; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.05); } -.generate-button:hover { - background-color: #f19626; +.client-loading-overlay { + text-align: center; + margin-top: 2rem; } -.report-display { - background-color: white; - padding: 20px; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +.client-spinner { + border: 4px solid #e0e0e0; + border-top: 4px solid #f9a43a; + /* border-top: 4px solid #3498db; */ + border-radius: 50%; + width: 30px; + height: 30px; + animation: spin 1s linear infinite; + margin: auto; + margin-bottom: 1rem; } -.report-display h3 { - color: #333; - margin-bottom: 15px; - border-bottom: 2px solid #eee; - padding-bottom: 10px; +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +.client-download-top{ + text-align: center; } -.insight-section { - margin-bottom: 20px; - padding: 15px; - border: 1px solid #eee; - border-radius: 5px; +.client-report-card { + background: #ffffff; + padding: 2rem; + border-radius: 1rem; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); + margin-top: 2rem; } -.insight-section h4 { - color: #3f51b5; - margin-top: 0; - margin-bottom: 10px; +.client-summary-section, +.client-recommendation-section { + margin-top: 1.5rem; + background-color: #f9f9f9; + padding: 1rem 1.5rem; + border-left: 4px solid #007bff; + border-radius: 0.5rem; +} + +.client-insight-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1rem; + margin-top: 1.5rem; } -.recommendations-section { - margin-top: 25px; +.client-insight-box { + background-color: #f1f5fb; + padding: 1rem; + border-radius: 0.5rem; } -.recommendations-section h4 { - color: #2e7d32; - margin-bottom: 10px; +.client-insight-box h4, +.client-summary-section h3, +.client-recommendation-section h4 { + color: #333; + margin-bottom: 0.75rem; } -.recommendations-section ul { +.client-recommendation-section ul { list-style-type: none; - padding-left: 20px; + padding-left: 1.25rem; } -.recommendations-section li { - margin-bottom: 5px; - color: #555; +.client-recommendation-section li { + margin-bottom: 0.5rem; + line-height: 1.6; } -.download-button { +/* Generate Action Button */ +.client-generate-action-button { background-color: #f9a43a; - color: white; - padding: 10px 20px; + color: #ffffff; border: none; - border-radius: 5px; + padding: 0.75rem 1.5rem; + border-radius: 8px; cursor: pointer; - font-size: 1rem; - margin-top: 20px; transition: background-color 0.3s ease; } -.download-button:hover { +.client-generate-action-button:hover { background-color: #f19626; } -.spinner-container { - display: flex; - justify-content: center; - align-items: center; - height: 150px; -} - -.spinner { - width: 40px; - height: 40px; - border: 4px solid rgba(0, 0, 0, 0.1); - border-left-color: #f9a43a; - border-radius: 50%; - animation: spin 1s linear infinite; +/* Download Action Button */ +.client-download-action-button { + background-color: #f9a43a; + color: #ffffff; + border: none; + padding: 0.75rem 1.5rem; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease; } -.centering-button { - align-items: center; +.client-download-action-button:hover { + background-color: #f19626; } - -@keyframes spin { - to { - transform: rotate(360deg); - } -} \ No newline at end of file diff --git a/amp-client/src/Pages/ProviderPages/ProviderPowerPrediction/ProviderPowerPrediction.jsx b/amp-client/src/Pages/ProviderPages/ProviderPowerPrediction/ProviderPowerPrediction.jsx index b5e0845e..2a49d6f5 100644 --- a/amp-client/src/Pages/ProviderPages/ProviderPowerPrediction/ProviderPowerPrediction.jsx +++ b/amp-client/src/Pages/ProviderPages/ProviderPowerPrediction/ProviderPowerPrediction.jsx @@ -1,96 +1,94 @@ import "./styles.css"; import { useState } from "react"; -import { useDispatch, useSelector } from "react-redux"; -import { toggleLoad } from "../../../Redux/Slices/loadingSlice"; -import ProviderPowerPredictionService from "../Services/ProviderPowerPredictionService/ProviderPowerPredictionService"; +import { useSelector } from "react-redux"; +import ActionButton from "../../../Components/CommonComponents/ActionButton/ActionButton"; +import ProviderPredictionService from "../Services/ProviderPowerPredictionService/ProviderPowerPredictionService"; const ProviderPowerPrediction = () => { - const [predictionData, setPredictionData] = useState(null); + const [reportData, setReportData] = useState(null); const loading = useSelector((state) => state.loading.loadingState); - const dispatch = useDispatch(); + const userId = useSelector((state) => state.user.id); - const fetchPowerPrediction = async () => { - dispatch(toggleLoad(true)); - setPredictionData(null); - - try { - const data = await ProviderPowerPredictionService.fetchPowerPrediction(); - setPredictionData(data); - } catch (error) { - console.error("Error fetching power prediction:", error.message); - setPredictionData(null); - } finally { - dispatch(toggleLoad(false)); - } - }; + const { fetchProviderPredictionReport } = ProviderPredictionService(); return ( -
-
-

Power Prediction

- - {!predictionData && !loading && ( -
-

Click the button to generate the power prediction.

- -
- )} +
+
+

Provider Power Forecast

+

+ Smart metrics-based prediction to optimize your grid efficiency +

+
- {loading ? ( -
-
-
- ) : ( - predictionData && ( -
-

Prediction Summary

- {predictionData.summary ? ( -

{predictionData.summary}

- ) : ( -

No summary available.

- )} - - {predictionData.voltageInsights && ( -
-

Voltage Insights

-

{predictionData.voltageInsights}

-
- )} + {reportData && !loading && ( +
+ console.log("Download triggered")} + width="250px" + margin="20px auto" + /> +
+ )} - {predictionData.powerInsights && ( -
-

Power Insights

-

{predictionData.powerInsights}

-
- )} + {!reportData && !loading && ( +
+

+ Analyze 10 months of aggregated metrics to forecast your upcoming + energy demand and resource allocation. +

+ fetchProviderPredictionReport(userId, setReportData)} + width="250px" + margin="20px auto 0" + /> +
+ )} - {predictionData.energyInsights && ( -
-

Energy Insights

-

{predictionData.energyInsights}

-
- )} + {loading ? ( +
+
+

Generating prediction...

+
+ ) : ( + reportData && ( +
+
+

Summary

+

{reportData.summary}

+
- {predictionData.recommendations && ( -
-

Recommendations

-
    - {predictionData.recommendations - .split("\n") - .map((rec, idx) => ( -
  • {rec}
  • - ))} -
-
- )} +
+
+

Voltage Trends

+

{reportData.voltageInsights}

+
+
+

Power Load

+

{reportData.powerInsights}

+
+
+

Energy Patterns

+

{reportData.energyInsights}

+
+
- -
- ) - )} -
+
+

Optimization Strategies

+
    + {reportData.recommendations.split("\n").map((rec, index) => ( +
  • {rec}
  • + ))} +
+
+
+ ) + )}
); }; diff --git a/amp-client/src/Pages/ProviderPages/ProviderPowerPrediction/styles.css b/amp-client/src/Pages/ProviderPages/ProviderPowerPrediction/styles.css index 1f93ef37..089f87c0 100644 --- a/amp-client/src/Pages/ProviderPages/ProviderPowerPrediction/styles.css +++ b/amp-client/src/Pages/ProviderPages/ProviderPowerPrediction/styles.css @@ -1,123 +1,136 @@ -/* ProviderPowerPrediction.css */ -.provider-power-prediction-container { - display: flex; - flex-direction: row; +.provider-container { + padding: 2rem; + background-color: #f9fafe; + max-width: 900px; + margin: auto; + border-radius: 12px; + margin-top: 30px; + margin-left: 300px; } -.main-content-title { - color: #333; - margin-bottom: 20px; +.provider-header { + text-align: center; + color: #2a2a2a; } -.generate-report-section { - background-color: #f9f9f9; - padding: 30px; - border-radius: 8px; +.provider-title { + font-size: 2rem; + font-weight: bold; +} + +.provider-subtitle { + font-size: 1.1rem; + color: #666; +} + +.provider-generate-card { text-align: center; - margin-bottom: 20px; - margin-right: 20px; + margin-top: 2rem; + background: #ffffff; + padding: 1.5rem; + border-radius: 1rem; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.05); } -.generate-report-section p { - color: #555; - margin-bottom: 15px; +.provider-loading-overlay { + text-align: center; + margin-top: 2rem; } -.generate-button { - background-color: #f9a43a; - color: white; - padding: 10px 20px; - border: none; - border-radius: 5px; - cursor: pointer; - font-size: 1rem; - transition: background-color 0.3s ease; +.provider-spinner { + border: 4px solid #e0e0e0; + border-top: 4px solid #f9a43a; + border-radius: 50%; + width: 30px; + height: 30px; + animation: spin 1s linear infinite; + margin: auto; + margin-bottom: 1rem; } -.generate-button:hover { - background-color: #f19626; +@keyframes spin { + to { + transform: rotate(360deg); + } } -.report-display { - background-color: white; - padding: 20px; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +.provider-download-top { + text-align: center; } -.report-display h3 { - color: #333; - margin-bottom: 15px; - border-bottom: 2px solid #eee; - padding-bottom: 10px; +.provider-report-card { + background: #ffffff; + padding: 2rem; + border-radius: 1rem; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.1); + margin-top: 2rem; } -.insight-section { - margin-bottom: 20px; - padding: 15px; - border: 1px solid #eee; - border-radius: 5px; +.provider-summary-section, +.provider-recommendation-section { + margin-top: 1.5rem; + background-color: #f0f8f4; + padding: 1rem 1.5rem; + border-left: 4px solid #28a745; + border-radius: 0.5rem; } -.insight-section h4 { - color: #3f51b5; - margin-top: 0; - margin-bottom: 10px; +.provider-insight-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 1rem; + margin-top: 1.5rem; } -.recommendations-section { - margin-top: 25px; +.provider-insight-box { + background-color: #eefcf4; + padding: 1rem; + border-radius: 0.5rem; } -.recommendations-section h4 { - color: #2e7d32; - margin-bottom: 10px; +.provider-insight-box h4, +.provider-summary-section h3, +.provider-recommendation-section h4 { + color: #2f2f2f; + margin-bottom: 0.75rem; } -.recommendations-section ul { +.provider-recommendation-section ul { list-style-type: none; - padding-left: 20px; + padding-left: 1.25rem; } -.recommendations-section li { - margin-bottom: 5px; - color: #555; +.provider-recommendation-section li { + margin-bottom: 0.5rem; + line-height: 1.6; } -.download-button { +/* Generate Action Button */ +.provider-generate-action-button { background-color: #f9a43a; - color: white; - padding: 10px 20px; + color: #ffffff; border: none; - border-radius: 5px; + padding: 0.75rem 1.5rem; + border-radius: 8px; cursor: pointer; - font-size: 1rem; - margin-top: 20px; transition: background-color 0.3s ease; } -.download-button:hover { +.provider-generate-action-button:hover { background-color: #f19626; } -.spinner-container { - display: flex; - justify-content: center; - align-items: center; - height: 150px; -} - -.spinner { - width: 40px; - height: 40px; - border: 4px solid rgba(0, 0, 0, 0.1); - border-left-color: #f9a43a; - border-radius: 50%; - animation: spin 1s linear infinite; +/* Download Action Button */ +.provider-download-action-button { + background-color: #f9a43a; + color: #ffffff; + border: none; + padding: 0.75rem 1.5rem; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s ease; } -@keyframes spin { - to { - transform: rotate(360deg); - } +.provider-download-action-button:hover { + background-color: #f19626; } diff --git a/amp-client/src/Pages/ProviderPages/Services/ProviderPowerPredictionService/ProviderPowerPredictionService.js b/amp-client/src/Pages/ProviderPages/Services/ProviderPowerPredictionService/ProviderPowerPredictionService.js index 6685ed0f..b3a768f4 100644 --- a/amp-client/src/Pages/ProviderPages/Services/ProviderPowerPredictionService/ProviderPowerPredictionService.js +++ b/amp-client/src/Pages/ProviderPages/Services/ProviderPowerPredictionService/ProviderPowerPredictionService.js @@ -1,15 +1,29 @@ // ProviderPowerPredictionService.js +import { useDispatch } from "react-redux"; import axiosInstance from "../../../../Axios/axios"; +import { toggleLoad } from "../../../../Redux/Slices/loadingSlice"; + +const ProviderPowerPredictionService = () => { + const dispatch = useDispatch(); + + const fetchProviderPredictionReport = async (userId, setReportData) => { + dispatch(toggleLoad(true)); + setReportData(null); -const ProviderPowerPredictionService = { - async fetchPowerPrediction() { try { - const response = await axiosInstance.get("/providers/providerReport"); - return response.data.data; + const response = await axiosInstance.get( + `/providers/providerReport/${userId}` + ); + setReportData(response.data.data); } catch (error) { - throw new Error(error.response?.data?.message || error.message); + console.error("Error fetching provider prediction report:", error); + setReportData(null); + } finally { + dispatch(toggleLoad(false)); } - }, + }; + + return { fetchProviderPredictionReport }; }; export default ProviderPowerPredictionService; diff --git a/amp-laravel/app/Utils/ClientPrompt.php b/amp-laravel/app/Utils/ClientPrompt.php index ea1ac645..e3b0c183 100644 --- a/amp-laravel/app/Utils/ClientPrompt.php +++ b/amp-laravel/app/Utils/ClientPrompt.php @@ -23,22 +23,49 @@ public static function clientBuildPromptFromMetrics($slaveId): string })->implode("\n"); $prompt = <<implode("\n"); $prompt = << + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/readme/demo/Amp_Intelligence.png b/readme/demo/Amp_Intelligence.png deleted file mode 100644 index 16e0985d..00000000 Binary files a/readme/demo/Amp_Intelligence.png and /dev/null differ diff --git a/readme/demo/Component Diagram 2.0.png b/readme/demo/Component Diagram 2.0.png new file mode 100644 index 00000000..91151697 Binary files /dev/null and b/readme/demo/Component Diagram 2.0.png differ diff --git a/readme/demo/Component Diagram Light 2.0.png b/readme/demo/Component Diagram Light 2.0.png new file mode 100644 index 00000000..0a923a67 Binary files /dev/null and b/readme/demo/Component Diagram Light 2.0.png differ diff --git a/readme/demo/Component Diagram Light.png b/readme/demo/Component Diagram Light.png new file mode 100644 index 00000000..c2382474 Binary files /dev/null and b/readme/demo/Component Diagram Light.png differ diff --git a/readme/demo/Component Diagram.drawio b/readme/demo/Component Diagram.drawio new file mode 100644 index 00000000..fadafe9e --- /dev/null +++ b/readme/demo/Component Diagram.drawio @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/readme/demo/Component Diagram.png b/readme/demo/Component Diagram.png new file mode 100644 index 00000000..897fcc0d Binary files /dev/null and b/readme/demo/Component Diagram.png differ diff --git a/readme/demo/ERD.png b/readme/demo/ERD.png new file mode 100644 index 00000000..108dcc28 Binary files /dev/null and b/readme/demo/ERD.png differ diff --git a/readme/demo/Flow Diagram Light.png b/readme/demo/Flow Diagram Light.png new file mode 100644 index 00000000..bada205f Binary files /dev/null and b/readme/demo/Flow Diagram Light.png differ diff --git a/readme/demo/Flow Diagram.drawio b/readme/demo/Flow Diagram.drawio new file mode 100644 index 00000000..86610f63 --- /dev/null +++ b/readme/demo/Flow Diagram.drawio @@ -0,0 +1,575 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/readme/demo/Flow Diagram.png b/readme/demo/Flow Diagram.png new file mode 100644 index 00000000..4eaaf612 Binary files /dev/null and b/readme/demo/Flow Diagram.png differ