devfolio-page 0.2.9 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -95,12 +95,16 @@ devfolio-page validate portfolio.yaml
95
95
 
96
96
  ## YAML Schema
97
97
 
98
+ ### Basic Example
99
+
98
100
  ```yaml
99
101
  meta:
100
102
  name: Your Name
101
103
  title: Your Title
102
104
  location: Your Location
103
105
  timezone: America/Los_Angeles # optional
106
+ tagline: A short tagline # optional
107
+ avatar: images/avatar.jpg # optional
104
108
 
105
109
  contact:
106
110
  email: you@example.com
@@ -113,6 +117,14 @@ bio: |
113
117
  A few sentences about yourself.
114
118
  Can be multiple lines.
115
119
 
120
+ # Extended about section (generates dedicated /about page)
121
+ about:
122
+ short: Brief intro for homepage
123
+ long: |
124
+ Longer bio with markdown support.
125
+
126
+ Multiple paragraphs work great here.
127
+
116
128
  sections:
117
129
  experience:
118
130
  - company: Company Name
@@ -142,6 +154,7 @@ sections:
142
154
  url: https://...
143
155
  date: 2024-12
144
156
  description: Brief description # optional
157
+ featured: true # optional
145
158
 
146
159
  education:
147
160
  - institution: University Name
@@ -163,6 +176,81 @@ settings:
163
176
  animate: subtle # none, subtle, or full
164
177
  ```
165
178
 
179
+ ### Rich Projects (Case Studies)
180
+
181
+ For a multi-page portfolio with dedicated project pages, use the top-level `projects` field:
182
+
183
+ ```yaml
184
+ projects:
185
+ - id: my-project # URL slug: /projects/my-project.html
186
+ title: My Project
187
+ subtitle: A brief tagline
188
+ featured: true
189
+ thumbnail: images/project-thumb.jpg
190
+ hero: images/project-hero.jpg
191
+ meta:
192
+ year: 2024
193
+ role: Lead Developer
194
+ timeline: 3 months
195
+ tech: [React, Node.js, PostgreSQL]
196
+ links:
197
+ github: https://github.com/...
198
+ demo: https://demo.example.com
199
+ live: https://example.com
200
+ sections:
201
+ - type: overview
202
+ content: |
203
+ Markdown content describing the project.
204
+ - type: image
205
+ src: images/screenshot.png
206
+ caption: Main dashboard view
207
+ - type: metrics
208
+ data:
209
+ - label: Users
210
+ value: "10,000+"
211
+ - label: Uptime
212
+ value: "99.9%"
213
+ - type: outcomes
214
+ content: |
215
+ What was achieved and lessons learned.
216
+ ```
217
+
218
+ ### Experiments
219
+
220
+ For side projects and explorations:
221
+
222
+ ```yaml
223
+ experiments:
224
+ - title: Creative Coding
225
+ description: Generative art experiments
226
+ image: images/experiment.png
227
+ github: https://github.com/...
228
+ demo: https://demo.example.com
229
+ tags: [p5.js, WebGL]
230
+ ```
231
+
232
+ ### Page Customization
233
+
234
+ Customize titles and descriptions for each page:
235
+
236
+ ```yaml
237
+ pages:
238
+ projects:
239
+ title: My Work
240
+ description: A curated selection of projects and case studies.
241
+ about:
242
+ title: About Me
243
+ description: Designer, developer, and coffee enthusiast.
244
+ experiments:
245
+ title: Lab
246
+ description: Creative experiments and explorations.
247
+ writing:
248
+ title: Blog
249
+ description: Thoughts on design and technology.
250
+ ```
251
+
252
+ If not specified, each theme provides sensible defaults.
253
+
166
254
  ## Themes
167
255
 
168
256
  ### SRCL (Default)
@@ -35,8 +35,8 @@
35
35
 
36
36
  <main class="content">
37
37
  <header class="page-header">
38
- <h1>About</h1>
39
- {{#tagline}}<p class="page-description">{{tagline}}</p>{{/tagline}}
38
+ <h1>{{#page_title}}{{page_title}}{{/page_title}}{{^page_title}}About{{/page_title}}</h1>
39
+ {{#page_description}}<p class="page-description">{{page_description}}</p>{{/page_description}}{{^page_description}}{{#tagline}}<p class="page-description">{{tagline}}</p>{{/tagline}}{{/page_description}}
40
40
  </header>
41
41
 
42
42
  <div class="about-content">
@@ -35,8 +35,8 @@
35
35
 
36
36
  <main class="content">
37
37
  <header class="page-header">
38
- <h1>Experiments</h1>
39
- <p class="page-description">Side projects, explorations, and things I'm tinkering with.</p>
38
+ <h1>{{#page_title}}{{page_title}}{{/page_title}}{{^page_title}}Experiments{{/page_title}}</h1>
39
+ <p class="page-description">{{#page_description}}{{page_description}}{{/page_description}}{{^page_description}}Side projects, explorations, and things I'm tinkering with.{{/page_description}}</p>
40
40
  </header>
41
41
 
42
42
  <div class="experiments-grid full-width">
@@ -35,8 +35,8 @@
35
35
 
36
36
  <main class="content">
37
37
  <header class="page-header">
38
- <h1>Projects</h1>
39
- <p class="page-description">A collection of work spanning product development, open source, and research.</p>
38
+ <h1>{{#page_title}}{{page_title}}{{/page_title}}{{^page_title}}Projects{{/page_title}}</h1>
39
+ <p class="page-description">{{#page_description}}{{page_description}}{{/page_description}}{{^page_description}}A collection of work spanning product development, open source, and research.{{/page_description}}</p>
40
40
  </header>
41
41
 
42
42
  <div class="projects-grid full-width">
@@ -35,8 +35,8 @@
35
35
 
36
36
  <main class="content">
37
37
  <header class="page-header">
38
- <h1>Writing</h1>
39
- <p class="page-description">Articles, blog posts, and technical writing.</p>
38
+ <h1>{{#page_title}}{{page_title}}{{/page_title}}{{^page_title}}Writing{{/page_title}}</h1>
39
+ <p class="page-description">{{#page_description}}{{page_description}}{{/page_description}}{{^page_description}}Articles, blog posts, and technical writing.{{/page_description}}</p>
40
40
  </header>
41
41
 
42
42
  <ul class="writing-list full-width">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devfolio-page",
3
- "version": "0.2.9",
3
+ "version": "0.2.10",
4
4
  "description": "Your portfolio as code. Version control it like software.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -35,8 +35,8 @@
35
35
 
36
36
  <main class="content">
37
37
  <header class="page-header">
38
- <h1>About</h1>
39
- {{#tagline}}<p class="page-description">{{tagline}}</p>{{/tagline}}
38
+ <h1>{{#page_title}}{{page_title}}{{/page_title}}{{^page_title}}About{{/page_title}}</h1>
39
+ {{#page_description}}<p class="page-description">{{page_description}}</p>{{/page_description}}{{^page_description}}{{#tagline}}<p class="page-description">{{tagline}}</p>{{/tagline}}{{/page_description}}
40
40
  </header>
41
41
 
42
42
  <div class="about-content">
@@ -35,8 +35,8 @@
35
35
 
36
36
  <main class="content">
37
37
  <header class="page-header">
38
- <h1>Experiments</h1>
39
- <p class="page-description">Side projects, explorations, and things I'm tinkering with.</p>
38
+ <h1>{{#page_title}}{{page_title}}{{/page_title}}{{^page_title}}Experiments{{/page_title}}</h1>
39
+ <p class="page-description">{{#page_description}}{{page_description}}{{/page_description}}{{^page_description}}Side projects, explorations, and things I'm tinkering with.{{/page_description}}</p>
40
40
  </header>
41
41
 
42
42
  <div class="experiments-grid full-width">
@@ -35,8 +35,8 @@
35
35
 
36
36
  <main class="content">
37
37
  <header class="page-header">
38
- <h1>Projects</h1>
39
- <p class="page-description">A collection of work spanning product development, open source, and research.</p>
38
+ <h1>{{#page_title}}{{page_title}}{{/page_title}}{{^page_title}}Projects{{/page_title}}</h1>
39
+ <p class="page-description">{{#page_description}}{{page_description}}{{/page_description}}{{^page_description}}A collection of work spanning product development, open source, and research.{{/page_description}}</p>
40
40
  </header>
41
41
 
42
42
  <div class="projects-grid full-width">
@@ -35,8 +35,8 @@
35
35
 
36
36
  <main class="content">
37
37
  <header class="page-header">
38
- <h1>Writing</h1>
39
- <p class="page-description">Articles, blog posts, and technical writing.</p>
38
+ <h1>{{#page_title}}{{page_title}}{{/page_title}}{{^page_title}}Writing{{/page_title}}</h1>
39
+ <p class="page-description">{{#page_description}}{{page_description}}{{/page_description}}{{^page_description}}Articles, blog posts, and technical writing.{{/page_description}}</p>
40
40
  </header>
41
41
 
42
42
  <ul class="writing-list full-width">