Skip to main content
Back to HomeWeb Application

Fish Trophy

A full-stack Romanian fishing platform: records, catches, and gear with unique embed IDs, MapLibre maps, E2E-encrypted messaging, integrated forum with custom BBCode, Supabase/Postgres with RLS and RPCs, and a production PWA.

20 technologies
24 features
Fish Trophy

About this project

Fish Trophy is a full-stack web platform for Romanian anglers: records, catches, map tooling, community forum, and admin surfaces.

Roots & responsibility

Romanian anglers deserved a credible place to log progress and compare personal bests without turning every fishery into a public pin drop. Fish Trophy treats fishing as a sport worth respect: celebrate skill, protect sensitive water, and give people vocabulary to care about rivers and lakes over years, not only on opening day.

Shareable proof, not just rows in a table

A catch or record is also a story. Stable references mean a moment can travel inside a conversation: drop a link in a thread and readers see the real card, not a screenshot of unknown origin. The point is portable honesty between anglers, not an exercise in database keys.

Why the map feels light

The map is built from vector tiles and structured data so the interface does not paint hundreds of independent DOM markers just to show hundreds of places. The bet is simple: first open should stay fast as the dataset grows, and panning should not stutter because the page is carrying the wrong abstraction.

One habit, many doors

Fishing is not only leaderboards. Discovery (species, shops, guides), daily use (messages, submissions), and occasional delight (a tiny in-browser game) all live in one product so people are not juggling five apps to stay close to the hobby they already love.

Forum as its own product

Discussion is not a bolt-on comment box beneath an article. The forum gets its own shell and navigation so categories, culture, and moderation can mature on their own timeline. That separation is deliberate: community product needs room to breathe without rewiring the whole home experience every time.

Governance, then scale

Where people debate fish and fisheries, trust is earned. Edits, reputation moves, and enforcement carry enough context that a future reader can understand what happened and why. Underneath that, reads are shaped for scale so a busy topic is not a waterfall of tiny database round trips. Concrete libraries, APIs, and admin tools are listed in Key features and Tech stack so this section can stay about values and architecture, not a second spec sheet.

Key features

Mapping & POI layers

  • MapLibre map with GeoJSON vector layers, 800+ POIs, filters, geolocation, and SEO
  • Privacy-first mapping: generalized zones only, no exact public spot publishing (WIP feedback welcome)
  • Layers: fishing locations, AJVPS offices, lodging, shops; location requests from users
  • Admin MapEditor: Google Places lookup, signed photo uploads, per-location card fields

Records, catalog & profiles

  • Unique IDs on records, catches, and gear for oEmbed-style forum embeds
  • Public profiles with stats, SEO, and sharing; authenticated tabs for records, catches, gear
  • Species catalog with search that respects Romanian diacritics
  • Record flows: filters, time grouping, object storage + proxy for images, detail + share modals

Forum, BBCode & feeds

  • Private messaging: E2E encryption in the browser, realtime delivery, unread badges
  • Integrated forum: separate shell, full category hierarchy, custom BBCode parser
  • BBCode: formatting, emoji, [quote] with post links, @mention, YouTube/Vimeo embeds
  • Runtime embeds: [record], [catch], [gear] resolved to live cards
  • Forum moderation: pinned/closed/solved states, reads, starred, search (tsvector), reports
  • Reputation system: eight power levels; likes with weighted multipliers from comment quality

Audit trail, search & RPCs

  • Audit logs for edits, reputation changes, and moderation actions with full provenance
  • Postgres RPCs for hot paths (e.g. topic + authors in one call)

Auth, legal & admin surfaces

  • Auth: email, Google OAuth, email confirmation, profile completion on first Google login
  • Account deletion with 30-day grace period and recovery flow
  • Legal: terms, privacy, cookies; cookie consent banner
  • In-app analytics for product events; admin dashboards with Recharts (traffic by hour/day/week/month)
  • Site admin: record moderation, users, map settings, reports, shop inquiries, DB backup
  • Forum admin: live dashboards, hierarchy CRUD, rules, roles, marketplace, launch flags

Themes, game & PWA

  • Light/dark themes; custom 404; fishing game at /fishing-game
  • Full PWA: manifest, production service worker, install prompt
Home: map, filters, and locations across Romania
Home: map, filters, and locations across Romania
Forum: categories, topic and post counts, last activity
Forum: categories, topic and post counts, last activity
Records & rankings: search, filters, leaderboards
Records & rankings: search, filters, leaderboards