GraphMate / app.py
Advay-Singh's picture
Rename main.py to app.py
2c44e5f verified
from backend.solver import LinearSolverEngine
from backend.linear_graph import LinearGraphPlotter
from flask import Flask, request, jsonify, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html")
@app.route("/ask", methods=["POST"])
def ask():
question = request.form.get("question", "").strip()
if not question:
return jsonify({"error": "Please provide a question."}), 400
if "=" not in question:
return jsonify({"error": "Please enter a valid equation with '='"}), 400
try:
lhs, _, rhs = question.partition("=")
engine = LinearSolverEngine(lhs, rhs, n=3)
steps, solutions, var = engine.run()
input_values = [p[0] for p in solutions]
output_values = [p[1] for p in solutions]
graph_plotter = LinearGraphPlotter(input_values, output_values)
graph = graph_plotter.plot()
response_text = (
f"Let's solve your equation {lhs} = {rhs} step by step:\n\n"
f"{steps}\n"
f"Graph shows how solution changes with respect to '{var}'."
)
return jsonify({
"answer": response_text,
"graph": graph,
"variable": str(var),
"input_values": input_values,
"output_values": output_values,
"solutions": [
{"input": str(p[0]), "output": str(p[1])}
for p in solutions
]
})
except Exception as e:
print(f"Error: {e}")
return jsonify({
"error": "An error occurred while processing your request."
}), 500
if __name__ == "__main__":
app.run(host="0.0.0.0", port=7860, debug=True)