Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.folksbase.joselito.dev/llms.txt

Use this file to discover all available pages before exploring further.

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:
folksbase/
├── apps/
│   ├── web/        # Next.js 15 frontend (deployed to Vercel)
│   ├── api/        # Hono backend (deployed to Render)
│   └── docs/       # This documentation site (Mintlify)
├── packages/
│   ├── db/         # Drizzle schema + migrations (shared)
│   ├── emails/     # Email templates via Resend
│   └── types/      # Shared TypeScript types

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

LayerTechnology
FrontendNext.js 15 (App Router, React Server Components)
StylingTailwind CSS + Radix Primitives
BackendHono v4
DatabaseNeon (Postgres serverless) via Drizzle ORM
AuthSupabase Auth
Background JobsInngest
AIAnthropic Claude Haiku (CSV column mapping)
TestingVitest (unit) + Playwright (E2E)
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