The split that matters
A portfolio looks simple until you try to publish it. Projects need a stack, a role, and a visibility flag. Articles need tags and a reading time. A biography needs none of those fields.
What stays relational
Projects, posts, skills, and experience each have their own table. Slugs are unique. Publication status is a column, not a guess. Drafts are filtered in the query that renders the public site.
What stays editable
Navigation order, the homepage introduction, and SEO titles live in settings or menu records. Changing them does not require a template edit.
What stays unpublished
Client secrets, credentials, and unverified metrics do not belong in the database in the first place. A status flag is not a substitute for judgment.