Table of Contents

Class ProjectDto

Namespace
Builvero.Application.DTOs.Project
Assembly
Builvero.Application.dll

Data transfer object representing a project with complete information including owner, members, skills, and tags.

public class ProjectDto
Inheritance
ProjectDto
Inherited Members

Remarks

This DTO is used for project retrieval, creation, and search operations. Profile photo URLs for owners and members are automatically converted to presigned URLs (15-minute TTL) to prevent plain S3 URL exposure.

Properties

BuilderTags

Gets or sets the list of builder tag names associated with this project.

public List<string> BuilderTags { get; set; }

Property Value

List<string>
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

Builder tags help categorize projects and match them with interested builders.

Category

Gets or sets the project category as a string (e.g., "Software", "Hardware", "Design").

public string Category { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

This is the string representation of the ProjectCategory enum.

CreatedAt

Gets or sets the UTC timestamp when the project was created.

public DateTime CreatedAt { get; set; }

Property Value

DateTime
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Description

Gets or sets the main description of the project.

public string Description { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Id

Gets or sets the unique identifier of the project.

public Guid Id { get; set; }

Property Value

Guid
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Members

Gets or sets the list of project members with their roles and profile information.

public List<MemberDto> Members { get; set; }

Property Value

List<MemberDto>
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

Includes all active members. Each member's profile photo URL is converted to a presigned URL.

Name

Gets or sets the name of the project.

public string Name { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

OwnerName

Gets or sets the display name of the project owner.

public string OwnerName { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

OwnerPhotoUrl

Gets or sets the profile photo URL for the project owner.

public string? OwnerPhotoUrl { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

This is a presigned URL (15-minute TTL) for secure access to the owner's profile photo stored in S3. May be null if the owner has no profile photo.

OwnerUserId

Gets or sets the unique identifier of the user who owns this project.

public Guid OwnerUserId { get; set; }

Property Value

Guid
Data transfer object representing a project with complete information including owner, members, skills, and tags.

PendingInvitationsCount

Gets or sets the count of pending project invitations.

public int PendingInvitationsCount { get; set; }

Property Value

int
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

This is the number of invitations that have been sent but not yet accepted or declined.

PendingJoinRequestsCount

Gets or sets the count of pending join requests.

public int PendingJoinRequestsCount { get; set; }

Property Value

int
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

This is the number of join requests that have been submitted but not yet approved or rejected by the project owner.

PreferredExperienceLevel

Gets or sets the preferred experience level for project members (e.g., "Beginner", "Intermediate", "Expert").

public string? PreferredExperienceLevel { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

Optional field. Used for matching builders with appropriate skill levels.

RequiredSkills

Gets or sets the list of required skill display names for this project.

public List<string> RequiredSkills { get; set; }

Property Value

List<string>
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

These are the display names (e.g., "JavaScript", "React") of skills that the project requires or desires.

RichDescription

Gets or sets an optional rich description of the project, which may include formatted text or additional details.

public string? RichDescription { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

ShortDescription

Gets or sets an optional short description of the project, suitable for previews or summaries.

public string? ShortDescription { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Status

Gets or sets the project status as a string (e.g., "Idea", "InProgress", "Completed").

public string? Status { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

This is the string representation of the ProjectStatus enum.

Tags

Gets or sets optional tags or keywords associated with the project.

public string? Tags { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

Optional field. Can be used for additional categorization or search keywords.

UpdatedAt

Gets or sets the UTC timestamp when the project was last updated.

public DateTime UpdatedAt { get; set; }

Property Value

DateTime
Data transfer object representing a project with complete information including owner, members, skills, and tags.

UserRole

Gets or sets the role of the requesting user in this project (e.g., "Owner", "Member").

public string UserRole { get; set; }

Property Value

string
Data transfer object representing a project with complete information including owner, members, skills, and tags.

Remarks

This field indicates the relationship between the authenticated user and the project. Used to determine permissions and UI behavior.