Project Planner App
In the previous chapter, we built a Kanban Board, a single-project task manager backed by Convex. It taught us the core primitives: schema, queries, mutations, useQuery, useMutation, and real-time reactivity.
In this chapter, we will extend that app into a Project Planner, an app where users can create multiple projects, each with its own set of tasks organized in a kanban board. We will also learn how to work with related tables, write efficient queries with indexes, paginate large result sets, and handle complex backend operations with internal functions and scheduled functions.
Getting Started
Go to the project-planner repository and click “Use this template” → “Create a new repository” to create your own copy.
Clone your repository to your computer:
git clone <your-repo-url> project-planner
cd project-planner
code .
The starter is the completed Kanban Board from the previous chapter, a React + TypeScript + Vite app with Convex already configured. By the end of this chapter, it will manage multiple projects, each with its own tasks.
If you get stuck at any point, you can view the complete solution on the master branch of the original repository.
Learning Outcomes
- Design and build a multi-table Convex schema with relationships between projects and tasks
- Implement full CRUD operations across related tables, including cascade deletes and soft deletes
- Use indexes, pagination, and full-text search to query data efficiently at scale
- Use internal functions, scheduled functions, and cron jobs to handle backend operations that exceed a single mutation
- Seed a database with sample and generated data for development and testing
- Deploy a full-stack Convex application to production
Sections
- Set Up the Starter App
- Schema Design — Two Related Tables
- CRUD Operations for Projects
- Wire Up the Project UI
- UI Components for Projects
- Project Detail Page and Kanban Board
- Fetch Tasks by Project
- Database Index for Tasks Table
- The Cascade Delete
- The Cascade Delete Problem
- Soft Delete Projects
- Schedule Cleanup with a Cron Job
- Seed the Database
- Paginate the Project List
- Generate Test Data with a Seed Script
- Add a Search Bar
- Search with a Full-Text Search Index
- Wrap Up the Project Planner
- Practice Questions