devfolio-page 0.1.0
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 +219 -0
- package/dist/cli/commands/init.js +282 -0
- package/dist/cli/commands/render.js +105 -0
- package/dist/cli/commands/themes.js +40 -0
- package/dist/cli/commands/validate.js +86 -0
- package/dist/cli/helpers/validate.js +99 -0
- package/dist/cli/index.js +51 -0
- package/dist/cli/postinstall.js +20 -0
- package/dist/cli/schemas/portfolio.schema.js +299 -0
- package/dist/generator/builder.js +551 -0
- package/dist/generator/markdown.js +57 -0
- package/dist/generator/themes/dark-academia/partials/education.html +15 -0
- package/dist/generator/themes/dark-academia/partials/experience.html +23 -0
- package/dist/generator/themes/dark-academia/partials/hero.html +15 -0
- package/dist/generator/themes/dark-academia/partials/projects.html +17 -0
- package/dist/generator/themes/dark-academia/partials/skills.html +11 -0
- package/dist/generator/themes/dark-academia/partials/writing.html +15 -0
- package/dist/generator/themes/dark-academia/script.js +91 -0
- package/dist/generator/themes/dark-academia/styles.css +913 -0
- package/dist/generator/themes/dark-academia/template.html +46 -0
- package/dist/generator/themes/dark-academia/templates/experiments-index.html +80 -0
- package/dist/generator/themes/dark-academia/templates/homepage.html +125 -0
- package/dist/generator/themes/dark-academia/templates/project.html +101 -0
- package/dist/generator/themes/dark-academia/templates/projects-index.html +80 -0
- package/dist/generator/themes/dark-academia/templates/writing-index.html +75 -0
- package/dist/generator/themes/modern/partials/education.html +14 -0
- package/dist/generator/themes/modern/partials/experience.html +21 -0
- package/dist/generator/themes/modern/partials/hero.html +15 -0
- package/dist/generator/themes/modern/partials/projects.html +17 -0
- package/dist/generator/themes/modern/partials/skills.html +11 -0
- package/dist/generator/themes/modern/partials/writing.html +14 -0
- package/dist/generator/themes/modern/script.js +136 -0
- package/dist/generator/themes/modern/styles.css +835 -0
- package/dist/generator/themes/modern/template.html +59 -0
- package/dist/generator/themes/modern/templates/experiments-index.html +78 -0
- package/dist/generator/themes/modern/templates/homepage.html +125 -0
- package/dist/generator/themes/modern/templates/project.html +98 -0
- package/dist/generator/themes/modern/templates/projects-index.html +79 -0
- package/dist/generator/themes/modern/templates/writing-index.html +73 -0
- package/dist/generator/themes/srcl/partials/education.html +27 -0
- package/dist/generator/themes/srcl/partials/experience.html +25 -0
- package/dist/generator/themes/srcl/partials/hero.html +22 -0
- package/dist/generator/themes/srcl/partials/projects.html +24 -0
- package/dist/generator/themes/srcl/partials/sections/code.html +8 -0
- package/dist/generator/themes/srcl/partials/sections/demo.html +8 -0
- package/dist/generator/themes/srcl/partials/sections/gallery.html +12 -0
- package/dist/generator/themes/srcl/partials/sections/image.html +6 -0
- package/dist/generator/themes/srcl/partials/sections/interactive.html +8 -0
- package/dist/generator/themes/srcl/partials/sections/metrics.html +10 -0
- package/dist/generator/themes/srcl/partials/sections/outcomes.html +5 -0
- package/dist/generator/themes/srcl/partials/sections/overview.html +5 -0
- package/dist/generator/themes/srcl/partials/sections/process.html +5 -0
- package/dist/generator/themes/srcl/partials/skills.html +21 -0
- package/dist/generator/themes/srcl/partials/writing.html +14 -0
- package/dist/generator/themes/srcl/script.js +354 -0
- package/dist/generator/themes/srcl/styles.css +1260 -0
- package/dist/generator/themes/srcl/template.html +46 -0
- package/dist/generator/themes/srcl/templates/experiments-index.html +66 -0
- package/dist/generator/themes/srcl/templates/homepage.html +136 -0
- package/dist/generator/themes/srcl/templates/project.html +96 -0
- package/dist/generator/themes/srcl/templates/projects-index.html +70 -0
- package/dist/generator/themes/srcl/templates/writing-index.html +61 -0
- package/dist/types/portfolio.js +4 -0
- package/package.json +58 -0
- package/src/generator/themes/dark-academia/partials/education.html +15 -0
- package/src/generator/themes/dark-academia/partials/experience.html +23 -0
- package/src/generator/themes/dark-academia/partials/hero.html +15 -0
- package/src/generator/themes/dark-academia/partials/projects.html +17 -0
- package/src/generator/themes/dark-academia/partials/skills.html +11 -0
- package/src/generator/themes/dark-academia/partials/writing.html +15 -0
- package/src/generator/themes/dark-academia/script.js +91 -0
- package/src/generator/themes/dark-academia/styles.css +913 -0
- package/src/generator/themes/dark-academia/template.html +46 -0
- package/src/generator/themes/dark-academia/templates/experiments-index.html +80 -0
- package/src/generator/themes/dark-academia/templates/homepage.html +125 -0
- package/src/generator/themes/dark-academia/templates/project.html +101 -0
- package/src/generator/themes/dark-academia/templates/projects-index.html +80 -0
- package/src/generator/themes/dark-academia/templates/writing-index.html +75 -0
- package/src/generator/themes/modern/partials/education.html +14 -0
- package/src/generator/themes/modern/partials/experience.html +21 -0
- package/src/generator/themes/modern/partials/hero.html +15 -0
- package/src/generator/themes/modern/partials/projects.html +17 -0
- package/src/generator/themes/modern/partials/skills.html +11 -0
- package/src/generator/themes/modern/partials/writing.html +14 -0
- package/src/generator/themes/modern/script.js +136 -0
- package/src/generator/themes/modern/styles.css +835 -0
- package/src/generator/themes/modern/template.html +59 -0
- package/src/generator/themes/modern/templates/experiments-index.html +78 -0
- package/src/generator/themes/modern/templates/homepage.html +125 -0
- package/src/generator/themes/modern/templates/project.html +98 -0
- package/src/generator/themes/modern/templates/projects-index.html +79 -0
- package/src/generator/themes/modern/templates/writing-index.html +73 -0
- package/src/generator/themes/srcl/partials/education.html +27 -0
- package/src/generator/themes/srcl/partials/experience.html +25 -0
- package/src/generator/themes/srcl/partials/hero.html +22 -0
- package/src/generator/themes/srcl/partials/projects.html +24 -0
- package/src/generator/themes/srcl/partials/sections/code.html +8 -0
- package/src/generator/themes/srcl/partials/sections/demo.html +8 -0
- package/src/generator/themes/srcl/partials/sections/gallery.html +12 -0
- package/src/generator/themes/srcl/partials/sections/image.html +6 -0
- package/src/generator/themes/srcl/partials/sections/interactive.html +8 -0
- package/src/generator/themes/srcl/partials/sections/metrics.html +10 -0
- package/src/generator/themes/srcl/partials/sections/outcomes.html +5 -0
- package/src/generator/themes/srcl/partials/sections/overview.html +5 -0
- package/src/generator/themes/srcl/partials/sections/process.html +5 -0
- package/src/generator/themes/srcl/partials/skills.html +21 -0
- package/src/generator/themes/srcl/partials/writing.html +14 -0
- package/src/generator/themes/srcl/script.js +354 -0
- package/src/generator/themes/srcl/styles.css +1260 -0
- package/src/generator/themes/srcl/template.html +46 -0
- package/src/generator/themes/srcl/templates/experiments-index.html +66 -0
- package/src/generator/themes/srcl/templates/homepage.html +136 -0
- package/src/generator/themes/srcl/templates/project.html +96 -0
- package/src/generator/themes/srcl/templates/projects-index.html +70 -0
- package/src/generator/themes/srcl/templates/writing-index.html +61 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>{{name}} - Portfolio</title>
|
|
7
|
+
<meta name="description" content="{{title}} based in {{location}}">
|
|
8
|
+
<link rel="stylesheet" href="./assets/styles.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body class="academia-theme" data-theme="{{colorScheme}}">
|
|
11
|
+
|
|
12
|
+
<!-- Navigation -->
|
|
13
|
+
<nav class="site-nav">
|
|
14
|
+
<div class="nav-content">
|
|
15
|
+
<div class="nav-links">
|
|
16
|
+
{{#hasExperience}}<a href="#experience">Experience</a>{{/hasExperience}}
|
|
17
|
+
{{#hasProjects}}<a href="#projects">Projects</a>{{/hasProjects}}
|
|
18
|
+
{{#hasSkills}}<a href="#skills">Skills</a>{{/hasSkills}}
|
|
19
|
+
{{#hasWriting}}<a href="#writing">Writing</a>{{/hasWriting}}
|
|
20
|
+
{{#hasEducation}}<a href="#education">Education</a>{{/hasEducation}}
|
|
21
|
+
</div>
|
|
22
|
+
{{#enableHotkeys}}
|
|
23
|
+
<button class="theme-btn" data-hotkey="ctrl+t" title="Toggle theme">
|
|
24
|
+
<span class="theme-icon"></span>
|
|
25
|
+
</button>
|
|
26
|
+
{{/enableHotkeys}}
|
|
27
|
+
</div>
|
|
28
|
+
</nav>
|
|
29
|
+
|
|
30
|
+
<main class="page-content">
|
|
31
|
+
{{{hero}}}
|
|
32
|
+
{{{experience}}}
|
|
33
|
+
{{{projects}}}
|
|
34
|
+
{{{skills}}}
|
|
35
|
+
{{{writing}}}
|
|
36
|
+
{{{education}}}
|
|
37
|
+
</main>
|
|
38
|
+
|
|
39
|
+
<footer class="site-footer">
|
|
40
|
+
<div class="footer-ornament"></div>
|
|
41
|
+
<p>Crafted with <a href="https://devfolio.page" target="_blank">devfolio.page</a></p>
|
|
42
|
+
</footer>
|
|
43
|
+
|
|
44
|
+
{{#enableHotkeys}}<script src="./assets/script.js"></script>{{/enableHotkeys}}
|
|
45
|
+
</body>
|
|
46
|
+
</html>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Experiments - {{site_name}}</title>
|
|
7
|
+
<meta name="description" content="Experiments by {{site_name}}">
|
|
8
|
+
<link rel="stylesheet" href="../assets/styles.css">
|
|
9
|
+
<script>
|
|
10
|
+
(function() {
|
|
11
|
+
try {
|
|
12
|
+
var saved = localStorage.getItem('academia-theme');
|
|
13
|
+
if (saved) document.documentElement.dataset.theme = saved;
|
|
14
|
+
} catch(e) {}
|
|
15
|
+
})();
|
|
16
|
+
</script>
|
|
17
|
+
</head>
|
|
18
|
+
<body class="academia-theme" data-theme="{{colorScheme}}">
|
|
19
|
+
|
|
20
|
+
<nav class="site-nav">
|
|
21
|
+
<div class="nav-content">
|
|
22
|
+
<a href="../" class="nav-logo">{{site_name}}</a>
|
|
23
|
+
<div class="nav-links">
|
|
24
|
+
<a href="../">Home</a>
|
|
25
|
+
{{#nav_links}}
|
|
26
|
+
<a href="{{href}}"{{#active}} class="active"{{/active}}>{{label}}</a>
|
|
27
|
+
{{/nav_links}}
|
|
28
|
+
</div>
|
|
29
|
+
<button class="theme-btn" title="Toggle theme" aria-label="Toggle theme">
|
|
30
|
+
<svg class="icon-sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
31
|
+
<circle cx="12" cy="12" r="5"></circle>
|
|
32
|
+
<line x1="12" y1="1" x2="12" y2="3"></line>
|
|
33
|
+
<line x1="12" y1="21" x2="12" y2="23"></line>
|
|
34
|
+
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
|
35
|
+
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
|
36
|
+
<line x1="1" y1="12" x2="3" y2="12"></line>
|
|
37
|
+
<line x1="21" y1="12" x2="23" y2="12"></line>
|
|
38
|
+
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
|
39
|
+
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
|
40
|
+
</svg>
|
|
41
|
+
<svg class="icon-moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
42
|
+
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
43
|
+
</svg>
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
46
|
+
</nav>
|
|
47
|
+
|
|
48
|
+
<main class="page-content">
|
|
49
|
+
<header class="page-header">
|
|
50
|
+
<div class="header-ornament"></div>
|
|
51
|
+
<h1>Experiments</h1>
|
|
52
|
+
<p>Explorations, studies, and curious investigations.</p>
|
|
53
|
+
</header>
|
|
54
|
+
|
|
55
|
+
<div class="experiments-list">
|
|
56
|
+
{{#experiments}}
|
|
57
|
+
<div class="experiment-item">
|
|
58
|
+
<h3>{{title}}</h3>
|
|
59
|
+
<p>{{description}}</p>
|
|
60
|
+
<div class="experiment-links">
|
|
61
|
+
{{#github}}<a href="{{github}}" target="_blank">Repository</a>{{/github}}
|
|
62
|
+
{{#demo}}<a href="{{demo}}" target="_blank">Demonstration</a>{{/demo}}
|
|
63
|
+
{{#url}}<a href="{{url}}" target="_blank">View</a>{{/url}}
|
|
64
|
+
</div>
|
|
65
|
+
<div class="project-tags">
|
|
66
|
+
{{#tags}}<span class="tag">{{.}}</span>{{/tags}}
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
{{/experiments}}
|
|
70
|
+
</div>
|
|
71
|
+
</main>
|
|
72
|
+
|
|
73
|
+
<footer class="site-footer">
|
|
74
|
+
<div class="footer-ornament"></div>
|
|
75
|
+
<p>Crafted with <a href="https://devfolio.page" target="_blank">devfolio.page</a></p>
|
|
76
|
+
</footer>
|
|
77
|
+
|
|
78
|
+
<script src="../assets/script.js"></script>
|
|
79
|
+
</body>
|
|
80
|
+
</html>
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>{{name}} - Portfolio</title>
|
|
7
|
+
<meta name="description" content="{{title}} based in {{location}}">
|
|
8
|
+
<link rel="stylesheet" href="./assets/styles.css">
|
|
9
|
+
<script>
|
|
10
|
+
(function() {
|
|
11
|
+
try {
|
|
12
|
+
var saved = localStorage.getItem('academia-theme');
|
|
13
|
+
if (saved) document.documentElement.dataset.theme = saved;
|
|
14
|
+
} catch(e) {}
|
|
15
|
+
})();
|
|
16
|
+
</script>
|
|
17
|
+
</head>
|
|
18
|
+
<body class="academia-theme" data-theme="{{colorScheme}}">
|
|
19
|
+
|
|
20
|
+
<nav class="site-nav">
|
|
21
|
+
<div class="nav-content">
|
|
22
|
+
<a href="./" class="nav-logo">{{name}}</a>
|
|
23
|
+
<div class="nav-links">
|
|
24
|
+
{{#hasProjects}}<a href="./projects/">Projects</a>{{/hasProjects}}
|
|
25
|
+
{{#hasExperiments}}<a href="./experiments/">Experiments</a>{{/hasExperiments}}
|
|
26
|
+
{{#hasWriting}}<a href="./writing/">Writing</a>{{/hasWriting}}
|
|
27
|
+
</div>
|
|
28
|
+
<button class="theme-btn" title="Toggle theme" aria-label="Toggle theme">
|
|
29
|
+
<svg class="icon-sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
30
|
+
<circle cx="12" cy="12" r="5"></circle>
|
|
31
|
+
<line x1="12" y1="1" x2="12" y2="3"></line>
|
|
32
|
+
<line x1="12" y1="21" x2="12" y2="23"></line>
|
|
33
|
+
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
|
34
|
+
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
|
35
|
+
<line x1="1" y1="12" x2="3" y2="12"></line>
|
|
36
|
+
<line x1="21" y1="12" x2="23" y2="12"></line>
|
|
37
|
+
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
|
38
|
+
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
|
39
|
+
</svg>
|
|
40
|
+
<svg class="icon-moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
41
|
+
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
42
|
+
</svg>
|
|
43
|
+
</button>
|
|
44
|
+
</div>
|
|
45
|
+
</nav>
|
|
46
|
+
|
|
47
|
+
<main class="page-content">
|
|
48
|
+
<section class="hero">
|
|
49
|
+
<div class="hero-ornament"></div>
|
|
50
|
+
<h1 class="hero-name">{{name}}</h1>
|
|
51
|
+
<p class="hero-title">{{title}}</p>
|
|
52
|
+
<p class="hero-location">{{location}}</p>
|
|
53
|
+
|
|
54
|
+
<div class="hero-links">
|
|
55
|
+
{{#email}}<a href="mailto:{{email}}" class="hero-link">Correspondence</a>{{/email}}
|
|
56
|
+
{{#github}}<a href="https://github.com/{{github}}" target="_blank" class="hero-link">Archives</a>{{/github}}
|
|
57
|
+
{{#linkedin}}<a href="https://linkedin.com/in/{{linkedin}}" target="_blank" class="hero-link">Connections</a>{{/linkedin}}
|
|
58
|
+
{{#twitter}}<a href="https://twitter.com/{{twitter}}" target="_blank" class="hero-link">Musings</a>{{/twitter}}
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div class="hero-bio">{{{bio_html}}}</div>
|
|
62
|
+
<div class="hero-ornament"></div>
|
|
63
|
+
</section>
|
|
64
|
+
|
|
65
|
+
{{#hasProjects}}
|
|
66
|
+
<section class="section" id="projects">
|
|
67
|
+
<h2 class="section-title"><span>Selected Works</span></h2>
|
|
68
|
+
<div class="projects-list">
|
|
69
|
+
{{#featured_projects}}
|
|
70
|
+
<a href="./projects/{{id}}.html" class="project-item {{#featured}}featured{{/featured}}">
|
|
71
|
+
<h3 class="project-name">{{title}}</h3>
|
|
72
|
+
{{#subtitle}}<p class="project-description">{{subtitle}}</p>{{/subtitle}}
|
|
73
|
+
<div class="project-tags">
|
|
74
|
+
{{#meta.tech}}<span class="tag">{{.}}</span>{{/meta.tech}}
|
|
75
|
+
</div>
|
|
76
|
+
</a>
|
|
77
|
+
{{/featured_projects}}
|
|
78
|
+
</div>
|
|
79
|
+
<a href="./projects/" class="view-all">View Complete Collection →</a>
|
|
80
|
+
</section>
|
|
81
|
+
{{/hasProjects}}
|
|
82
|
+
|
|
83
|
+
{{#show_experiments}}
|
|
84
|
+
<section class="section" id="experiments">
|
|
85
|
+
<h2 class="section-title"><span>Experiments</span></h2>
|
|
86
|
+
<div class="experiments-list">
|
|
87
|
+
{{#experiments}}
|
|
88
|
+
<div class="experiment-item">
|
|
89
|
+
<h3>{{title}}</h3>
|
|
90
|
+
<p>{{description}}</p>
|
|
91
|
+
<div class="experiment-links">
|
|
92
|
+
{{#github}}<a href="{{github}}" target="_blank">Repository</a>{{/github}}
|
|
93
|
+
{{#demo}}<a href="{{demo}}" target="_blank">Demonstration</a>{{/demo}}
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
{{/experiments}}
|
|
97
|
+
</div>
|
|
98
|
+
<a href="./experiments/" class="view-all">View All Experiments →</a>
|
|
99
|
+
</section>
|
|
100
|
+
{{/show_experiments}}
|
|
101
|
+
|
|
102
|
+
{{#hasWriting}}
|
|
103
|
+
<section class="section" id="writing">
|
|
104
|
+
<h2 class="section-title"><span>Publications</span></h2>
|
|
105
|
+
<div class="writing-list">
|
|
106
|
+
{{#featured_writing}}
|
|
107
|
+
<a href="{{url}}" target="_blank" class="writing-item">
|
|
108
|
+
<span class="writing-title">{{title}}</span>
|
|
109
|
+
<span class="writing-date">{{date}}</span>
|
|
110
|
+
</a>
|
|
111
|
+
{{/featured_writing}}
|
|
112
|
+
</div>
|
|
113
|
+
<a href="./writing/" class="view-all">View All Publications →</a>
|
|
114
|
+
</section>
|
|
115
|
+
{{/hasWriting}}
|
|
116
|
+
</main>
|
|
117
|
+
|
|
118
|
+
<footer class="site-footer">
|
|
119
|
+
<div class="footer-ornament"></div>
|
|
120
|
+
<p>Crafted with <a href="https://devfolio.page" target="_blank">devfolio.page</a></p>
|
|
121
|
+
</footer>
|
|
122
|
+
|
|
123
|
+
<script src="./assets/script.js"></script>
|
|
124
|
+
</body>
|
|
125
|
+
</html>
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>{{title}} - {{site_name}}</title>
|
|
7
|
+
<meta name="description" content="{{subtitle}}">
|
|
8
|
+
<link rel="stylesheet" href="../assets/styles.css">
|
|
9
|
+
<script>
|
|
10
|
+
(function() {
|
|
11
|
+
try {
|
|
12
|
+
var saved = localStorage.getItem('academia-theme');
|
|
13
|
+
if (saved) document.documentElement.dataset.theme = saved;
|
|
14
|
+
} catch(e) {}
|
|
15
|
+
})();
|
|
16
|
+
</script>
|
|
17
|
+
</head>
|
|
18
|
+
<body class="academia-theme" data-theme="{{colorScheme}}">
|
|
19
|
+
|
|
20
|
+
<nav class="site-nav">
|
|
21
|
+
<div class="nav-content">
|
|
22
|
+
<a href="../" class="nav-logo">{{site_name}}</a>
|
|
23
|
+
<div class="nav-links">
|
|
24
|
+
<a href="../">Home</a>
|
|
25
|
+
{{#nav_links}}
|
|
26
|
+
<a href="{{href}}"{{#active}} class="active"{{/active}}>{{label}}</a>
|
|
27
|
+
{{/nav_links}}
|
|
28
|
+
</div>
|
|
29
|
+
<button class="theme-btn" title="Toggle theme" aria-label="Toggle theme">
|
|
30
|
+
<svg class="icon-sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
31
|
+
<circle cx="12" cy="12" r="5"></circle>
|
|
32
|
+
<line x1="12" y1="1" x2="12" y2="3"></line>
|
|
33
|
+
<line x1="12" y1="21" x2="12" y2="23"></line>
|
|
34
|
+
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
|
35
|
+
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
|
36
|
+
<line x1="1" y1="12" x2="3" y2="12"></line>
|
|
37
|
+
<line x1="21" y1="12" x2="23" y2="12"></line>
|
|
38
|
+
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
|
39
|
+
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
|
40
|
+
</svg>
|
|
41
|
+
<svg class="icon-moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
42
|
+
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
43
|
+
</svg>
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
46
|
+
</nav>
|
|
47
|
+
|
|
48
|
+
<main class="page-content project-page">
|
|
49
|
+
<header class="project-header">
|
|
50
|
+
<div class="header-ornament"></div>
|
|
51
|
+
<h1>{{title}}</h1>
|
|
52
|
+
{{#subtitle}}<p class="subtitle">{{subtitle}}</p>{{/subtitle}}
|
|
53
|
+
|
|
54
|
+
<div class="project-meta">
|
|
55
|
+
<div class="meta-item">
|
|
56
|
+
<span class="meta-label">Year</span>
|
|
57
|
+
<span class="meta-value">{{meta.year}}</span>
|
|
58
|
+
</div>
|
|
59
|
+
<div class="meta-item">
|
|
60
|
+
<span class="meta-label">Role</span>
|
|
61
|
+
<span class="meta-value">{{meta.role}}</span>
|
|
62
|
+
</div>
|
|
63
|
+
{{#meta.timeline}}
|
|
64
|
+
<div class="meta-item">
|
|
65
|
+
<span class="meta-label">Duration</span>
|
|
66
|
+
<span class="meta-value">{{meta.timeline}}</span>
|
|
67
|
+
</div>
|
|
68
|
+
{{/meta.timeline}}
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<div class="project-tags">
|
|
72
|
+
{{#meta.tech}}<span class="tag">{{.}}</span>{{/meta.tech}}
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
{{#meta.links}}
|
|
76
|
+
<div class="project-links">
|
|
77
|
+
{{#github}}<a href="{{github}}" target="_blank" class="project-link">Repository</a>{{/github}}
|
|
78
|
+
{{#demo}}<a href="{{demo}}" target="_blank" class="project-link">Demonstration</a>{{/demo}}
|
|
79
|
+
{{#live}}<a href="{{live}}" target="_blank" class="project-link">Live Work</a>{{/live}}
|
|
80
|
+
</div>
|
|
81
|
+
{{/meta.links}}
|
|
82
|
+
</header>
|
|
83
|
+
|
|
84
|
+
<div class="project-content prose">
|
|
85
|
+
{{{sections_html}}}
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<nav class="project-nav">
|
|
89
|
+
<div class="nav-ornament"></div>
|
|
90
|
+
<a href="./" class="back-link">← Return to Collection</a>
|
|
91
|
+
</nav>
|
|
92
|
+
</main>
|
|
93
|
+
|
|
94
|
+
<footer class="site-footer">
|
|
95
|
+
<div class="footer-ornament"></div>
|
|
96
|
+
<p>Crafted with <a href="https://devfolio.page" target="_blank">devfolio.page</a></p>
|
|
97
|
+
</footer>
|
|
98
|
+
|
|
99
|
+
<script src="../assets/script.js"></script>
|
|
100
|
+
</body>
|
|
101
|
+
</html>
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Projects - {{site_name}}</title>
|
|
7
|
+
<meta name="description" content="Projects by {{site_name}}">
|
|
8
|
+
<link rel="stylesheet" href="../assets/styles.css">
|
|
9
|
+
<script>
|
|
10
|
+
(function() {
|
|
11
|
+
try {
|
|
12
|
+
var saved = localStorage.getItem('academia-theme');
|
|
13
|
+
if (saved) document.documentElement.dataset.theme = saved;
|
|
14
|
+
} catch(e) {}
|
|
15
|
+
})();
|
|
16
|
+
</script>
|
|
17
|
+
</head>
|
|
18
|
+
<body class="academia-theme" data-theme="{{colorScheme}}">
|
|
19
|
+
|
|
20
|
+
<nav class="site-nav">
|
|
21
|
+
<div class="nav-content">
|
|
22
|
+
<a href="../" class="nav-logo">{{site_name}}</a>
|
|
23
|
+
<div class="nav-links">
|
|
24
|
+
<a href="../">Home</a>
|
|
25
|
+
{{#nav_links}}
|
|
26
|
+
<a href="{{href}}"{{#active}} class="active"{{/active}}>{{label}}</a>
|
|
27
|
+
{{/nav_links}}
|
|
28
|
+
</div>
|
|
29
|
+
<button class="theme-btn" title="Toggle theme" aria-label="Toggle theme">
|
|
30
|
+
<svg class="icon-sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
31
|
+
<circle cx="12" cy="12" r="5"></circle>
|
|
32
|
+
<line x1="12" y1="1" x2="12" y2="3"></line>
|
|
33
|
+
<line x1="12" y1="21" x2="12" y2="23"></line>
|
|
34
|
+
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
|
35
|
+
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
|
36
|
+
<line x1="1" y1="12" x2="3" y2="12"></line>
|
|
37
|
+
<line x1="21" y1="12" x2="23" y2="12"></line>
|
|
38
|
+
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
|
39
|
+
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
|
40
|
+
</svg>
|
|
41
|
+
<svg class="icon-moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
42
|
+
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
43
|
+
</svg>
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
46
|
+
</nav>
|
|
47
|
+
|
|
48
|
+
<main class="page-content">
|
|
49
|
+
<header class="page-header">
|
|
50
|
+
<div class="header-ornament"></div>
|
|
51
|
+
<h1>Complete Works</h1>
|
|
52
|
+
<p>A collection of projects spanning research, development, and creative endeavors.</p>
|
|
53
|
+
</header>
|
|
54
|
+
|
|
55
|
+
<div class="projects-list">
|
|
56
|
+
{{#projects}}
|
|
57
|
+
<a href="./{{id}}.html" class="project-item {{#featured}}featured{{/featured}}">
|
|
58
|
+
<h3 class="project-name">{{title}}</h3>
|
|
59
|
+
{{#subtitle}}<p class="project-description">{{subtitle}}</p>{{/subtitle}}
|
|
60
|
+
<div class="project-meta-inline">
|
|
61
|
+
<span>{{meta.year}}</span>
|
|
62
|
+
<span>·</span>
|
|
63
|
+
<span>{{meta.role}}</span>
|
|
64
|
+
</div>
|
|
65
|
+
<div class="project-tags">
|
|
66
|
+
{{#meta.tech}}<span class="tag">{{.}}</span>{{/meta.tech}}
|
|
67
|
+
</div>
|
|
68
|
+
</a>
|
|
69
|
+
{{/projects}}
|
|
70
|
+
</div>
|
|
71
|
+
</main>
|
|
72
|
+
|
|
73
|
+
<footer class="site-footer">
|
|
74
|
+
<div class="footer-ornament"></div>
|
|
75
|
+
<p>Crafted with <a href="https://devfolio.page" target="_blank">devfolio.page</a></p>
|
|
76
|
+
</footer>
|
|
77
|
+
|
|
78
|
+
<script src="../assets/script.js"></script>
|
|
79
|
+
</body>
|
|
80
|
+
</html>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Publications - {{site_name}}</title>
|
|
7
|
+
<meta name="description" content="Publications by {{site_name}}">
|
|
8
|
+
<link rel="stylesheet" href="../assets/styles.css">
|
|
9
|
+
<script>
|
|
10
|
+
(function() {
|
|
11
|
+
try {
|
|
12
|
+
var saved = localStorage.getItem('academia-theme');
|
|
13
|
+
if (saved) document.documentElement.dataset.theme = saved;
|
|
14
|
+
} catch(e) {}
|
|
15
|
+
})();
|
|
16
|
+
</script>
|
|
17
|
+
</head>
|
|
18
|
+
<body class="academia-theme" data-theme="{{colorScheme}}">
|
|
19
|
+
|
|
20
|
+
<nav class="site-nav">
|
|
21
|
+
<div class="nav-content">
|
|
22
|
+
<a href="../" class="nav-logo">{{site_name}}</a>
|
|
23
|
+
<div class="nav-links">
|
|
24
|
+
<a href="../">Home</a>
|
|
25
|
+
{{#nav_links}}
|
|
26
|
+
<a href="{{href}}"{{#active}} class="active"{{/active}}>{{label}}</a>
|
|
27
|
+
{{/nav_links}}
|
|
28
|
+
</div>
|
|
29
|
+
<button class="theme-btn" title="Toggle theme" aria-label="Toggle theme">
|
|
30
|
+
<svg class="icon-sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
31
|
+
<circle cx="12" cy="12" r="5"></circle>
|
|
32
|
+
<line x1="12" y1="1" x2="12" y2="3"></line>
|
|
33
|
+
<line x1="12" y1="21" x2="12" y2="23"></line>
|
|
34
|
+
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
|
35
|
+
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
|
36
|
+
<line x1="1" y1="12" x2="3" y2="12"></line>
|
|
37
|
+
<line x1="21" y1="12" x2="23" y2="12"></line>
|
|
38
|
+
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
|
39
|
+
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
|
40
|
+
</svg>
|
|
41
|
+
<svg class="icon-moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
42
|
+
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
|
43
|
+
</svg>
|
|
44
|
+
</button>
|
|
45
|
+
</div>
|
|
46
|
+
</nav>
|
|
47
|
+
|
|
48
|
+
<main class="page-content">
|
|
49
|
+
<header class="page-header">
|
|
50
|
+
<div class="header-ornament"></div>
|
|
51
|
+
<h1>Publications</h1>
|
|
52
|
+
<p>Articles, essays, and scholarly writings.</p>
|
|
53
|
+
</header>
|
|
54
|
+
|
|
55
|
+
<div class="writing-list">
|
|
56
|
+
{{#writing}}
|
|
57
|
+
<a href="{{url}}" target="_blank" class="writing-item">
|
|
58
|
+
<div class="writing-info">
|
|
59
|
+
<span class="writing-title">{{title}}</span>
|
|
60
|
+
{{#publication}}<span class="writing-publication">{{publication}}</span>{{/publication}}
|
|
61
|
+
</div>
|
|
62
|
+
<span class="writing-date">{{date}}</span>
|
|
63
|
+
</a>
|
|
64
|
+
{{/writing}}
|
|
65
|
+
</div>
|
|
66
|
+
</main>
|
|
67
|
+
|
|
68
|
+
<footer class="site-footer">
|
|
69
|
+
<div class="footer-ornament"></div>
|
|
70
|
+
<p>Crafted with <a href="https://devfolio.page" target="_blank">devfolio.page</a></p>
|
|
71
|
+
</footer>
|
|
72
|
+
|
|
73
|
+
<script src="../assets/script.js"></script>
|
|
74
|
+
</body>
|
|
75
|
+
</html>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<section id="education" class="section">
|
|
2
|
+
<h2 class="section-title">Education</h2>
|
|
3
|
+
<div class="education-list">
|
|
4
|
+
{{#educations}}
|
|
5
|
+
<div class="education-item">
|
|
6
|
+
<div>
|
|
7
|
+
<div class="education-institution">{{institution}}</div>
|
|
8
|
+
<div class="education-degree">{{degree}}</div>
|
|
9
|
+
</div>
|
|
10
|
+
<span class="education-date">{{date.start}} - {{date.end}}</span>
|
|
11
|
+
</div>
|
|
12
|
+
{{/educations}}
|
|
13
|
+
</div>
|
|
14
|
+
</section>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<section id="experience" class="section">
|
|
2
|
+
<h2 class="section-title">Experience</h2>
|
|
3
|
+
<div class="experience-list">
|
|
4
|
+
{{#experiences}}
|
|
5
|
+
<div class="experience-item">
|
|
6
|
+
<div class="experience-header">
|
|
7
|
+
<span class="experience-company">{{company}}</span>
|
|
8
|
+
<span class="experience-role">{{role}}</span>
|
|
9
|
+
</div>
|
|
10
|
+
<span class="experience-date">{{date.start}} - {{date.end}}</span>
|
|
11
|
+
{{#highlights.length}}
|
|
12
|
+
<ul class="experience-highlights">
|
|
13
|
+
{{#highlights}}
|
|
14
|
+
<li>{{.}}</li>
|
|
15
|
+
{{/highlights}}
|
|
16
|
+
</ul>
|
|
17
|
+
{{/highlights.length}}
|
|
18
|
+
</div>
|
|
19
|
+
{{/experiences}}
|
|
20
|
+
</div>
|
|
21
|
+
</section>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<section class="hero">
|
|
2
|
+
<h1 class="hero-name">{{name}}</h1>
|
|
3
|
+
<p class="hero-title">{{title}}</p>
|
|
4
|
+
<p class="hero-location">{{location}}{{#timezone}} · {{timezone}}{{/timezone}}</p>
|
|
5
|
+
|
|
6
|
+
<div class="hero-links">
|
|
7
|
+
{{#email}}<a href="mailto:{{email}}" class="hero-link">Email</a>{{/email}}
|
|
8
|
+
{{#website}}<a href="{{website}}" target="_blank" class="hero-link">Website</a>{{/website}}
|
|
9
|
+
{{#github}}<a href="https://github.com/{{github}}" target="_blank" class="hero-link">GitHub</a>{{/github}}
|
|
10
|
+
{{#linkedin}}<a href="https://linkedin.com/in/{{linkedin}}" target="_blank" class="hero-link">LinkedIn</a>{{/linkedin}}
|
|
11
|
+
{{#twitter}}<a href="https://twitter.com/{{twitter}}" target="_blank" class="hero-link">Twitter</a>{{/twitter}}
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<p class="hero-bio">{{bio}}</p>
|
|
15
|
+
</section>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<section id="projects" class="section">
|
|
2
|
+
<h2 class="section-title">Projects</h2>
|
|
3
|
+
<div class="projects-grid">
|
|
4
|
+
{{#projects}}
|
|
5
|
+
<div class="project-card{{#featured}} featured{{/featured}}">
|
|
6
|
+
<div class="project-header">
|
|
7
|
+
<h3 class="project-name">{{name}}</h3>
|
|
8
|
+
{{#url}}<a href="{{url}}" target="_blank" class="project-link">View</a>{{/url}}
|
|
9
|
+
</div>
|
|
10
|
+
<p class="project-description">{{description}}</p>
|
|
11
|
+
<div class="project-tags">
|
|
12
|
+
{{#tags}}<span class="project-tag">{{.}}</span>{{/tags}}
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
{{/projects}}
|
|
16
|
+
</div>
|
|
17
|
+
</section>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<section id="skills" class="section">
|
|
2
|
+
<h2 class="section-title">Skills</h2>
|
|
3
|
+
<div class="skills-grid">
|
|
4
|
+
{{#skillCategories}}
|
|
5
|
+
<div class="skill-category">
|
|
6
|
+
<div class="skill-category-name">{{category}}</div>
|
|
7
|
+
<div class="skill-list">{{skills}}</div>
|
|
8
|
+
</div>
|
|
9
|
+
{{/skillCategories}}
|
|
10
|
+
</div>
|
|
11
|
+
</section>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<section id="writing" class="section">
|
|
2
|
+
<h2 class="section-title">Writing</h2>
|
|
3
|
+
<div class="writing-list">
|
|
4
|
+
{{#articles}}
|
|
5
|
+
<div class="writing-item">
|
|
6
|
+
<div>
|
|
7
|
+
<a href="{{url}}" target="_blank" class="writing-title">{{title}}</a>
|
|
8
|
+
{{#description}}<p class="writing-description">{{description}}</p>{{/description}}
|
|
9
|
+
</div>
|
|
10
|
+
<span class="writing-date">{{date}}</span>
|
|
11
|
+
</div>
|
|
12
|
+
{{/articles}}
|
|
13
|
+
</div>
|
|
14
|
+
</section>
|