Talaria

A Middleman app for Facebook Marketplace.

1 min read

Talaria Mockup

Meet Talaria, the ultimate delivery intermediary app designed to bridge the gap between buyers and local sellers. Whether you don’t own a vehicle, your friends are busy, or you just don’t have the time for a meetup, Talaria ensures you never have to miss out on a great deal again.

Say goodbye to the hassle of physical Cash-on-Delivery (COD) and awkward meetups. With Talaria, securing your local marketplace finds is as easy as copying and pasting a link.


My role on the project: Full-Stack Developer, Infrastructure Setup


The Problem: No Vehicle

If you hunt for used electronics on Facebook Marketplace, you know that speed is everything. When you find a great deal, you have to meet the seller immediately for a “COD” (Cash on Delivery / Meetup).

There was just one problem: I don’t own a vehicle.

Every time I found a great deal, I had to rely on my friends to drive me to the seller. If my friends were busy, the deal was dead. It became incredibly frustrating to watch perfect opportunities slip away simply because of logistics.

Facebook Messenger chat showing a canceled deal A real chat where a seller canceled the deal because my friend was busy and I couldn't pick it up.

The Solution: Talaria

Talaria Main Menu View

I decided to build Talaria, a delivery intermediary platform specifically designed for Facebook Marketplace transactions.

Talaria New Product View

The core flow is seamless:

  1. Listing Import: Instead of manually typing out product details, the seller simply pastes their Facebook Marketplace listing URL into the Talaria app.
  2. Automated Scraping: The backend automatically scrapes the URL to instantly auto-fill the item’s name, price, and description.
  3. Link Generation & Sharing: Talaria generates a unique, structured transaction link that the seller can send directly to the buyer.
  4. Deep-Link Checkout: The buyer taps the link, which deep-links straight into the Talaria app’s item checkout page. From there, they complete a secure, cashless payment, and a dedicated courier is dispatched to handle the pickup.

Note: For the MVP, I focused entirely on the core consumer-facing iOS app and the backend infrastructure, laying the groundwork for the courier-facing app in the future.


Infrastructure: Selling My Gaming PC

To build this properly, I needed a robust backend. However, cloud hosting for microservices and databases can get expensive quickly. I wanted total control over my deployment environment to learn DevOps practices firsthand.

So, I made a sacrifice: I sold my gaming PC.

I used the funds to purchase a 6th-Gen Intel Lenovo ThinkCentre. I wiped it, installed Ubuntu Server, and turned it into my dedicated home lab. This was my first deep dive into containerization. I learned how to use Docker and docker-compose to spin up my PostgreSQL database and ASP.NET Core API in isolated, reproducible environments.

To expose my local server to the public internet securely without opening router ports, I configured Cloudflare Tunnels. This allowed my iOS client app to communicate with my home server API from anywhere in the world, securely routed through Cloudflare’s edge network.


Architecture & The Playwright Scraper

The backend is built with C# and ASP.NET Core. My decision to use this stack was highly intentional. Coming from a Unity game development background, I was already deeply familiar with C#. While my primary focus for job hunting has been iOS development, I wanted to actively maintain and elevate my C# skills rather than letting them rust. ASP.NET Core provided the perfect avenue for this, combining a language I already enjoyed with enterprise-grade features like strong typing, high performance, and an excellent dependency injection container.

The most challenging technical hurdle was extracting data from Facebook Marketplace. Facebook relies heavily on client-side JavaScript rendering, meaning traditional HTML scrapers (like HtmlAgilityPack) wouldn’t work.

To solve this, I integrated Playwright for .NET and adopted a microservices architecture. I built two separate ASP.NET Core projects: MainAPI to handle the core app data and business logic, and a dedicated ScraperAPI.

This standalone scraper microservice spins up a headless Chromium browser instance, navigates to the provided Facebook URL, waits for the DOM to render the dynamic React components, and extracts the exact listing data required to populate the iOS UI. By decoupling this heavy, memory-intensive browser process into its own API, I ensured it would never bottleneck the performance of the main application.


Retrospective: Things I’m Proud Of

Talaria represents a major turning point in my career. For the past year, my primary ambition was to break into the industry as a game developer. However, after facing a series of rejections from game studios, I took a step back to re-evaluate my career trajectory. I made the deliberate decision to pivot my focus back to iOS development, but I wanted to do it with a project that proved my technical depth.

Talaria pushed me far beyond my original comfort zone. It forced me to think about the entire lifecycle of an application—from client-side SwiftUI state management to writing robust ASP.NET Core controllers, all the way down to bare-metal server configuration. Selling my gaming rig to buy a ThinkCentre was the best investment I could have made, as it gave me hands-on experience with Docker, Linux networking, and system architecture that has fundamentally made me a better software engineer.