-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdata.ts
More file actions
337 lines (326 loc) · 15.8 KB
/
Copy pathdata.ts
File metadata and controls
337 lines (326 loc) · 15.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
export type StackItem = {
name: string;
color: string;
};
export const site = {
name: "Daniel Kombou",
email: "danielkombou7@gmail.com",
github: "https://github.com/Danielkombou",
socials: [
{ label: "GitHub", href: "https://github.com/Danielkombou" },
{ label: "LinkedIn", href: "https://linkedin.com/in/kombou-daniel-b394b92a5" },
{ label: "X", href: "https://x.com/DanielKomb87182" },
],
};
export const hero = {
cta: "Let's talk",
};
export type Project = {
slug: string;
title: string;
description: string;
longDescription?: string;
href: string;
liveUrl?: string;
githubUrl?: string;
image: string;
tags?: string[];
features?: string[];
};
export const projects = {
description:
"I build tools that solve problems I run into as an engineer — each one a chance to ship, learn, and improve.",
items: [
{
slug: "readit",
title: "ReadIt",
description:
"Paste long text and listen instantly — a lightweight text-to-speech reader built for focus and speed.",
longDescription:
"ReadIt is a simple text-to-speech web app for people who struggle through long posts online. Paste or type text, hit play, and listen at your own pace. It ships with a clean, accessible interface and is designed to grow into summarization and a browser extension for reading any page out loud.",
href: "https://read-it-ecru.vercel.app/",
liveUrl: "https://read-it-ecru.vercel.app/",
githubUrl: "https://github.com/Danielkombou/ReadIt",
image: "/projects/readit.png",
tags: ["React", "TypeScript", "Vite", "TTS"],
features: [
"Paste or enter text and listen with instant playback",
"Minimal UI focused on accessibility and ease of use",
"Built to evolve toward summarization and a browser extension",
],
},
{
slug: "certigen",
title: "CertiGen",
description: "Bulk certificate generation from templates with instant PDF export.",
longDescription: "CertiGen streamlines certificate issuance for events, bootcamps, and institutions by enabling template-based bulk generation and instant PDF exports.",
href: "https://certigen-swart.vercel.app/",
liveUrl: "https://certigen-swart.vercel.app/",
githubUrl: "https://github.com/Danielkombou/Academia-Frontend",
image: "/projects/certigen.webp",
tags: ["React", "PDF", "Node.js"],
features: [
"Bulk certificate generation from custom templates",
"Instant client-side/server-side PDF export",
"Streamlined workflow for educational events and hackathons"
],
},
{
slug: "attendx",
title: "AttendX",
description: "Smart attendance tracking for modern teams and organizations.",
longDescription: "AttendX is a smart attendance tracking platform designed for modern teams and organizations. It simplifies checking in, tracking hours, and managing presence without burying teams in complicated setup.",
href: "https://attend-tichub.vercel.app/",
liveUrl: "https://attend-tichub.vercel.app/",
githubUrl: "https://github.com/Danielkombou",
image: "/projects/attendx.webp",
tags: ["Next.js", "TypeScript", "Tailwind"],
features: [
"Real-time presence tracking and hour logs",
"Clean, intuitive UI designed for fast adoption",
"Optimized load times and responsive mobile experience"
],
},
{
slug: "jarvis",
title: "JARVIS",
description:
"Terminal cybersecurity assistant for network scanning, vulnerability assessment, and ethical security testing on Ubuntu.",
longDescription: "JARVIS is a terminal cybersecurity assistant built in Python on Ubuntu. It provides structured network scanning, vulnerability assessment, and reporting to assist with ethical security testing.",
href: "https://github.com/Danielkombou/jarvis",
githubUrl: "https://github.com/Danielkombou/jarvis",
image: "/projects/jarvis.webp",
tags: ["Python", "Nmap", "Security"],
features: [
"Automated network discovery and Nmap integration",
"Vulnerability assessment and structured report generation",
"Modular command-line architecture for custom security extensions"
],
},
{
slug: "ecocleaners",
title: "EcoCleaners",
description:
"B2B waste exchange platform that turns scrap into revenue by connecting traders with specialized recyclers.",
longDescription: "EcoCleaners is a B2B waste exchange marketplace designed to convert industrial or domestic scrap into economic revenue by connecting waste generators with specialized recyclers.",
href: "https://github.com/NebaFavour/v0-waste-exchange-platform",
githubUrl: "https://github.com/NebaFavour/v0-waste-exchange-platform",
image: "/projects/ecocleaners.webp",
tags: ["Next.js", "Marketplace", "GreenTech"],
features: [
"B2B marketplace connecting waste traders and recyclers",
"GreenTech focus promoting sustainable scrap management",
"Responsive, modern Next.js frontend architecture"
],
},
{
slug: "dino-run",
title: "Dino Run",
description: "Chrome-dino inspired endless runner built with Python and Pygame.",
longDescription: "A Python recreation of the classic Chrome Dino endless runner game, built with Pygame to explore game loops, collision detection, and sprite rendering.",
href: "https://github.com/Danielkombou",
githubUrl: "https://github.com/Danielkombou",
image: "/projects/dino-run.svg",
tags: ["Python", "Pygame"],
features: [
"Smooth arcade game loop and gravity mechanics",
"Custom obstacle generation and collision detection",
"Built using Python and Pygame"
],
},
] satisfies Project[],
};
export const stack = {
description:
"Tools and languages I reach for day to day — from UI to APIs and deployment.",
items: [
{ name: "HTML5", color: "#E34F26" },
{ name: "CSS3", color: "#1572B6" },
{ name: "JavaScript", color: "#F7DF1E" },
{ name: "TypeScript", color: "#3178C6" },
{ name: "React", color: "#61DAFB" },
{ name: "Next.js", color: "#000000" },
{ name: "Tailwind CSS", color: "#06B6D4" },
{ name: "Bootstrap", color: "#7952B3" },
{ name: "MongoDB", color: "#47A248" },
{ name: "PostgreSQL", color: "#4169E1" },
{ name: "Neon", color: "#00E699" },
{ name: "Node.js", color: "#339933" },
{ name: "Express.js", color: "#000000" },
{ name: "REST APIs", color: "#FF6B35" },
{ name: "BetterAuth", color: "#7C3AED" },
{ name: "Flutter", color: "#02569B" },
{ name: "Python", color: "#3776AB" },
{ name: "Java", color: "#ED8B00" },
{ name: "SQL", color: "#336791" },
{ name: "Git", color: "#F05032" },
{ name: "GitHub", color: "#181717" },
{ name: "VS Code", color: "#007ACC" },
{ name: "Cursor AI", color: "#000000" },
{ name: "OpenCode", color: "#10B981" },
{ name: "Figma", color: "#F24E1E" },
{ name: "Vercel", color: "#000000" },
{ name: "Netlify", color: "#00C7B7" },
{ name: "Railway", color: "#0B0D0E" },
{ name: "Render", color: "#46E3B7" },
{ name: "Postman", color: "#FF6C37" },
{ name: "Zustand", color: "#443E38" },
{ name: "React Query", color: "#FF4154" },
{ name: "Context API", color: "#61DAFB" },
{ name: "Axios", color: "#5A29E4" },
{ name: "Framer Motion", color: "#0055FF" },
{ name: "Lucide", color: "#F56565" },
] satisfies StackItem[],
};
export type Writing = {
slug: string;
title: string;
date: string;
readTime: string;
excerpt: string;
content: string[];
};
export const writings = {
description:
"Notes on engineering, mentoring, and the small moments where things finally click.",
items: [
{
slug: "why-i-built-readit",
title: "Why I built ReadIt",
date: "2026-08-21",
readTime: "4 min read",
excerpt:
"Long posts online were slowing me down — so I built a tool that reads them out loud, with summarization still ahead.",
content: [
"I love learning online, but long articles and dense posts often wear me down. My eyes jump, my focus slips, and I abandon pieces I actually want to finish.",
"ReadIt started as a personal fix: paste the text, press play, and listen. Text-to-speech turned reading into something I could keep up with — on a walk, between tasks, or when staring at a wall of paragraphs felt impossible.",
"I kept the first version deliberately small. React, TypeScript, and Vite. A clean surface. Instant playback. No clutter. Accessibility and clarity mattered more than features on day one.",
"Summarization is next — a way to skim the spine of a piece before deciding to listen deeper. Longer term I want a browser extension so any page can speak without copy-paste.",
"Building ReadIt reminded me why I ship tools: when the friction is mine, the product stays honest. If it helps me finish more of what I start reading, it is already doing its job.",
],
},
{
slug: "cybersecurity-passion-to-jarvis",
title: "From curiosity to JARVIS",
date: "2026-08-12",
readTime: "6 min read",
excerpt:
"How a growing passion for cybersecurity turned into building JARVIS — a terminal assistant for ethical security work.",
content: [
"Cybersecurity did not start for me as a job title. It started as curiosity — the itch to understand how systems fail, and how to defend them before someone else finds the crack.",
"I spent nights reading about networks, permissions, and the quiet discipline behind ethical testing. The more I learned, the clearer it became: tools matter, but judgment matters more. Authorized scope, clear logs, and respect for systems are not optional.",
"That passion became JARVIS — a terminal cybersecurity assistant I built in Python on Ubuntu. Inspired by the idea of a calm operator beside you, JARVIS grew into network scanning, vulnerability assessment, reporting, and a modular core I could keep extending.",
"Building it forced me to connect theory with practice: Nmap for discovery, careful privilege handling, structured reports, and an interface that stays readable under pressure. Every module was a lesson in responsibility as much as capability.",
"JARVIS is still evolving, and so am I. Cybersecurity remains one of the paths where learning never really ends — and that is exactly why I keep building.",
],
},
{
slug: "building-attendx-from-scratch",
title: "Building AttendX from scratch",
date: "2026-05-29",
readTime: "5 min read",
excerpt:
"What I learned shipping an attendance product end to end — auth, data model, and the UI details that matter.",
content: [
"AttendX started as a simple question: why is attendance still messy for so many teams?",
"I wanted something fast to set up, clear to use, and useful the moment people clock in. That meant focusing on presence, hours, and insights without burying teams in setup.",
"The hardest part was not the feature list. It was keeping the product calm. Every screen had to answer one job: who is here, for how long, and what does that mean today.",
"Shipping the first usable version taught me to cut scope early, ship auth carefully, and treat empty states as part of the product — not an afterthought.",
],
},
{
slug: "mentoring-the-next-generation",
title: "Mentoring the next generation of engineers",
date: "2026-03-15",
readTime: "4 min read",
excerpt:
"Lessons from facilitating at Tic Foundation and helping interns turn confusion into momentum.",
content: [
"Mentoring changed how I write code. When you explain a bug to someone else, you find the assumptions you never questioned.",
"At Tic Foundation I spend time with interns who are hungry to build. The best sessions are not lectures. They are shared debugging, small demos, and honest feedback.",
"I try to teach three habits: read the error, shrink the problem, and ship something small every day.",
"Watching a team go from stuck to shipping is still one of the best parts of this work.",
],
},
{
slug: "read-your-error-messages",
title: "Read Your Error Messages",
date: "2026-01-21",
readTime: "3 min read",
excerpt:
"Most bugs get quieter when you stop guessing and start reading what the runtime already told you.",
content: [
"When something breaks, the fastest fix is usually already on the screen.",
"Error messages look scary at first. Stack traces feel noisy. But buried in that noise is often the exact file, line, and reason.",
"I used to jump straight into rewriting code. Now I pause, read the message twice, and only then open the editor.",
"That one habit has saved me hours — and it is the first thing I teach anyone I mentor.",
],
},
] satisfies Writing[],
};
export function getWriting(slug: string) {
return writings.items.find((w) => w.slug === slug);
}
export function getProject(slug: string) {
return projects.items.find((p) => p.slug === slug);
}
/** Format ISO date strings for display (e.g. 2026-08-12 → 12 Aug 2026). */
export function formatDate(iso: string) {
const date = new Date(`${iso}T00:00:00`);
if (Number.isNaN(date.getTime())) return iso;
return date.toLocaleDateString("en-GB", {
day: "numeric",
month: "short",
year: "numeric",
});
}
export const resumeData = {
summary:
"Versatile Frontend Developer with a strong foundation in HTML, CSS, JavaScript, and modern frameworks like React.js and Next.js. Proven ability to harness state management libraries, including React Query and Zustand, to enhance application performance. Passionate about creating engaging user experiences through UI/UX best practices and responsive design. Adept at collaborating with cross-functional teams to deliver high-quality web applications on schedule. Committed to leveraging cybersecurity awareness in development processes to mitigate vulnerabilities. Experienced mentor, dedicated to fostering the growth of aspiring developers by sharing knowledge in modern web technologies and project workflows.",
experience: [
{
role: "Front-end Developer Intern / Internship Program Manager",
company: "Tic Foundation",
location: "Cameroon, Yaoundé",
period: "Nov 2023 - Present",
highlights: [
"Contributed to various client and in-house projects, implementing scalable and responsive frontend solutions that enhanced user engagement and satisfaction.",
"Promoted to Internship Program Manager for exceptional technical skills, leading the training of over 30 interns across multiple cohorts.",
"Contributed to a project that improved frontend performance metrics by 25%, enhancing user interaction and load times.",
],
},
],
education: [
{
degree: "GCE A Level Certificate in Science",
institution: "GBHS Melong",
location: "Cameroon, Littoral",
period: "Sep 2021 - May 2023",
},
{
degree: "GCE O Level Certificate in Science",
institution: "GBHS Melong",
location: "Cameroon, Littoral Region",
period: "Sep 2016 - May 2021",
},
],
skills: {
soft: ["Team Collaboration", "Leadership", "Adaptability", "Accountability", "Mentoring & Training"],
languages: ["English", "French", "Latin"],
technical: [
"HTML5",
"CSS3",
"JavaScript (ES6+)",
"TypeScript",
"React.js",
"Next.js",
"Zustand (State Management)",
"Tailwind CSS",
"Responsive Web Design",
"UI/UX Implementation",
"API Integration (REST)",
"Git & GitHub",
],
tools: ["VS Code", "Chrome DevTools", "Figma"],
},
};