Locate the News - Project Plan (Graduation Project)1. IntroductionProject Name: Locate the NewsObjective: To develop a web application that visually represents news articles on a map based on their geographical relevance. The goal is to allow users to explore news within a spatial context rather than a linear feed.Current Status: The project has been initiated with a solid monorepo file structure. The core focus is on fetching data from RSS feeds, extracting locations using NLP, and serving this data via a FastAPI backend to the front-end.2. Technology StackComponentTechnologyPurposeBackend (API)Python, FastAPIBuilding a fast and asynchronous API.Data CollectionPython (feedparser)Processing and fetching RSS feeds.NLP (Location Extraction)spaCyIdentifying place names (GPE, LOC) within article text.GeocodingNominatim (geopy)Converting place names into latitude/longitude coordinates.DatabasePostgreSQL (SQLite for initial development)Persistent storage for articles and event data.Front-End (Web)React (JSX), Leaflet.jsInteractive map-based user interface.StylingTailwind CSS (within React)Fast and responsive UI design.3. Module Goals and Detailed PlanA. Backend Development (Python / FastAPI)ModuleGoalStatusPriorityData Fetcher (rss_fetcher.py)Periodically fetch RSS data from defined sources (e.g., BBC News).To be startedHighNLP Processor (nlp_processor.py)Extract LOC and GPE entities from news title and content.To be startedHighGeocoder (geocoder.py)Convert extracted place names to coordinates using Nominatim.To be startedHighAPI Endpoints (events.py)Serve the list of geolocated news/events in a format suitable for the map (/api/v1/events).To be startedHighDatabase (database.py, models.py)Store article data (title, content, URL, location, timestamp).To be startedHighB. Frontend Development (React / Leaflet)ComponentGoalStatusPriorityMap View (MapView.jsx)Initialize the Leaflet map and visualize coordinates received from the API.To be startedHighMarker & Popup (EventPopup.jsx)Show a summary and source of the news when a map marker is clicked.To be startedHighSidebar (Sidebar.jsx)A panel to display the detailed article when a user selects an event on the map.To be startedMediumAPI Integration (events.js)Call the Backend API and integrate data into the front-end state.To be startedHigh4. Resources and ConstraintsNews Sources: Initially, only BBC News RSS will be used. The Anadolu Agency (AA) is excluded from the scope.Language Constraint: The initial prototype will only process English news articles.Geocoding: Nominatim usage limits must be respected. Caching (e.g., Redis) will be implemented if heavy load is anticipated.Event Clustering: Grouping similar articles (event_builder) will be addressed in a later phase (post-MVP). In the initial stage, each article will have its own marker.5. Next Steps (Sprint 1)Environment Setup: Create requirements.txt and set up the virtual environment.DB Connection: Establish the basic connection for SQLite/PostgreSQL and draft models.py.API Foundation: Ensure main.py and the /health endpoint are functional.Data Fetching Test: Test and parse sample data from the BBC RSS feed using rss_fetcher.py.