Skip to main content
Hey folks! welcome to the folksbase docs. If you’re reading this, you’re most likely part of the Resend team. This site is the documentation for folksbase, a project I built for the Resend hiring process technical challenge. This isn’t your standard, dry technical documentation. Think of it more as a “behind the scenes” look into my thought process. I want you to read this—especially the parts explaining my choices and trade-offs—as if we were having a conversation as coworkers, maybe during a planning or a refining session. And yes, as you can see, I’ll be writing in first person from time to time. I truly believe that helps to give this feeling. Before diving into the architecture and the “how-to,” I encourage you to actually try the project. Use it as someone who’s genuinely looking for a fast, simple, and reliable way to manage contacts.

Live Demo

Try folksbase now

Project Structure

folksbase is a monorepo managed with pnpm and Turborepo:

Key Features

CSV Import with AI Mapping

Upload CSV files and automatically map columns to contact fields. Review suggestions, adjust if needed, and import thousands of contacts in seconds.

Background Jobs

Large imports and exports run asynchronously via Inngest with step-level retries. No timeouts, no memory issues.

Clean REST API

Auto-generated OpenAPI spec with interactive Scalar docs. Every endpoint is documented, validated with Zod, and rate-limited.

Contact Management

Create, search, filter, and tag contacts. Full CRUD operations with cursor-based pagination for fast performance at any scale.

Tag System

Organize contacts with tags. Filter by multiple tags at once and export filtered subsets as CSV.

Dashboard

See stats at a glance — total contacts, growth over time, recent imports and exports, all on one page.

Tech Stack at a Glance

For a deeper dive into the architecture, head to the Architecture Overview.

Next Steps

Quickstart

Get folksbase running locally

Plan and Execution

Get an overview on why folksbase is as it is