Single typed source of truth for site content. Components never import
from here — they go through the accessors in
lib/data/index.ts (getProjects(),
getFeaturedProjects(), …), so this folder can later be replaced by a CMS or
database without touching components.
- Edit the relevant file (
projects.ts,certificates.ts,experience.ts,blog.ts,profile.ts). Thesatisfiesassertion gives you full autocomplete and immediate type errors. - Follow the field docs in lib/types/ — e.g. dates are ISO
strings (
YYYY-MM-DD; experience usesYYYY-MM),endDate: nullmeans "Present",featured: trueputs a project on the Home highlight section. - Slugs must be unique, lowercase kebab-case — uniqueness is enforced by Zod, not convention.
- Run
npm run test—lib/data/data.test.tsvalidates every file against its Zod schema and fails loudly on any shape/uniqueness violation.
- Social URLs in
profile.tsare best-guess handles — verify each one. - Project
github/liveURLs arenull— add real links. - Project
imagesare empty — add screenshots under/public/images/projects/and list their paths. certificates.tsandexperience.tscontain realistic placeholders — replace with actual credentials and roles.