π Hack The Future 2025 β Gotta Catch βEm All!
Earlier today, I participated in Hack The Future 2025, organized by RMDY.
The challenge, βGotta Catch βEm All!β, asked us to build an AI-powered web application that could detect, register, and identify new species of sea life as part of an underwater exploration mission.
That idea became FishDex β a project that combines AI, secure web development, and a touch of creativity to map the unseen world beneath the surface.
We were proud to be nominated for our solution. Even though we didnβt take home a prize, the experience was incredibly rewarding and the day was packed with innovation, teamwork, and technical learning.
π§ Concept β What is FishDex?
FishDex is a smart web application designed to help users identify, log, and learn about fish species through an intuitive, mobile-friendly interface.
Users can upload an image of a fish, and the system β powered by AI β will recognize the species and display details like:
- Habitat and water type
- Average size and depth range
- Conservation status
- Regional data and fun facts
Each detection is stored securely and linked to a βdevice,β creating a personal, persistent fish collection.
βοΈ How It Works
When a user uploads an image, the system communicates with a secure backend API written in TypeScript (Bun + Hono) with MongoDB as the database.
I developed the backend logic and API connections, while Andy De Schuytener designed and built the frontend using HTML, CSS, and JavaScript.
The backend handles:
- Image analysis β detecting and classifying fish species via OpenAI Vision
- Database enrichment β checking and linking sightings to the userβs collection
- Data delivery β serving structured JSON responses for seamless frontend integration
We also implemented security controls:
- Proper CORS configuration
- Input validation and file sanitization
- Per-device data sandboxing
- Request validation and logging middleware
Even a fish app deserves secure design. π‘οΈ
π§© Under the Hood β Backend Architecture
The backend is a RESTful API under /api/..., built around three main entities:
- Device β represents a userβs context or device ID
- Fish β master data per species (name, environment, etc.)
- Device.fish[] β history of catches per device
Core Endpoints:
POST /api/device/registerβ register a deviceGET /api/device/:idβ retrieve device infoPOST /api/fish/uploadβ upload and detect a fishGET /api/fish/:deviceIdβ view all catchesGET /api/fish/image/:imagePathβ serve stored fish imagesPOST /api/chat/:deviceIdβ chat with AI about detected fish
π Image Upload Flow
When uploading:
- Frontend sends form-data β image + deviceId
- Backend validates and analyzes image via OpenAI Vision
- If fish detected β enriched with species info via AI
- Fish and metadata stored in MongoDB
- Response sent back with detection confidence and stored path
The image storage was implemented securely:
images are saved under ./uploads/fish-images/<deviceId>/<timestamp>.jpg, and served through a sanitized route to prevent path traversal.
We had one minor GET image path issue near the end of the hackathon, but the rest of the app worked perfectly end-to-end.
π¬ Chat Integration
One of our coolest features:
Users can chat with the AI about the fish theyβve discovered.
For example:
βIs this fish endangered?β
βDoes this species live in deep water?β
The backend aggregates fish data for that userβs device, builds a context prompt, and queries OpenAI for an informed answer.
π₯οΈ Frontend Overview
The frontend was intentionally lightweight β built from scratch in HTML, CSS, and vanilla JS.
It feels like a mobile app, with pages like:
- Home (recent catches)
- Upload
- Details
- Chat
- Gallery
Each page dynamically loads through a minimal client-side router, keeping the UX fast and smooth without frameworks.
API calls are centralized in fetcher.js, making it easy to maintain endpoints.
π Cybersecurity Meets Ecology
Our cybersecurity background shaped every decision:
- Sanitized file uploads to prevent malicious payloads
- Isolated device data for privacy
- Request validation at every step
- Consistent logging for traceability
The mindset is the same whether itβs a pentest or marine data β secure by design.
π The Bigger Picture
FishDex proves that security and innovation can coexist.
Even in a project about marine life, cybersecurity principles make the difference between a fun demo and a trustworthy system.
By combining AI, TypeScript, and ethical design, we created something educational, technically strong, and secure.
π₯ Showcase
Watch our short demo showing FishDex in action:
π https://youtube.com/shorts/YWHSsJYfOWw?feature=share
π₯ Team
- Backend & API Logic: Aaron Deceuninck
- Frontend & Design: Andy De Schuytener
- Organized by: RMDY at Hack The Future 2025
It was a day full of coding, learning, and creative exploration β and definitely not the last time Iβll mix AI with cybersecurity thinking.