foundly.
01 · A QUICK QUESTION
THINK ABOUT YOUR LAST TIME

Have you ever lost
something at university?

🔑 Your keys?👛 Your wallet?🪪 Your student card?

Where did you look first?

How did you know where to go?

Foundly · KMUTNB Bangkok01 / 15
foundly.
02 · THE FACEBOOK SEARCH
THE SEARCH BEFORE FOUNDLY

Lost your keys.
Now what?

You post in a Facebook group.
Then you wait for the right person.

Your post competes with newer posts.
👀The finder may never see it.
📍You may still need to ask where it is.

A useful post can be easy to miss.

Foundly · KMUTNB Bangkok · Live product demo02 / 15
foundly.
03 · ASKING AROUND
THE OTHER WAY TO SEARCH

Ask here.
Walk there.
Ask again.

You check a counter.
Then another office.
Then ask someone nearby.

Each visit takes time.
You still do not know who has it.
🚪You need to reach the right place.
CounterAnother officeAsk again

AI-generated illustration · Fictional people and location

Foundly · KMUTNB Bangkok · Live product demo03 / 15
foundly.
04 · MEET FOUNDLY
MEET YOUR SOLUTION

Meet
Foundly.

Check first. Then go.

Scattered postsOne searchable place
Unclear locationA reported map pin
Repeated questionsChat and a clear meetup
Open the live app ↗

Check reported items anywhere with internet access.

Screens and technical details for review →

Actual Foundly screen · Reported items, not live tracking

Foundly · KMUTNB Bangkok · Live product demo04 / 15
foundly.
REFERENCE · FOR REVIEW

Two needs.
One clear map.

🤲Found items — help find the owner.
🔎Lost items — ask others to help.
Search by item, category, date or area.
Open map-only mode. Tap an emoji.

Lost-item pins can show a likely loss location
or the last place the owner remembers.

Actual app screens · Demo data · Click to enlarge

Foundly · KMUTNB Bangkok · Live product demo05 / 15
foundly.
REFERENCE · FOR REVIEW

A useful post.
Four simple steps.

1Choose lost or found.
2Add details, photos and an emoji.
3Choose the date and map location.
4Review contacts, then publish.
Open the post form ↗

Up to three photos · Found-item posts need a photo.
Review any public contact details before publishing.

Actual app screens · Demo data · Click to enlarge

Foundly · KMUTNB Bangkok · Live product demo06 / 15
foundly.
REFERENCE · FOR REVIEW

See the details.
Find a possible match.

🖼️Open photos, dates, location and status.
Share the post or use listed contacts.
🧩See possible matches and the reasons.
💬Start a chat or a private claim.
Open the keys post ↗

Matches compare category, color, dates and distance.
People still check ownership before a return.

Actual app screens · Demo data · Click to enlarge

Foundly · KMUTNB Bangkok · Live product demo07 / 15
foundly.
REFERENCE · FOR REVIEW

Two people.
One conversation.

AFinder — the person holding the item.
BOwner — the person asking for it.
Your messages on the right. Theirs on the left.
🔔Photos, unread badges and message status.
Open the wallet chat ↗

Each private conversation belongs to a post.
Ownership details stay inside the conversation.

A · Finder
B · Owner

Same conversation · Two accounts · Tested in two browsers

Foundly · KMUTNB Bangkok · Live product demo08 / 15
foundly.
REFERENCE · FOR REVIEW

Agree on one place.
Then get directions.

📍Pick a map point and a clear landmark.
🗓️Choose a future meeting time.
🤝The other person agrees or suggests a change.
Open the route in Google Maps.
Open the meeting point ↗

Where the item was found
can be different from where you meet.

Actual app screens · Demo data · Click to enlarge

Foundly · KMUTNB Bangkok · Live product demo09 / 15
foundly.
REFERENCE · FOR REVIEW

Back in the
right hands.

1The owner sends private identifying details.
2The finder reviews and accepts the claim.
3Both people confirm the handover.
Returned items leave the active map.

A lost-item owner can also mark a post resolved,
including a return arranged outside Foundly.

Prepared returned example · No reset needed

Foundly · KMUTNB Bangkok · Live product demo10 / 15
foundly.
REFERENCE · FOR REVIEW

Less searching.
A clearer way home.

👤Account, profile and password settings.
📋Edit posts, close them and view return history.
🛡️Report, block, or remove a chat from your list.
🌐Use the same service on phone or browser.
Open the profile ↗

Check online. Contact the finder. Plan your visit.

View the technical appendix →

Actual app screens · Demo data · Click to enlarge

Foundly · KMUTNB Bangkok · Live product demo11 / 15
foundly.
REFERENCE · FOR REVIEW

The stack behind Foundly

Technical reference for the instructor. Read after the live app demonstration.

🖥️

Web interface

React · Vite · TypeScript
Tailwind CSS + custom CSS
React Router · TanStack Query

🗺️

Maps and location

Leaflet · OpenStreetMap tiles
Emoji pins and map clusters
On-request GPS · Google Maps links

📱

Installed iPhone app

Expo · React Native · WebView
Shares the web interface
Installed with Xcode on iPhone 15

⚙️

API and chat updates

NestJS · REST /api/v1
Socket.IO update events
Server-side access and data checks

🗃️

Database and images

PostgreSQL · Prisma
Sharp resizing and metadata removal
Persistent image storage

☁️

Delivery and testing

Docker Compose · VPS
Nginx · HTTPS · Backups
Playwright + API integration tests

Stack · Workflow · Scope and evidence12 / 15
foundly.
REFERENCE · FOR REVIEW

Different devices. Shared data.

📱

Phone

Read posts or send a message

💻

Another browser

See the post or receive the reply

HTTPS · NGINX · VPS

NestJS API

Check identity and access.
Validate data and state.
Save before confirming success.

/api/v1 · Socket.IO
🗃️

PostgreSQL

Accounts, posts, messages,
claims and meetings

🖼️

Persistent images

Public post images
Access-controlled private images

Message flow: Send with a message ID → Check room membership → Save to the database → Confirm → Notify the other person
After a disconnect: Fetch missing messages and retry using the same ID to avoid duplicate saves.
Stack · Workflow · Scope and evidence13 / 15
foundly.
REFERENCE · FOR REVIEW

From a report to a return

01 / POST

Report an item

FOUND or LOST
Photos, category, date, location
Starts as OPEN

02 / DISCOVER

Find a lead

Area, category and date filters
Clusters based on zoom
Suggested opposite-type posts

03 / CLAIM

Check ownership

Private two-person room
Identifying details
One accepted claimant at a time

04 / RETURN

Meet and confirm

Agree on a place and time
ARRANGING while returning
Both confirm → RETURNED

Other paths: Cancel where allowed · Restart a cancelled claim in the same room · Resolve a LOST post after recovery
Core data: User · Session · Post · PostImage · ContactChannel · Place · Conversation · Message · Claim · Meeting · Block · Report

The reported item location and the private meeting location are separate records.

Stack · Workflow · Scope and evidence14 / 15
foundly.
REFERENCE · FOR REVIEW

Ready for a pilot. Room to grow.

Available now

✓ Accounts and protected sessions
✓ Posts, images, chat and meeting pins
✓ Private claims and return confirmation
✓ Reports, blocking and role-based review
✓ HTTPS, persistent storage and backups

Current limits

• Internet is needed for shared data.
• Unreported items cannot be shown.
• There is no continuous GPS tracking.
• No push alerts while the app is closed.
• More physical-device testing is needed.

Recent presentation checks: Two accounts in Chromium and WebKit, live message delivery, map links, form screens and profile screens.
Earlier project evidence: API access checks, browser flows and isolated backup/restore tests. Not all tests were rerun for this deck.
Stack · Workflow · Scope and evidence15 / 15

4 opening slides + 11 reference slides

← → Navigate · F Full screen · N Speaker notes · O Overview · Esc Close

Speaker notes

Rehearsal overlay: visible to the audience if this screen is shared.

Image