VORTEX selection process · 2026
Desapega Unifor
Desapega Unifor is a campus marketplace. The storefront is public and anyone can browse, but listing an item requires an account with a university email, which keeps the platform restricted to actual students. Whoever wants to let something go creates a listing with up to 5 photos, sets a price or marks it as a donation, picks a pickup spot on campus and that's it. Whoever is looking filters by category, price range and item condition, opens the product and talks straight to the owner on WhatsApp. On the phone the site becomes an installable app, with a bottom navigation bar and offline support. It was built in 10 days as the technical challenge for the VORTEX Lab 2026.2 selection process, and I bought the domain myself to hand it in actually running in production, not on a temporary test link.
Full-stack (solo) · technical challenge for the VORTEX Lab 2026.2 selection process
Pick which version you want to watch
257Commits in 10 days of the challenge
12REST endpoints in the API
17Versioned SQL migrations
Own domainBought and live in production
The problem
Every semester runs the same cycle: whoever finished the course is left with the calculus book, the scientific calculator and the lab coat sitting in a drawer, while the freshman arriving buys everything at full price in the bookstore. The swap does happen, but scattered across WhatsApp groups and stories that vanish in 24 hours, with no search, no categories and no way to find who has what you need.
The solution
Desapega Unifor is a campus marketplace. The storefront is public and anyone can browse, but listing an item requires an account with a university email, which keeps the platform restricted to actual students. Whoever wants to let something go creates a listing with up to 5 photos, sets a price or marks it as a donation, picks a pickup spot on campus and that's it. Whoever is looking filters by category, price range and item condition, opens the product and talks straight to the owner on WhatsApp. On the phone the site becomes an installable app, with a bottom navigation bar and offline support. It was built in 10 days as the technical challenge for the VORTEX Lab 2026.2 selection process, and I bought the domain myself to hand it in actually running in production, not on a temporary test link.
What it can do
Public storefront with search, filters by category, price range and item condition, plus sorting and a donations-only tab.
Account with a university email, confirmed by a 6-digit code sent by email on the spot.
Listings with up to 5 photos, cropping right on the screen and compression done in the browser before uploading.
Pickup spot chosen from a list of places on campus, so the handover is arranged from the start.
Product page with a carousel, fullscreen viewer and direct contact over WhatsApp.
Public seller profile with sales history and real stats about who has already dealt with them.
See it in action
Storefront with search and filters
The whole catalog of listings in one place, with search by name, category filter, price range and item condition, plus sorting by newest, lowest or highest price. A separate tab shows only what's marked as a donation.
Product page
A carousel with the listing's photos, the seller's details and a button that opens a WhatsApp chat with the message already written. Every product view adds a click to that listing's counter.
Listings hub
Starting point for anyone letting something go: one button to create a new listing, another to view and manage the ones already live. From there the seller enters the creation wizard, with up to 5 photos, interactive cropping right in the browser and automatic WebP compression before uploading, so it doesn't eat into the free Storage tier.
Public seller profile
Every student has their own page with a real sales history and stats about who has already dealt with them, adding a bit more trust before arranging the handover.
Stack
The site and the part that stores the data are the same project, so there's no separate server to maintain. Accounts, photos and the rules about who can touch what live in a trusted cloud service, and the password recovery email goes out through a service built for that. The web address is a domain I bought for the project.
Technical challenges
- Sellers' phone numbers were leaking: a single request pulled the whole address book. Fixed with per-column privileges in the database and a function that returns one contact at a time.
- Storage photos wouldn't go into the offline cache, because they come from another domain and arrive as opaque responses, with no success status. The app opened with no images at all until I started accepting that kind of response in the cache.
- With no backend of my own, the public key lives in the browser, so all authorization had to live in the database: policies on every table and single-purpose functions for each sensitive action.
- Multi-megabyte HEIC photos from phones froze the cropper. I convert everything to WebP before opening the editor and again on the way out, bringing it down to a few hundred KB.
- Recovery emails were failing silently: the route answered success while the provider refused to send. It only surfaced when I actually read the API's response.
- Sliding-window rate limiting per IP, with an extra ceiling in the database for email codes, since each cloud instance counts its own.
More projects
SubliMaster is a Windows application installed on the print shop's machine. It talks directly to CorelDRAW (COM automation + 30 VBA macros) and turns the manual workflow into four buttons: Fit Uniforms applies names and numbers to the whole order, Propagate carries the front artwork to the back and sleeves, Export generates the files named and organized by client, and the Print Queue connects everything to the plotter. It's sold as a product: license keys, per-user permissions and automatic updates. The client clicks a popup and gets the new version.
SubliMaster
Me Leva gives the rescuer her own channel, away from Instagram. Visitors browse the pet catalog, open a profile with photos and fill out the multi-step adoption form; the rescuer follows everything from one panel: records, candidates, donations and even site visits. People who want to rehome an animal create an account and submit it for approval.
Me Leva
AgenHub is the barbershop's online booking system. Each barbershop gets its own link where clients book appointments on their own, any time of day. On the other side, the owner manages everything from one simple dashboard: the schedule, the money, the clients and the plans, on desktop or mobile.
AgenHub
AssisConnect brings that daily routine to the phone and the computer. Staff log attendance, health notes and visits on the spot, from anywhere in the home; coordinators follow everything on a dashboard and generate the monthly PDF reports in one tap. It's the same system on three screens: an app for Android and iPhone, a website for the computer, and a single backend behind it all.