Skip to content

Sp1r1tual/fishoria

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

234 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fishoria – A Fishing Simulator in Your Browser

Fishoria is not just another browser game. It is a highly interactive, state-of-the-art web-based fishing simulator, blending mesmerizing WebGL graphics with uncompromised gameplay realism.

Feel the adrenaline rush of fighting a trophy catch, carefully select your tackle, and adapt to changing weather conditions. Fishoria is designed to deliver a genuine fishing experience directly in your browser.


Fishoria


Why Will Fishoria Hook You From the First Minute?

Living Ecosystem & Advanced Fish AI Forget boring, predictable algorithms. The fish in Fishoria have unique behavior profiles-varying in aggression, curiosity, and mobility. They adapt to environmental shifts: seeking preferred depths, reacting to weather changes, and following strict time-of-day activity cycles. Outsmarting each species requires the right strategy and perfect timing.

The Ultimate Reeling Thrill This isn't just "click-to-catch". Our reeling mini-game calculates line tension physics, dynamic fish struggle forces, and the durability of every single piece of your tackle. Experience the depth of spinning where realistic retrieval techniques-jigging, stop-and-go, or steady pulling-directly dictate your success with predators. Pull too hard? Say goodbye to your favorite lure and the trophy.

Three Distinct Fishing Styles Float, feeder, or spinning? Each fishing method features unique physics and behavior. Watch the micro-dips of the float, observe the tension on the feeder quiver tip, or experiment with various spinning retrieval techniques.

A Dynamic, Breathing World Sun setting and the sky getting cloudy? Brace for rain! The weather completely alters ecosystem behavior, predator activity, and bite probabilities, creating a unique atmosphere accompanied by dynamic audio.

Deep Economy & Progression Start with a basic float rod, but as you progress-gain experience ($XP$), complete quests, earn in-game currency, and purchase professional gear in the shop. Don't forget maintenance: every epic struggle with a monster fish progressively wears down your arsenal!

Ecosystem Surprises Rewarding experiences are sometimes purely unexpected. Instead of a trophy carp, you might reel in an old boot or snag on an underwater branch. A complex quest system encourages you to explore every single corner of the lake.

Global Community & Real-time Interaction Fast and secure registration (including Google OAuth), cloud saving for your profile with custom avatar uploads (Supabase Storage), and detailed statistics. Connect with other anglers through a real-time Socket.io chat system featuring dynamic lake-based rooms, smart Redis-powered unread message synchronization, and live catch broadcasts that create a truly living, competitive atmosphere.

Full Immersion: Visuals & Audio We have polished every single detail: water droplets streaming down your screen, the iconic sound of the reel drag screaming when a fish pulls, and even meteor showers lighting up the night sky. The ambient sounds dynamically adapt to the weather.


Tech Stack

Client – Frontend Engine

Category Technology
UI Framework React 19 with React Compiler (auto-memoization)
Bundler Vite 8
Rendering PixiJS 8 – WebGL 2D graphics, particle systems
State Redux Toolkit – global game state
Data Fetching TanStack Query v5 – server state, caching
Routing React Router 7
i18n i18next
Forms React Hook Form
Math simplex-noise – procedural generation
Language TypeScript 5

Server – Backend Core (API & Online)

Category Technology
Framework NestJS 11
Real-time Socket.io – for multiplayer & synchronization
ORM Prisma 7 with @prisma/adapter-pg
Database PostgreSQL (Supabase)
Caching Redis (Upstash) – REST-based
Validation Zod 4 & nestjs-zod
Auth Passport.js – JWT, Google OAuth, Local
Mailing Nodemailer – Gmail SMTP
Language TypeScript 5

DevOps & Quality

Category Technology
Monorepo Run Concurrently – parallel dev
Hosting Vercel – client & server deployments
Git Hooks Husky – pre-commit automation
Lint Staged lint-staged – incremental linting
Linting ESLint 9 + Prettier
Unused Code Knip – dead export & dependency detection

Getting Started

Prerequisites

  • Node.js ≥ 18
  • Yarn (package manager)
  • PostgreSQL database (or Supabase account)
  • Redis instance (or Upstash account)

1. Clone & Install

git clone https://github.com/your-repo/fishoria.git
cd fishoria

# Install root dependencies (Husky, lint-staged, concurrently)
yarn install

# Install client dependencies
cd client && yarn install && cd ..

# Install main server dependencies
cd server && yarn install && cd ..

# Install online server dependencies
cd online_server && yarn install && cd ..

2. Configure Environment

# Client
cp client/.env.example client/.env

# Main Server
cp server/.env.example server/.env

# Online Server
cp online_server/.env.example online_server/.env

Edit the .env files with your credentials. See each directory's README for details.

3. Database Setup

cd server

# Apply migrations
yarn prisma:migrate

# Generate Prisma client
yarn prisma:generate

# Seed initial data (news, quests, achievements)
yarn prisma:seed

cd ../online_server
# Generate Prisma client for online server
yarn prisma:generate

4. Run in Development

The easiest way to run everything at once is using the root command:

yarn dev

This will simultaneously start:

  • Client dev server (localhost:5173)
  • Main API server (localhost:5000)
  • Online/Socket server (localhost:5001)

Available Scripts

Root (Monorepo)

Command Description
yarn dev Run Client, Server, and Online servers simultaneously
yarn translations:check Check i18n translation coverage
yarn prepare Install Husky git hooks

Client (/client)

Command Description
yarn dev Start Vite dev server
yarn build Lint + compile + production build
yarn preview Preview production build locally
yarn lint / lint:fix ESLint check / auto-fix
yarn format Format with Prettier
yarn convert Convert images to WebP
yarn knip Detect unused code

Main Server (/server)

Command Description
yarn dev Start in watch mode
yarn build Lint + compile + NestJS build
yarn start:prod Run production build
yarn lint / lint:fix ESLint check / auto-fix
yarn format Format with Prettier
yarn prisma:migrate Run database migrations
yarn prisma:generate Generate Prisma client
yarn prisma:seed Seed database
yarn prisma:studio Open Prisma Studio GUI
yarn knip Detect unused code

Online Server (/online_server)

Command Description
yarn dev Start in watch mode
yarn build Lint + compile + NestJS build
yarn lint / lint:fix ESLint check / auto-fix
yarn format Format with Prettier
yarn prisma:generate Generate Prisma client

Documentation

Document Description
Client README Frontend architecture, game engine, UI
Server README Backend API, all endpoints, setup
Online Server README Socket server for multiplayer features
In-Game Terminal Commands Debug shell commands reference
Server Internal Wiki 12 detailed module docs (auth, game, etc.)

License

This project is licensed under the License – see the LICENCE file for details.

About

Realistic browser fishing game. Dynamic weather, lifelike fish behavior, and real physics. Every cast, every catch is pure skill and strategy.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages