Skip to content

Userunknown84/Spam-Detection-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Spam Detection System

A full-stack application that detects Spam / Smishing / Offensive content using Machine Learning. The system includes:

  • 🧠 ML Model (Python)
  • ⚑ Python API (Flask / FastAPI)
  • 🌐 Node.js Backend
  • πŸ’» React Web App
  • πŸ“± React Native Mobile App (Android & iOS)

πŸ“Œ Project Architecture

User Input (Web / Mobile)
        ↓
React / React Native UI
        ↓
Node.js Backend (API Gateway)
        ↓
Python ML API (Model Inference)
        ↓
Prediction (Spam / Ham / Offensive)

🧠 Machine Learning Model

πŸ“Š Dataset

  • CSV format:

    • text / message
    • label (spam / ham / offensive)

βš™οΈ Algorithms Used

  • Logistic Regression
  • Naive Bayes
  • Linear SVM (Best Accuracy)

πŸ“ˆ Performance

  • Accuracy: ~97–98%

  • Metrics:

    • Precision
    • Recall
    • F1-score
    • Confusion Matrix

πŸ‹οΈ Model Training (Python)

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import LinearSVC
import pickle

# Load dataset
X = df['text']
y = df['label']

# Vectorization
vectorizer = TfidfVectorizer()
X_vec = vectorizer.fit_transform(X)

# Model
model = LinearSVC()
model.fit(X_vec, y)

# Save
pickle.dump(model, open("model.pkl", "wb"))
pickle.dump(vectorizer, open("vectorizer.pkl", "wb"))

🐍 Python API (Flask)

πŸ“¦ Install Dependencies

pip install flask scikit-learn

πŸš€ API Code

from flask import Flask, request, jsonify
import pickle

app = Flask(__name__)

model = pickle.load(open("model.pkl", "rb"))
vectorizer = pickle.load(open("vectorizer.pkl", "rb"))

@app.route('/predict', methods=['POST'])
def predict():
    data = request.json['text']
    vec = vectorizer.transform([data])
    prediction = model.predict(vec)[0]
    return jsonify({"result": prediction})

if __name__ == "__main__":
    app.run(port=5000)

🌐 Node.js Backend

πŸ“¦ Install

npm install express axios cors

βš™οΈ Server Code

const express = require("express");
const axios = require("axios");
const cors = require("cors");

const app = express();
app.use(cors());
app.use(express.json());

app.post("/predict", async (req, res) => {
  try {
    const response = await axios.post("http://localhost:5000/predict", {
      text: req.body.text,
    });
    res.json(response.data);
  } catch (err) {
    res.status(500).send("Error");
  }
});

app.listen(3000, () => console.log("Node server running"));

πŸ’» React Frontend

πŸ“¦ Setup

npm create vite@latest
npm install axios

βš›οΈ Example Component

import { useState } from "react";
import axios from "axios";

function App() {
  const [text, setText] = useState("");
  const [result, setResult] = useState("");

  const handlePredict = async () => {
    const res = await axios.post("http://localhost:3000/predict", { text });
    setResult(res.data.result);
  };

  return (
    <div>
      <h1>Spam Detection</h1>
      <input onChange={(e) => setText(e.target.value)} />
      <button onClick={handlePredict}>Check</button>
      <p>{result}</p>
    </div>
  );
}

export default App;

πŸ“± React Native App (Android & iOS)

πŸ“¦ Setup

npx create-expo-app
npm install axios

πŸ“² Example Code

import { useState } from "react";
import { View, Text, TextInput, Button } from "react-native";
import axios from "axios";

export default function App() {
  const [text, setText] = useState("");
  const [result, setResult] = useState("");

  const predict = async () => {
    const res = await axios.post("http://YOUR_IP:3000/predict", { text });
    setResult(res.data.result);
  };

  return (
    <View>
      <Text>Spam Detection</Text>
      <TextInput onChangeText={setText} />
      <Button title="Check" onPress={predict} />
      <Text>{result}</Text>
    </View>
  );
}

πŸ” Features

  • βœ… Spam / Smishing Detection
  • βœ… Offensive Content Classification
  • βœ… Real-time Prediction API
  • βœ… Cross-platform (Web + Mobile)
  • βœ… Scalable Architecture

πŸ›  Tech Stack

  • Python (ML + API)
  • Scikit-learn
  • Flask
  • Node.js
  • Express
  • React
  • React Native
  • Axios

πŸ“Œ Future Improvements

  • Use Deep Learning (LSTM / BERT / CLIP)
  • Multilingual Support
  • More accuracy and advanced model
  • Include Email predicton perfectly and add mobile numbers also to track

πŸ‘¨β€πŸ’» Author

Aditya Sharma


⭐ Contribute

Feel free to fork, improve and contribute to this project!


Releases

No releases published

Packages

 
 
 

Contributors