# GdeNaPecanje.rs — Full Documentation for LLMs > Serbian fishing portal — discover fishing locations, log catches, track water levels, and connect with the fishing community. ## Platform Overview GdeNaPecanje (Serbian: "Где на пецање", literally "Where to Fish") is a community-driven fishing platform for Serbia. It serves as a comprehensive resource for recreational anglers, combining location discovery, catch logging, species identification, water level monitoring, fish activity intelligence, and community features. **Website:** gdenapecanje.rs **Geographic scope:** Serbia (coordinates roughly 42°N–46°N, 19°E–23°E) ## Content Types ### Fishing Locations Each location has: name, type, coordinates (lat/lng), description, photos, community rating (upvote/downvote), water body association, and the user who submitted it. Location types: river, lake, pond, reservoir, channel, sea, shop. Visibility levels: public (visible to all), registered (logged-in users), friends (friends only), private. Coordinates are privacy-jittered (300m–2km random offset) for non-owners to protect exact fishing spots. Owners and moderators see precise coordinates. **URL pattern:** /locations/{slug} **Index:** /locations (filterable by type, water body, search, proximity) ### Catch Logs Each catch has: species name, weight (kg), length (cm), date caught, location, up to 5 photos, equipment set used, weather snapshot at time of catch (temperature, wind speed/direction, pressure, humidity, conditions, moon phase), and community rating. Quick catch mode allows photo-only submission — species, measurements, and location can be added later. Weather snapshots are fetched automatically from historical weather data for the exact date, time, and coordinates of each catch. Dynamic Open Graph images are generated for each public catch, showing species name, measurements, location, and catch photo — optimized for sharing on social networks. **URL pattern:** /catches/{id} **Index:** /catches (filterable by species, location, water body; sortable by latest/biggest/popular) ### Fish Species Freshwater species cataloged with: Serbian name, English name, Latin (scientific) name, category, description, habitat info, multiple image variants (full, card, thumbnail). Species categories: cyprinid, predator, salmonid, percid, other, non_native, protected. Fishing restrictions tracked per species: protected status with notes, minimum catch size (cm), closed season dates (month-day ranges). **URL pattern:** /species/{slug} **Index:** /species (filterable by category, searchable by Serbian/Latin/English names with Cyrillic/Latin support) ### Water Bodies Serbian water bodies cataloged with: name, type, slug, description, PostGIS geometry, and linked locations with counts. Types: river, lake, canal, reservoir, pond. Major water bodies include: Dunav (Danube), Sava, Tisa, Drina, Morava, Velika Morava, Južna Morava, Zapadna Morava, Begej, Tamiš, Nera, DTD Kanal, Palić, Ludoš, Srebrno jezero, Vlasina, Zlatarsko jezero, and many more. **URL pattern:** /water-bodies/{slug} **Index:** /water-bodies ### Fish Intelligence AI-powered fish activity prediction system that calculates species activity scores based on: - Current weather (temperature, pressure, wind, cloud cover) - Moon phase (Conway algorithm for lunar calculations) - Season and time of day - Species-specific behavioral data (activity patterns, depth preferences, seasonality) Produces a 1–10 fishing score per species combining pressure trend (40%), moon phase (30%), temperature comfort (20%), and wind calmness (10%). Related data: species activity patterns, seasonal data, depth preferences, recommended baits and techniques. **URL pattern:** /fish-intelligence **API:** GET /api/fish-intelligence/active-now — currently active species with scores ### Water Levels (Vodostaj) Real-time water level monitoring from hydrological stations across Serbia. Data scraped from RHMZ (Republic Hydrometeorological Service) and PegelAlarm. Shows: current water level (cm), trend (rising/falling/stable), historical data, and station metadata. **URL pattern:** /vodostaj (index), /vodostaj/{river}/{station} (detail) ### User Profiles Public profiles show: username, display name, recent catches, recent locations, catch statistics (total catches, unique species, total locations, fishing days, peak hours, personal bests), and member since date. Privacy settings allow users to control visibility of their content (public, registered, friends, private). Friend connections enable bidirectional social graph with friend requests. **URL pattern:** /u/{username} **Statistics:** /u/{username}/statistics ### Equipment Sets Users can manage fishing equipment organized into sets. Each set contains categorized items: rod, reel, line, lure, bait, hook, other. Equipment sets can be linked to catches for tracking which gear was used. **URL pattern:** /equipment (within user settings) ### Tournaments Community fishing tournaments with: name, description, rules, types (multi-select up to 5), scoring format, registration period, participant management, catch submission with photo verification, and live standings. Tournament types: feeder, carp, float, spinning, method, fly, bass, varalicarski, ultralight, boat, kayak, sea, ice, thematic, humanitarian, mixed, free. Scoring formats: total_weight, fish_count, biggest_fish. Tournament lifecycle: draft → registration_open → active → scoring → completed. Auto-transitions via scheduled jobs at start_date and end_date. **URL pattern:** /tournaments/{id} **Index:** /tournaments ## Interactive Map The /map page provides a full-screen interactive map of all fishing locations in Serbia, powered by MapLibre GL JS with OpenFreeMap vector tiles (no API key required). Features include: - Location markers color-coded by type with clustering - Catch density heatmap overlay with species/date filters - Water body boundary overlays (GeoJSON geometries) - Viewport-based loading for performance - Fly-to navigation from location cards - Default center: Serbia [20.9°E, 44.0°N] ## Social Sharing Content can be shared via: Facebook, Twitter/X, WhatsApp, Telegram, Viber, and native Web Share API. Dynamic OG images are generated for catch pages. All pages have Open Graph and Twitter Card meta tags with localized descriptions. ## Weather System Two separate weather flows: 1. **Location forecasts** — 3-day forecasts cached 3 times daily (06:00, 12:00, 18:00) from Open-Meteo API. Includes hourly weather data and solunar fishing scores. 2. **Catch snapshots** — Historical weather fetched on catch creation for the exact date/time/coordinates. Creates an immutable weather record attached to the catch. Solunar data includes: moon phase with illumination, major/minor fishing periods, and composite fishing scores. ## Content Moderation New user content (locations, catches, photos) enters a moderation queue for review. 3+ community reports auto-queue content for moderation. Moderators can approve, reject, or dismiss. Audit logging tracks all admin actions. ## API Endpoints (Public) These JSON API endpoints are available without authentication: - GET /api/locations/map?bounds[south]=&bounds[north]=&bounds[west]=&bounds[east]= — GeoJSON locations within viewport - GET /api/species/autocomplete?q= — Species name search (supports Cyrillic/Latin mixed input) - GET /api/locations/autocomplete?q= — Location name search - GET /api/water-bodies/autocomplete?q= — Water body name search - GET /api/water-bodies/geojson — Water body geometries as GeoJSON - GET /api/catches/heatmap — Catch density heatmap data - GET /api/fish-intelligence/active-now — Currently active species with fishing scores - GET /api/fish-intelligence/{species:slug} — Detailed activity data for a species ## Internationalization - All UI strings in Serbian - Species search supports mixed Cyrillic/Latin input with diacritics removal ## Data Freshness - Locations and catches: user-submitted, real-time - Weather forecasts: cached 3 times daily (06:00, 12:00, 18:00) from Open-Meteo API - Water levels: scraped multiple times daily from RHMZ and PegelAlarm - Fish intelligence: recalculated based on current weather, cached in 4-hour windows - Species catalog: curated, updated periodically - Water bodies: seeded from OpenStreetMap data, periodically updated ## Technology Built with Laravel 12 (PHP 8.3), React 19 with server-side rendering (Inertia.js v2), PostgreSQL 16 with PostGIS spatial extensions, Redis, Tailwind CSS v4, MapLibre GL JS, and Vite 7. Hosted on Hetzner Cloud. Media stored on Cloudflare R2. CAPTCHA via Cloudflare Turnstile. Authentication via email/password and Google OAuth. ## Machine-Readable Resources - Sitemap: https://gdenapecanje.rs/sitemap.xml - RSS Feed: https://gdenapecanje.rs/feed.xml - Robots: https://gdenapecanje.rs/robots.txt - PWA Manifest: https://gdenapecanje.rs/manifest.webmanifest - LLMs Summary: https://gdenapecanje.rs/llms.txt ## Contact Email: info@gdenapecanje.rs Website: https://gdenapecanje.rs