Skip to content

Commit fe44a9e

Browse files
committed
feat: new ai category for blogposts
1 parent 77a950e commit fe44a9e

File tree

7 files changed

+98
-5
lines changed

7 files changed

+98
-5
lines changed

public/posts/posts.json

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,70 @@
11
[
2+
{
3+
"title": "Prompt Engineering University",
4+
"date": "2026-02-17",
5+
"updated": "2026-02-22",
6+
"slug": "prompt-engineering-university",
7+
"description": "A comprehensive, university-style curriculum on Prompt Engineering. From foundational strategies to advanced agentic workflows.",
8+
"series": {
9+
"posts": [
10+
{
11+
"slug": "prompting-strategies",
12+
"title": "Zero-shot, One-shot, Many-shot, and Metaprompting",
13+
"filename": "/prompt-engineering/01-prompting-strategies.txt",
14+
"date": "2026-02-17",
15+
"category": "ai",
16+
"tags": ["prompt-engineering", "ai", "llm", "zero-shot", "few-shot", "metaprompting"],
17+
"authors": ["fezcode"]
18+
},
19+
{
20+
"slug": "structure-and-formatting",
21+
"title": "Structure & Formatting: Taming the Output",
22+
"filename": "/prompt-engineering/02-structure-and-formatting.txt",
23+
"date": "2026-02-18",
24+
"category": "ai",
25+
"tags": ["prompt-engineering", "ai", "llm", "json", "markdown", "output-format"],
26+
"authors": ["fezcode"]
27+
},
28+
{
29+
"slug": "reasoning-and-logic",
30+
"title": "Reasoning & Logic: Chain of Thought and Decomposition",
31+
"filename": "/prompt-engineering/03-reasoning-and-logic.txt",
32+
"date": "2026-02-19",
33+
"category": "ai",
34+
"tags": ["prompt-engineering", "ai", "llm", "cot", "tot", "decomposition", "reasoning"],
35+
"authors": ["fezcode"]
36+
},
37+
{
38+
"slug": "persona-and-context",
39+
"title": "Persona & Context: Role-Playing and The Art of Context Management",
40+
"filename": "/prompt-engineering/04-persona-and-context.txt",
41+
"date": "2026-02-20",
42+
"category": "ai",
43+
"tags": ["prompt-engineering", "ai", "llm", "persona", "context", "rag"],
44+
"authors": ["fezcode"]
45+
},
46+
{
47+
"slug": "evaluation-and-optimization",
48+
"title": "Evaluation & Optimization: How to Measure and Improve Your Prompts",
49+
"filename": "/prompt-engineering/05-evaluation-and-optimization.txt",
50+
"date": "2026-02-21",
51+
"category": "ai",
52+
"tags": ["prompt-engineering", "ai", "llm", "evaluation", "optimization", "temperature"],
53+
"authors": ["fezcode"]
54+
},
55+
{
56+
"slug": "advanced-agents-and-tools",
57+
"title": "Advanced Agents & Tools: From Chatbots to Problem Solvers",
58+
"filename": "/prompt-engineering/06-advanced-agents-and-tools.txt",
59+
"date": "2026-02-22",
60+
"category": "ai",
61+
"tags": ["prompt-engineering", "ai", "llm", "agents", "react", "tools", "function-calling"],
62+
"authors": ["fezcode"]
63+
}
64+
]
65+
},
66+
"authors": ["fezcode"]
67+
},
268
{
369
"slug": "linux-vs-unix-the-kernel-wars",
470
"title": "Linux vs. Unix: The Kernel Wars and the Philosophy of Modular Design",
@@ -1184,6 +1250,15 @@
11841250
"category": "dev",
11851251
"tags": ["golang", "go", "heap", "data-structures", "interview", "dev"],
11861252
"authors": ["fezcode"]
1253+
},
1254+
{
1255+
"slug": "sliding-window-and-fruit-into-baskets",
1256+
"title": "Interview Journal: #4 - Sliding Window Algorithms and Fruit Into Baskets",
1257+
"filename": "/interview-journal/04-sliding-window-and-fruit-into-baskets.txt",
1258+
"date": "2026-02-17",
1259+
"category": "dev",
1260+
"tags": ["golang", "go", "algorithms", "sliding-window", "interview", "dev"],
1261+
"authors": ["fezcode"]
11871262
}
11881263
]
11891264
},

src/components/BrutalistPostItem.jsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ const BrutalistPostItem = ({ post, isActive, onHover = () => {} }) => {
2323
? 'var(--color-gist-badge)'
2424
: category === 'feat'
2525
? 'var(--color-feat-badge)'
26-
: 'var(--color-rant-badge)';
26+
: category === 'ai'
27+
? 'var(--color-ai-badge)'
28+
: 'var(--color-rant-badge)';
2729

2830
const categoryBg =
2931
category === 'dev'
@@ -36,7 +38,9 @@ const BrutalistPostItem = ({ post, isActive, onHover = () => {} }) => {
3638
? 'rgba(245, 158, 11, 0.3)'
3739
: category === 'feat'
3840
? 'rgba(168, 85, 247, 0.3)'
39-
: 'rgba(16, 185, 129, 0.2)';
41+
: category === 'ai'
42+
? 'rgba(132, 204, 22, 0.2)'
43+
: 'rgba(16, 185, 129, 0.2)';
4044

4145
return (
4246
<motion.div

src/components/PostTile.jsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ const PostTile = ({ post }) => {
2525
? 'var(--color-gist-badge)'
2626
: post.category === 'feat'
2727
? 'var(--color-feat-badge)'
28-
: 'var(--color-rant-badge)';
28+
: post.category === 'ai'
29+
? 'var(--color-ai-badge)'
30+
: 'var(--color-rant-badge)';
2931

3032
const categoryBg =
3133
post.category === 'dev'
@@ -38,7 +40,9 @@ const PostTile = ({ post }) => {
3840
? 'rgba(245, 158, 11, 0.3)'
3941
: post.category === 'feat'
4042
? 'rgba(168, 85, 247, 0.3)'
41-
: 'rgba(16, 185, 129, 0.2)';
43+
: post.category === 'ai'
44+
? 'rgba(132, 204, 22, 0.2)'
45+
: 'rgba(16, 185, 129, 0.2)';
4246

4347
return (
4448
<motion.div

src/components/metadata-cards/PostMetadata.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ const getCategoryStyles = (category) => {
1616
return 'text-amber-300 bg-amber-900/20 border border-amber-900/50 hover:bg-amber-900/40';
1717
case 'feat':
1818
return 'text-purple-300 bg-purple-900/20 border border-purple-900/50 hover:bg-purple-900/40';
19+
case 'ai':
20+
return 'text-lime-400 bg-lime-900/20 border border-lime-900/50 hover:bg-lime-900/40';
1921
case 'rant':
2022
return 'text-emerald-300 bg-emerald-900/20 border border-emerald-900/50 hover:bg-emerald-900/40';
2123
default:

src/index.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ code {
123123
--bg-feat-card-hover: rgba(126, 34, 206, 0.275);
124124
--title-hover-feat: #a855f7; /* purple-500 */
125125

126+
/*ai card*/
127+
--color-ai-badge: #84cc16; /* lime-500 */
128+
--bg-ai-card: rgba(132, 204, 22, 0.175);
129+
--bg-ai-card-hover: rgba(132, 204, 22, 0.275);
130+
--title-hover-ai: #a3e635; /* lime-400 */
131+
126132
/*fezccode colors*/
127133
--fzcdx-background: #ffffff;
128134
--fzcdx-text-primary: #2d2d2d;

src/pages/blog-views/BrutalistBlogPage.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
const FILTERS = [
1919
{ id: 'all', label: 'All' },
2020
{ id: 'dev', label: 'Dev' },
21+
{ id: 'ai', label: 'AI' },
2122
{ id: 'feat', label: 'Feat' },
2223
{ id: 'rant', label: 'Rant' },
2324
{ id: 'series', label: 'Series' },
@@ -86,7 +87,7 @@ const BrutalistBlogPage = () => {
8687
const matchesFilter = () => {
8788
if (activeFilter === 'all') return true;
8889
if (activeFilter === 'series') return item.isSeries;
89-
return item.category === activeFilter && !item.isSeries;
90+
return item.category === activeFilter;
9091
};
9192
const matchesSearch = () => {
9293
if (!searchQuery) return true;

src/pages/luxe-views/LuxeBlogPage.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import LuxeArt from '../../components/LuxeArt';
1414
const FILTERS = [
1515
{ id: 'all', label: 'All' },
1616
{ id: 'dev', label: 'Dev' },
17+
{ id: 'ai', label: 'AI' },
1718
{ id: 'feat', label: 'Feat' },
1819
{ id: 'rant', label: 'Rant' },
1920
{ id: 'series', label: 'Series' },

0 commit comments

Comments
 (0)