Overview
The projects data structure powers the Projects section of the portfolio, showcasing both technical and operational work. Itβs defined insrc/data/projects.ts and consumed by src/components/Projects.astro.
Type Definitions
Status Type
Defines the current state of a project:Deployed
Live and accessible to users
In Development
Currently being built
Completed
Finished operational projects
Category Type
Classifies projects into two main domains:- Tech: Software development projects (web apps, APIs, etc.)
- Operations: Process improvement and organizational projects
Project Structure
Project Fields
All fields are required for each project entry.
Field Reference
| Field | Type | Description |
|---|---|---|
name | string | Project title (display name) |
description | string | Detailed project description |
status | Status | Current project state |
category | Category | Tech or Operations classification |
tags | string[] | Technology/skill tags |
gradient | string | CSS gradient for card header |
url | string | External link (usually GitHub) |
Real Examples
Tech Project Example
Operations Project Example
Badge Variant Mapping
ThebadgeVariant object maps status types to visual variants:
This mapping is exported from the data file but is not currently used in the Projects component. The status is rendered as plain text in a custom styled span (see
src/components/Projects.astro:70-72). The mapping could be used if you wanted to integrate the shadcn/ui Badge component in the future.Gradient Guidelines
Match the category theme
- Tech projects: Purple/blue tones (
#0f0028,#001a28,#001428) - Operations projects: Warm tones (
#1a1200,#001a14)
Gradient Pattern
Adding New Projects
Usage in Components
The projects data is imported and consumed insrc/components/Projects.astro:
Key Integration Points
Filtering
The
data-category attribute enables the filter buttons (All/Tech/Operations)Gradient Styling
project.gradient is applied as inline style to the card headerStatus Display
Status is shown as a badge in the top-right of each card
Tags Rendering
Tags array is mapped to small pill elements at the bottom
Client-Side Filtering
The Projects component includes interactive filtering:- Listens for filter button clicks
- Compares
data-categoryon each card to the selected filter - Shows/hides cards with fade animations
Best Practices
Description Length
Keep descriptions between 100-200 characters for visual consistency
Tag Count
Use 3-5 tags per project - enough to be descriptive, not overwhelming
URL Consistency
Use full URLs including protocol (
https://)Gradient Testing
Preview gradients in the browser to ensure they work with the dark theme
Current Projects
The portfolio currently includes 5 projects:- 2 Tech projects: API Explorer, drakk3 Assistant
- 3 Operations projects: Luxury Dept. Structuring, SOP Optimization, National Training Program