Back to Projects
PraiaFinder
Next.js
FastAPI
Python
Tailwind CSS
Data Science
Real-time beach recommendation engine simplifying weather data into a 0-10 score.


Find the perfect beach in Portugal, every time.
📌 Project Overview
PraiaFinder is a real-time beach recommendation engine that solves the "where should we go?" problem. Instead of drowning users in raw meteorological data (knots, swell period, etc.), it aggregates complex forecasts into a simple 0-10 score based on your intent.
Context-Aware Scoring
The core innovation is an algorithm that changes based on what you want to do:
- 🏄 for Surfers: High waves and strong offshore winds = High Score.
- 🏖️ for Families: Calm waters, low wind, and warm temps = High Score.
🛠️ Tech Stack & Architecture
Frontend (User Experience)
- Next.js 14 (App Router): Server-side rendering for instant loads.
- Tailwind CSS: Fully responsive, mobile-first design.
- Framer Motion: Fluid animations for a premium feel.

Backend (Logic & Data)
- FastAPI (Python): High-performance async API.
- Custom ETL Pipeline:
- Concurrent Fetching: Uses
asyncioto query hundreds of beaches simultaneously without rate limits. - Smart Classification: Automatically detects if a beach is "Ocean" or "River" to apply the correct weather model.
- Caching: Minimizes external API calls for speed and cost efficiency.
- Concurrent Fetching: Uses
✨ Key Features
- Interactive Coast Map: Visualizes conditions across the entire Portuguese coastline.
- Smart Search: Filter by region, score, or specific beach features.
- Resilient System: Handles external API failures gracefully with retries and fallbacks.
🚀 Why I Built This
Living in Portugal, the weather varies drastically just a few kilometers apart. This project allowed me to solve a real-world problem while exploring advanced Python concurrency and building a polished React application.