Projects are the top-level organizational unit for work in Contacts DB. A project groups related tasks together, can be optionally associated with a client, and carries a status that controls whether it appears in task creation flows. Every task in the system can belong to a project, giving your team a clear boundary between different bodies of work and making it easy to filter the Kanban board down to just one project at a time.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/0m1n3m/contacts-db/llms.txt
Use this file to discover all available pages before exploring further.
Project data model
Theprojects table stores all project records. The columns are:
| Column | Type | Notes |
|---|---|---|
id | bigint | Auto-incrementing primary key |
client_id | bigint (nullable FK → clients) | Optional association with a client; set to NULL on client delete |
name | string | Required; indexed for fast lookup |
description | text (nullable) | Optional long-form description |
status | enum('active','archived') | Defaults to active; indexed |
created_by | bigint (nullable FK → users) | The user who created the project; set to NULL on user delete |
created_at | timestamp | Set automatically by Laravel |
updated_at | timestamp | Updated automatically by Laravel |
(client_id, status) makes filtering projects by client and status fast.
Project statuses
Active
The default status. Active projects appear in the project dropdown when creating or editing a task. The project list view (
GET /projects) shows only active projects.Archived
Archived projects are hidden from the task creation and edit forms. Archiving is the recommended alternative to deleting a project that still has associated tasks — the system will block deletion if any tasks remain.
Managing projects
Browse the project list
Navigate to
GET /projects to see all active projects, paginated 15 per page, sorted by most recently created first. Each row shows the project name, associated client, and creator.Create a project
Go to
GET /projects/create (requires admin or editor role) to open the creation form. Submit it with POST /projects.Required field: name (string, max 255 characters)Optional fields:description— long-form text, max 1 000 charactersclient_id— must reference an existing client record
created_by field is set automatically to the authenticated user.View a project
Open
GET /projects/{id} to see the project detail page. The view loads the associated client, creator, and all tasks (ordered by most recently created first), plus summary statistics:- Total tasks
- Completed tasks (
done) - In-progress tasks
- In-review tasks
- Average lead time across completed tasks
Edit a project
Navigate to
GET /projects/{id}/edit and submit changes with PATCH /projects/{id}. Requires the admin or editor role.Editable fields: name, description, client_id, and status (active or archived).Client association
A project can optionally be linked to a Client. Clients are a separate model stored in theclients table with the following key fields: name, notes, status, and created_by. One client can own many projects (HasMany), and a project BelongsTo a single client. Setting client_id to null creates a project that is not tied to any client — useful for internal team work.
Relationship to tasks
A project has ahasMany relationship to tasks:
project_id is nullable on the tasks table, which lets you create quick internal tasks without assigning them to any project.
To filter the Kanban board to a specific project, see the Kanban Board documentation. To learn how tasks are created and linked to projects, see Managing Tasks.