Full-stack Amharic News Summarizer with Python and Next.js
# Real-Time Amharic News Summarizer (Full-Stack)
**Author:** ABKodes
**Date:** 2025-11-22
**Status:** Completed
## 📖 Project Overview
This is a full-stack web application designed to fetch real-time news articles, process them using Natural Language Processing (NLP) to generate concise summaries, and display them in a clean, responsive web interface.
The system is built with a clear separation of concerns:
- **Backend (Python/FastAPI)**: Handles data ingestion from external APIs and performs text summarization.
- **Frontend (Next.js/React)**: Consumes the backend API and renders the news feed.
---
## 🛠️ Tech Stack
| Component | Technology | Reason for Choice |
|-----------|------------|-------------------|
| **Backend** | Python, FastAPI | Fast execution, automatic documentation, and rich ecosystem for NLP (NLTK/Sumy). |
| **Frontend** | Next.js (React), Tailwind CSS | Server-side rendering capabilities, component-based architecture, and rapid styling. |
| **Processing** | Sumy (TextRank) | Efficient extractive summarization algorithm that doesn't require heavy ML models. |
| **External API** | NewsAPI.org | Reliable source for fetching global news content. |
---
## 🏗️ System Architecture & Data Flow
The system follows a linear data pipeline:
```mermaid
graph LR
A[Client Browser] -- GET /summaries --> B[Python Backend]
B -- Request News --> C[External NewsAPI]
C -- JSON Data --> B
B -- Run TextRank --> B[Summarization Logic]
B -- Structured JSON --> A
A -- Renders UI --> User
```
**Data Flow Steps:**
1. **Request**: Frontend requests `/summaries`.
2. **Ingestion**: Backend calls NewsAPI to get raw articles.
3. **Processing**: Backend applies `TextRank` algorithm to the article body.
4. **Response**: Backend sends a simplified JSON object (Title, Summary, Keywords) to the Frontend.
5. **Display**: Frontend renders the cards.
---
## 🚀 Setup & Run Instructions
### Prerequisites
- Python 3.8+
- Node.js 18+
- A free API Key from NewsAPI.org (Already c …