Emmanuel Frimpong Asante commited on
Commit
c84994a
·
1 Parent(s): 2aeb5c4

update space

Browse files
.env ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # .env file
2
+
3
+ MONGO_URI="your_mongo_db_uri"
4
+ EMAIL_USER="your_email_username"
5
+ EMAIL_PASS="your_email_password"
.gitignore CHANGED
@@ -0,0 +1 @@
 
 
1
+ .venv
.idea/Generative_AI_with_poultry_disease_detection_system_v2.iml CHANGED
@@ -1,8 +1,13 @@
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <module type="PYTHON_MODULE" version="4">
3
  <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$" />
5
- <orderEntry type="inheritedJdk" />
 
 
6
  <orderEntry type="sourceFolder" forTests="false" />
7
  </component>
 
 
 
8
  </module>
 
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <module type="PYTHON_MODULE" version="4">
3
  <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <excludeFolder url="file://$MODULE_DIR$/.venv" />
6
+ </content>
7
+ <orderEntry type="jdk" jdkName="Python 3.12 (Generative_AI_with_poultry_disease_detection_system_v2)" jdkType="Python SDK" />
8
  <orderEntry type="sourceFolder" forTests="false" />
9
  </component>
10
+ <component name="PackageRequirementsSettings">
11
+ <option name="removeUnused" value="true" />
12
+ </component>
13
  </module>
.idea/git_toolbox_prj.xml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="GitToolBoxProjectSettings">
4
+ <option name="commitMessageIssueKeyValidationOverride">
5
+ <BoolValueOverride>
6
+ <option name="enabled" value="true" />
7
+ </BoolValueOverride>
8
+ </option>
9
+ <option name="commitMessageValidationEnabledOverride">
10
+ <BoolValueOverride>
11
+ <option name="enabled" value="true" />
12
+ </BoolValueOverride>
13
+ </option>
14
+ </component>
15
+ </project>
.idea/misc.xml CHANGED
@@ -3,5 +3,5 @@
3
  <component name="Black">
4
  <option name="sdkName" value="Python 3.12 (Generative_AI_with_poultry)" />
5
  </component>
6
- <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (Generative_AI_with_poultry)" project-jdk-type="Python SDK" />
7
  </project>
 
3
  <component name="Black">
4
  <option name="sdkName" value="Python 3.12 (Generative_AI_with_poultry)" />
5
  </component>
6
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (Generative_AI_with_poultry_disease_detection_system_v2)" project-jdk-type="Python SDK" />
7
  </project>
README.md CHANGED
@@ -8,4 +8,112 @@ pinned: false
8
  license: mit
9
  ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  license: mit
9
  ---
10
 
11
+ # 🐔 Poultry Farming Assistance and Management System
12
+
13
+ This project integrates both a **Poultry Farming Assistance System** and a **Poultry Management System**. The system supports farm management tasks like health management, to-do lists, inventory, and notifications, while also providing intelligent assistance for disease detection and recommendations using AI.
14
+
15
+ ## Project Features
16
+ 1. **User Registration/Login System**
17
+ 2. **Data Logging and Reporting (dashboards and exporting PDF and XLS)**
18
+ 3. **Health Management and Disease Detection**
19
+ 4. **Inventory Management**
20
+ 5. **Poultry Farming Assistance (AI-based disease detection and recommendations)**
21
+ 6. **Notification System via Email**
22
+
23
+ ## System Components
24
+
25
+ ### Poultry Farming Assistance System
26
+ - AI-based disease detection using machine learning models (e.g., `Final_Chicken_disease_model.h5`).
27
+ - Health monitoring and suggestions for poultry care.
28
+ - Fecal image analysis to detect common poultry diseases.
29
+ - Generate actionable insights based on poultry health data.
30
+
31
+ ### Poultry Management System
32
+ - **To-Do List Management**: Manage daily farm tasks and activities.
33
+ - **Inventory Management**: Track and manage feed, medicines, and other supplies.
34
+ - **Health Records**: Log poultry health issues, treatments, and disease outbreaks.
35
+ - **Group Management**: Farmers can join groups, and admins can create and share to-do lists across groups.
36
+ - **Reporting**: Generate reports on farm performance, health metrics, and more.
37
+
38
+ ## Use Cases
39
+ - **Poultry Farmer**: Can sign up, log in, access disease detection tools, complete to-do lists, view health reports, and receive notifications.
40
+ - **Poultry Farm Admin**: Can create and assign tasks, manage inventory, track group activities, and monitor health conditions across the farm.
41
+
42
+ ## 📋 Development To-Do Checklist
43
+
44
+ ### 1. Setup and Configuration
45
+ - [x] Set up a virtual environment (e.g., `venv`, `conda`) for the project.
46
+ - [x] Install necessary Python packages: `FastAPI`, `AdminLTE`, `MongoDB`, `TensorFlow`, `Keras`, `pymongo`, `transformers`, etc.
47
+ - [x] Configure MongoDB connection and test basic CRUD operations with MongoDB.
48
+ - [x] Set up environment variables for MongoDB URI, email credentials, and other sensitive data.
49
+
50
+ ### 2. Authentication System
51
+ - [ ] Build the user registration system (Poultry Farmer, Poultry Admin).
52
+ - [ ] Implement login and logout functionality using JWT.
53
+ - [ ] Set up password encryption (e.g., `bcrypt`) for secure storage.
54
+ - [ ] Implement session management and token validation.
55
+
56
+ ### 3. Poultry Farming Assistance System
57
+ - [ ] Integrate poultry disease detection model (`Final_Chicken_disease_model.h5`).
58
+ - [ ] Create an image preprocessing pipeline for disease detection.
59
+ - [ ] Build routes to upload and analyze poultry fecal images.
60
+ - [ ] Develop health-related notifications and treatment suggestions.
61
+ - [ ] Implement real-time health monitoring and alert system for farmers.
62
+
63
+ ### 4. To-Do List Management
64
+ - [ ] Create MongoDB schema for to-do lists (`todo_list.py`).
65
+ - [ ] Implement routes and controllers for farmers to view and complete to-do lists.
66
+ - [ ] Implement routes and controllers for admins to create and share to-do lists.
67
+ - [ ] Design **AdminLTE 4**-based UI for displaying and managing to-do lists.
68
+
69
+ ### 5. Data Logging and Reporting
70
+ - [ ] Develop a data logging system for tracking activities.
71
+ - [ ] Set up reporting dashboards using **AdminLTE** (instead of Shiny).
72
+ - [ ] Implement export functionality for data as PDF and XLS.
73
+ - [ ] Integrate data visualization tools for real-time reporting and insights.
74
+
75
+ ### 6. Health Management
76
+ - [ ] Create MongoDB schema for storing poultry health records (`health_record.py`).
77
+ - [ ] Integrate the poultry disease detection model with health management.
78
+ - [ ] Develop an **AdminLTE** dashboard for tracking health issues and disease management.
79
+ - [ ] Implement health-related notifications and treatment suggestions for farmers.
80
+
81
+ ### 7. Inventory Management
82
+ - [ ] Build MongoDB schema for inventory management (`inventory.py`).
83
+ - [ ] Develop routes for adding, updating, and deleting inventory items.
84
+ - [ ] Create an **AdminLTE** dashboard for tracking inventory levels and status.
85
+ - [ ] Set up alerts for low stock levels via email notifications.
86
+
87
+ ### 8. Notification System
88
+ - [ ] Set up an email service for sending notifications to users (e.g., `smtplib` or `nodemailer`).
89
+ - [ ] Implement notification triggers for the following:
90
+ - [ ] To-do list completion.
91
+ - [ ] Health alerts and treatment recommendations.
92
+ - [ ] Inventory updates and low stock alerts.
93
+ - [ ] Test email notification system for various scenarios.
94
+
95
+ ### 9. Group Management
96
+ - [ ] Create MongoDB schema for group management (`group.py`).
97
+ - [ ] Allow farm admins to create and delete groups.
98
+ - [ ] Allow poultry farmers to join groups.
99
+ - [ ] Implement group sharing functionalities (e.g., sharing to-do lists across groups).
100
+
101
+ ### 10. Testing and Debugging
102
+ - [ ] Write unit tests for each module (authentication, to-do lists, health management, inventory, notifications).
103
+ - [ ] Conduct integration testing to ensure all components work together.
104
+ - [ ] Debug issues related to MongoDB transactions, AdminLTE dashboards, and TensorFlow model predictions.
105
+
106
+ ### 11. Deployment
107
+ - [ ] Deploy the system on Hugging Face Spaces.
108
+ - [ ] Configure the production environment (e.g., environment variables, security settings).
109
+ - [ ] Set up a continuous integration/continuous deployment (CI/CD) pipeline for automatic testing and deployment.
110
+
111
+ ---
112
+
113
+ ## Future Enhancements (Backlog)
114
+ - [ ] Add mobile app support for poultry farmers using `Flutter`.
115
+ - [ ] Implement AI-based inventory prediction for restocking supplies.
116
+ - [ ] Enable multi-language support for different regions.
117
+ - [ ] Introduce additional disease models for enhanced health management.
118
+
119
+ ---
app.py CHANGED
@@ -1,7 +1,48 @@
1
- from fastapi import FastAPI
 
 
 
 
2
 
 
 
 
 
3
  app = FastAPI()
4
 
 
 
 
 
 
 
 
 
 
 
5
  @app.get("/")
6
  def greet_json():
7
  return {"Hello": "World!"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, Depends, HTTPException
2
+ from pymongo import MongoClient
3
+ from dotenv import load_dotenv
4
+ import os
5
+ import uvicorn
6
 
7
+ # Load environment variables
8
+ load_dotenv()
9
+
10
+ # Initialize FastAPI app
11
  app = FastAPI()
12
 
13
+ # MongoDB Configuration
14
+ MONGO_URI = os.getenv("MONGO_URI")
15
+ client = MongoClient(MONGO_URI)
16
+ db = client.get_database("poultry_management")
17
+
18
+ # Dependency to get the MongoDB database
19
+ def get_db():
20
+ return db
21
+
22
+ # Root route
23
  @app.get("/")
24
  def greet_json():
25
  return {"Hello": "World!"}
26
+
27
+ # Example route for testing MongoDB connection
28
+ @app.get("/test_db")
29
+ def test_db_connection(db=Depends(get_db)):
30
+ try:
31
+ db.test.insert_one({"test": "connection"})
32
+ return {"status": "Connection Successful", "message": "Document inserted!"}
33
+ except Exception as e:
34
+ raise HTTPException(status_code=500, detail=f"Database connection error: {e}")
35
+
36
+ # Placeholder for authentication routes
37
+ # from routes.authentication import auth_router # Uncomment when routes are ready
38
+ # app.include_router(auth_router, prefix="/auth")
39
+
40
+ # Placeholder for other routes
41
+ # from routes.todo import todo_router # Uncomment when routes are ready
42
+ # from routes.health import health_router # Uncomment when routes are ready
43
+ # app.include_router(todo_router, prefix="/todos")
44
+ # app.include_router(health_router, prefix="/health")
45
+
46
+ # Main entry point for running the application
47
+ if __name__ == "__main__":
48
+ uvicorn.run("app:app", host="0.0.0.0", port=7860, reload=True)
requirements.txt CHANGED
@@ -1,6 +1,7 @@
1
- fastapi
2
- uvicorn[standard]
3
- requests
4
- sentencepiece
5
- torch
6
- transformers
 
 
1
+ fastapi~=0.115.4
2
+ passlib~=1.7.4
3
+ pydantic~=2.9.2
4
+ pymongo~=4.9.2
5
+ pyjwt~=2.9.0
6
+ python-dotenv~=1.0.1
7
+ uvicorn~=0.32.0
services/utils.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # services/utils.py
2
+
3
+ import os
4
+ from dotenv import load_dotenv
5
+ from pymongo import MongoClient
6
+ from pymongo.errors import ConnectionFailure, OperationFailure
7
+
8
+ # Load environment variables from .env
9
+ load_dotenv()
10
+
11
+ # MongoDB Connection URI
12
+ MONGO_URI = os.getenv("MONGO_URI")
13
+
14
+ # Initialize MongoDB client and database connection
15
+ class MongoDB:
16
+ def __init__(self, uri: str, db_name: str):
17
+ self.client = MongoClient(uri)
18
+ self.db = self.client[db_name]
19
+
20
+ def test_connection(self) -> str:
21
+ """Tests MongoDB connection by performing a basic operation."""
22
+ try:
23
+ self.db.test_collection.insert_one({"status": "connection_test"})
24
+ return "Connection successful: Test document inserted!"
25
+ except (ConnectionFailure, OperationFailure) as e:
26
+ return f"Database connection error: {e}"
27
+
28
+ def get_collection(self, collection_name: str):
29
+ """Fetches a MongoDB collection."""
30
+ return self.db[collection_name]
31
+
32
+ # Instantiate MongoDB with URI and database name
33
+ mongo_instance = MongoDB(uri=MONGO_URI, db_name="poultry_management")
34
+
35
+ def test_db_connection():
36
+ """Tests the database connection and prints result."""
37
+ result = mongo_instance.test_connection()
38
+ print(result)
static/index.html ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>Title</title>
6
+ </head>
7
+ <body>
8
+
9
+ </body>
10
+ </html>
static/script.js ADDED
File without changes
static/style.css ADDED
File without changes