Upload backend files for SuperKart

#4
by entorr - opened
Files changed (4) hide show
  1. Dockerfile +6 -14
  2. app.py +47 -0
  3. model.joblib +3 -0
  4. requirements.txt +5 -3
Dockerfile CHANGED
@@ -1,20 +1,12 @@
1
- FROM python:3.13.5-slim
2
 
3
  WORKDIR /app
4
 
5
- RUN apt-get update && apt-get install -y \
6
- build-essential \
7
- curl \
8
- git \
9
- && rm -rf /var/lib/apt/lists/*
10
 
11
- COPY requirements.txt ./
12
- COPY src/ ./src/
13
 
14
- RUN pip3 install -r requirements.txt
15
 
16
- EXPOSE 8501
17
-
18
- HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
19
-
20
- ENTRYPOINT ["streamlit", "run", "src/streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]
 
1
+ FROM python:3.9-slim
2
 
3
  WORKDIR /app
4
 
5
+ COPY requirements.txt .
6
+ RUN pip install --no-cache-dir -r requirements.txt
 
 
 
7
 
8
+ COPY . .
 
9
 
10
+ EXPOSE 7860
11
 
12
+ CMD ["python", "app.py"]
 
 
 
 
app.py ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import joblib
3
+ import pandas as pd
4
+ from flask import Flask, request, jsonify
5
+
6
+ # Initialize Flask app with a clear name
7
+ app = Flask("SuperKart Sales Forecaster")
8
+
9
+ # Load the trained model
10
+ model = joblib.load('model.joblib')
11
+
12
+ # Define a route for the home page (Health Check)
13
+ @app.route('/', methods=['GET'])
14
+ def home():
15
+ return "Welcome to the SuperKart Sales Forecasting API!"
16
+
17
+ # Define the prediction endpoint
18
+ @app.route('/predict', methods=['POST'])
19
+ def predict():
20
+ try:
21
+ # Get JSON data from the request
22
+ data = request.get_json()
23
+
24
+ # Convert input to pandas DataFrame
25
+ if isinstance(data, dict):
26
+ df = pd.DataFrame([data])
27
+ else:
28
+ df = pd.DataFrame(data)
29
+
30
+ # Make prediction
31
+ prediction = model.predict(df)
32
+
33
+ # Return the result as JSON
34
+ return jsonify({
35
+ 'status': 'success',
36
+ 'prediction': prediction.tolist()
37
+ })
38
+
39
+ except Exception as e:
40
+ return jsonify({
41
+ 'status': 'error',
42
+ 'message': str(e)
43
+ })
44
+
45
+ # Run the app on port 7860 for Hugging Face Spaces
46
+ if __name__ == '__main__':
47
+ app.run(host='0.0.0.0', port=7860)
model.joblib ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5f31600d3c9f8bfbfe6a09dd9a114a29b749b9c54d3b2d4012cec56fbbb8ede6
3
+ size 39747074
requirements.txt CHANGED
@@ -1,3 +1,5 @@
1
- altair
2
- pandas
3
- streamlit
 
 
 
1
+ flask
2
+ pandas==2.2.2
3
+ scikit-learn==1.6.1
4
+ joblib==1.4.2
5
+ numpy==2.0.2