Build a recommendation system with Flask & React—follow our simple step-by-step guide for quick integration and deployment.

Book a call with an Expert
Starting a new venture? Need to upgrade your web app? RapidDev builds application with your growth in mind.
// Import Flask and required modules
from flask import Flask, request, jsonify
import numpy as np // Used for mathematical operations
import pandas as pd // For data manipulation
app = Flask(**name**)
# Dummy dataset for demonstration
data = {
'user\_id': [1, 1, 2, 2, 3],
'item\_id': [101, 102, 101, 103, 104],
'rating': [5, 3, 4, 2, 5]
}
ratings\_df = pd.DataFrame(data)
def compute_recommendations(user_id):
// Simple content-based filter using average ratings (advanced logic would be used in real projects)
user_ratings = ratings_df[ratings_df['user_id'] == user\_id]
if user\_ratings.empty:
return []
user_mean = user_ratings['rating'].mean()
// Return items where rating is above user's mean rating
recommended = ratings_df[ratings_df['rating'] > user_mean]['item_id'].unique().tolist()
return recommended
@app.route('/api/recommendations', methods=['GET'])
def recommendations():
// Get user_id from query parameters e.g., /api/recommendations?user_id=1
user_id = request.args.get('user_id', type=int)
if not user\_id:
return jsonify({'error': 'User id missing'}), 400
rec_items = compute_recommendations(user\_id)
return jsonify({'user_id': user_id, 'recommendations': rec\_items})
if **name** == '**main**':
app.run(debug=True)
fetch API or libraries like axios to retrieve data from the Flask endpoint.
// Import React and hooks for managing state and lifecycle events
import React, { useState, useEffect } from 'react';
const RecommendationComponent = () => {
const [recommendations, setRecommendations] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const userId = 1; // Demo user id. In real applications, this would be dynamically set.
useEffect(() => {
// Fetch recommendations from Flask API
fetch(`http://localhost:5000/api/recommendations?user_id=${userId}`)
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok');
}
return response.json();
})
.then(data => {
setRecommendations(data.recommendations);
setLoading(false);
})
.catch(error => {
setError(error.toString());
setLoading(false);
});
}, [userId]);
if (loading) return Loading recommendations...;
if (error) return Error: {error};
return (
Your Recommendations
{recommendations.map(item => (
- Item ID: {item}
))}
);
};
export default RecommendationComponent;
// In your Flask app code, add the following:
from flask\_cors import CORS
CORS(app) // Enable CORS for all routes
import numpy as np
import pandas as pd
from sklearn.metrics.pairwise import cosine\_similarity
// Build user-item matrix
def build_user_item_matrix(ratings_df):
// Pivot table to build matrix; rows are users and columns are items
return ratings_df.pivot_table(index='user_id', columns='item_id', values='rating').fillna(0)
// Compute cosine similarity between users
def user_based_collaborative_filtering(user_id, ratings\_df):
user_item_matrix = build_user_item_matrix(ratings_df)
similarity_matrix = cosine_similarity(user_item_matrix)
similarity_df = pd.DataFrame(similarity_matrix,
index=user_item_matrix.index,
columns=user_item_matrix.index)
// Find top similar users
similar_users = similarity_df[user_id].sort_values(ascending=False)[1:4]
// Fetch items from similar users
recommended_items = ratings_df[ratings_df['user_id'].isin(similar_users.index)]['item_id'].unique().tolist()
return recommended\_items
From startups to enterprises and everything in between, see for yourself our incredible impact.
Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We’ll discuss your project and provide a custom quote at no cost.