Have you ever lost
something at university?
Where did you look first?
How did you know where to go?
Lost your keys.
Now what?
You post in a Facebook group.
Then you wait for the right person.
A useful post can be easy to miss.
User-provided Facebook example
Original screenshot · 18 October 2023
Ask here.
Walk there.
Ask again.
You check a counter.
Then another office.
Then ask someone nearby.
AI-generated illustration · Fictional people and location
Meet
Foundly.
Check first. Then go.
Check reported items anywhere with internet access.
Screens and technical details for review →Actual Foundly screen · Reported items, not live tracking
Two needs.
One clear map.
Lost-item pins can show a likely loss location
or the last place the owner remembers.
Actual app screens · Demo data · Click to enlarge
A useful post.
Four simple steps.
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
See the details.
Find a possible match.
Matches compare category, color, dates and distance.
People still check ownership before a return.
Actual app screens · Demo data · Click to enlarge
Two people.
One conversation.
Each private conversation belongs to a post.
Ownership details stay inside the conversation.
Same conversation · Two accounts · Tested in two browsers
Agree on one place.
Then get directions.
Where the item was found
can be different from where you meet.
Actual app screens · Demo data · Click to enlarge
Back in the
right hands.
A lost-item owner can also mark a post resolved,
including a return arranged outside Foundly.
Prepared returned example · No reset needed
Less searching.
A clearer way home.
Check online. Contact the finder. Plan your visit.
View the technical appendix →Actual app screens · Demo data · Click to enlarge
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
Different devices. Shared data.
Phone
Read posts or send a message
Another browser
See the post or receive the reply
NestJS API
Check identity and access.
Validate data and state.
Save before confirming success.
/api/v1 · Socket.IOPostgreSQL
Accounts, posts, messages,
claims and meetings
Persistent images
Public post images
Access-controlled private images
After a disconnect: Fetch missing messages and retry using the same ID to avoid duplicate saves.
From a report to a return
Report an item
FOUND or LOST
Photos, category, date, location
Starts as OPEN
Find a lead
Area, category and date filters
Clusters based on zoom
Suggested opposite-type posts
Check ownership
Private two-person room
Identifying details
One accepted claimant at a time
Meet and confirm
Agree on a place and time
ARRANGING while returning
Both confirm → RETURNED
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.
TECHNICAL REFERENCE — FOR REVIEW Active FOUND posts include OPEN and ARRANGING. LOST posts are displayed separately while OPEN. Returned items leave the normal map. Claim acceptance checks access and current post state inside a transaction to avoid multiple accepted claimants. Meetings have a version and require renewed confirmation when changed. Both participants must confirm a handover before a found-item post becomes RETURNED. The owner can mark a lost-item post RESOLVED after recovery. Possible matches compare opposite post types, category, color, date range and distance. They do not provide a tested accuracy percentage or automatically verify ownership.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.
Earlier project evidence: API access checks, browser flows and isolated backup/restore tests. Not all tests were rerun for this deck.