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.