Skip to main content

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.

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.

Project data model

The projects table stores all project records. The columns are:
ColumnTypeNotes
idbigintAuto-incrementing primary key
client_idbigint (nullable FK → clients)Optional association with a client; set to NULL on client delete
namestringRequired; indexed for fast lookup
descriptiontext (nullable)Optional long-form description
statusenum('active','archived')Defaults to active; indexed
created_bybigint (nullable FK → users)The user who created the project; set to NULL on user delete
created_attimestampSet automatically by Laravel
updated_attimestampUpdated automatically by Laravel
A composite index on (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

1

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.
2

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 characters
  • client_id — must reference an existing client record
The created_by field is set automatically to the authenticated user.
3

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
4

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).
5

Delete a project

Send DELETE /projects/{id} (requires admin or editor role). Deletion is blocked if the project has any associated tasks — archive the project instead.

Client association

A project can optionally be linked to a Client. Clients are a separate model stored in the clients 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 a hasMany relationship to tasks:
// App\Models\Project
public function tasks(): HasMany
{
    return $this->hasMany(Task::class);
}
When browsing the Kanban board, you can filter by project so only tasks belonging to that project appear in the five status columns. Tasks are not required to belong to a project — 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.

Build docs developers (and LLMs) love