Skip to content

ProjexProject

Normalized project object returned by the normalise function.

Definition

tsx
interface ProjexProject {
  id: string
  type: ProjectType
  status: ProjectStatus
  featured: boolean
  name: string
  tagline: string
  description: string
  background: string | null
  why: string | null
  image: string | null
  struggles: ProjectStruggle[]
  timeline: ProjectTimelineEntry[]
  posts: ProjectPost[]
  stack: string[]
  links: ProjectLinks
  stats: ProjectStats | null
  language: string | null
  languageColor: string | null
  createdAt: string | null
  updatedAt: string | null
  repo?: string
  package?: string
  slug?: string
  channelId?: string
  productId?: string
  storeId?: string
  username?: string
  commits?: ProjectCommit[]
  linkOrder?: string[]
}

Properties

PropertyTypeDescription
idstringUnique identifier
typeProjectTypeProject type (github, npm, manual, etc.)
statusProjectStatusCurrent status (active, shipped, etc.)
featuredbooleanWhether project is featured
namestringProject name
taglinestringShort tagline
descriptionstringFull description
backgroundstring | nullBackground story
whystring | nullWhy this project exists
imagestring | nullProject image URL
strugglesProjectStruggle[]Challenges encountered
timelineProjectTimelineEntry[]Project timeline
postsProjectPost[]Related blog posts
stackstring[]Technology stack
linksProjectLinksExternal links
statsProjectStats | nullProject statistics
languagestring | nullPrimary language (GitHub)
languageColorstring | nullLanguage color hex (GitHub)
createdAtstring | nullCreation date
updatedAtstring | nullLast update date
repostring | undefinedRepository path (GitHub/hybrid)
packagestring | undefinedPackage name (npm/hybrid)
slugstring | undefinedProduct Hunt slug
channelIdstring | undefinedYouTube channel ID
productIdstring | undefinedGumroad product ID
storeIdstring | undefinedLemon Squeezy store ID
usernamestring | undefinedDev.to username
commitsProjectCommit[] | undefinedRecent commits (GitHub/hybrid)
linkOrderstring[] | undefinedLink display order

Creation

ProjexProject objects are created by the normalise function:

tsx
import { normalise } from '@manningworks/projex'

const project = await normalise({
  id: 'my-project',
  type: 'github',
  repo: 'user/repo',
  status: 'active'
})

Usage with Components

tsx
import { ProjectCard, ProjectView } from '@manningworks/projex'

function ProjectPage({ project }: { project: ProjexProject }) {
  return (
    <ProjectCard>
      <ProjectCard.Header project={project} />
      <ProjectCard.Description project={project} />
    </ProjectCard>
  )
}