WordPressPortfolio

asadazam-portfolio-theme — WordPress Portfolio Template

By asadazam-dev

A WordPress portfolio theme written from scratch, using custom post types and ACF fields defined in PHP to drive projects, testimonials, and FAQ displays. The demo site is kreativehive.net/portfolio.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

3 previews
Desktop homepage1 / 3
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 3

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-04View source

What stands out

A quick read of the recorded project description.

01

Three custom post types (project, testimonial, faq_item) drive dynamic displays of projects, testimonials, and FAQs

02

ACF field groups are defined in PHP and version-controlled, so fields automatically appear when deployed to a new environment

03

functions.php only bootstraps, with features split into inc/ modules and template-parts/ block components

04

Light and dark themes switch via a data-theme attribute and CSS variables, with state persisted in localStorage

05

The README documents performance measures such as asynchronous fonts, script defer, and trimmed head output (author's own statements, not independently verified)

Template Details

This is a WordPress portfolio theme written from scratch without relying on page builders or starter frameworks. It serves both as the author's personal portfolio site (kreativehive.net/portfolio) and as a public code example. Dynamic content is supported by three custom post types: project (portfolio cards with a project_category taxonomy), testimonial (client testimonials), and faq_item (FAQ entries), all registered in inc/cpt.php with REST support, and default project categories are automatically written when the theme is activated. ACF field groups are written in PHP files (inc/acf-fields.php) rather than the database, covering project fields, testimonial fields, and a site options page, making them easy to version control and deploy across environments. Templates follow the WordPress template hierarchy, functions.php only bootstraps, and each feature is split into modules under inc/ and block components under template-parts/. The theme includes light and dark color schemes, switched via a data-theme attribute on html, with state stored in localStorage and first visits referencing prefers-color-scheme. Performance measures listed in the README include asynchronously loading Google Fonts, deferring scripts, trimming head output, removing emoji scripts, and using filemtime() for cache busting in development environments; these are the author's own statements and were not independently verified in this material. Before use, note: the theme depends on the Advanced Custom Fields plugin (the free version is sufficient). The README recommends WordPress 6.0+ and PHP 8.0+, but please refer to the repository's current documentation for specific version requirements. The code is MIT licensed and may be freely used, modified, and distributed; third-party assets such as images, fonts, and icons in the demo need separate license verification.

WordPressPortfolio

Is it right for your project?

Use Cases

  • Building a personal portfolio or freelancer showcase site centered on project cards
  • Teams that need to include ACF field definitions in Git and deploy WordPress sites across environments
  • As reference code for learning custom post types, template hierarchy, and modular theme structure

Suitable For

  • Developers familiar with WordPress theme structure who can configure ACF fields and admin options themselves
  • Those who want to maintain a single-page portfolio using pure CSS/JS without a build step
  • Projects that need theme code freely modifiable and distributable under the MIT license

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    Place the theme folder in /wp-content/themes/, install and activate the Advanced Custom Fields plugin, then activate the theme

  2. 2

    When the theme is activated, CPTs and default project categories are automatically written; then add projects, testimonials, and FAQ entries in the admin

  3. 3

    Configure hero copy and contact information in Portfolio Settings in the admin, and decide how the homepage displays under Settings → Reading

  4. 4

    The README recommends WordPress 6.0+ and PHP 8.0+; refer to the repository's current documentation for actual environment requirements

  5. 5

    Third-party assets such as demo images, fonts, and icons must be verified under their respective licenses and are not covered by the code's MIT license

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean external services or third-party assets are free.

Must comply with when using

  • Free use, modification, commercial use, and distribution of this version's code are permitted.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • The theme depends on the Advanced Custom Fields plugin to work properly; you must install and activate it yourself (the free version is sufficient).
  • The runtime environment requires WordPress 6.0 or higher and PHP 8.0 or higher; lower versions may not work properly.
  • The README recommends plugins such as Rank Math SEO or Yoast; these are optional recommendations, not mandatory requirements.
  • For reliable email sending, the README recommends additionally installing the WP Mail SMTP plugin, which involves third-party service configuration.
  • The README recommends using caching plugins (such as WP Rocket, LiteSpeed) to optimize performance; some are paid plugins.
  • Demo images, fonts, icons, and other third-party assets must be verified under their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domain, hosting, database, payment, or AI may incur additional charges.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

Advanced Custom Fields plugin (free version is enough)

Original README

WordPress 6.0+ - PHP 8.0+

Original README

Rank Math SEO (or Yoast)

Original README

WP Mail SMTP (reliable email delivery)

Original README

A caching plugin (WP Rocket, LiteSpeed, etc.)

Original README
https://github.com/asadazam-dev/asadazam-portfolio-theme/blob/main/LICENSEhttps://github.com/asadazam-dev/asadazam-portfolio-theme/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-04. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 80 / 100
Technologies
WordPress
Website type
Portfolio
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2026-05-15
Screenshot last checked
2026-10-04

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies WordPress as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Review declaration: [email protected] · 2026-10-04

Inspect the recorded source material

SHA-256: e5515b73fef1108ebdf0f190ce50bbe8ff1be2b7dc4c48fb280b952c1ee7d788

2026-10-04T02:44:40.461Z

Source file / repository
# Asad Azam Portfolio Theme

A custom WordPress theme built from scratch. No page builders, no starter frameworks, no shortcuts.

🌐 **Live site:** [kreativehive.net/portfolio](https://kreativehive.net/portfolio/)
👤 **Author:** Asad Azam — Senior WordPress Developer & WooCommerce Specialist
📍 **Based in:** Karachi, Pakistan
💼 **Status:** Open to senior full-time roles (remote & on-site) and select freelance WooCommerce projects

---

## What this is

This is both my portfolio *and* a public code sample. Every section of the live portfolio is also a worked example of something I do for clients:

- Custom Post Types & taxonomies (work grid, testimonials, FAQ)
- ACF field groups registered in PHP (version-controlled, deploy-friendly)
- ACF Options page for global site settings
- Modular template parts following the WordPress template hierarchy
- Properly enqueued assets with cache-busting via `filemtime()` in dev
- Performance baseline: 96 PageSpeed desktop, 85+ mobile (Core Web Vitals: TBT 0, CLS 0)
- Light/dark theme with localStorage persistence
- Async-loaded Google Fonts (non-render-blocking)
- Accessibility-first: semantic HTML, ARIA labels, keyboard navigation

If you're evaluating my work for a senior WordPress role, the source of this theme is the proof.

---

## Architecture

```
asadazam-portfolio-theme/
├── style.css                    Theme metadata header (intentionally minimal)
├── functions.php                Bootstrap — loads modular includes
├── front-page.php               Single-page orchestrator
├── index.php                    Fallback template
├── header.php                   <head>, status bar, sticky nav
├── footer.php                   Footer + floating WhatsApp + closing tags
├── 404.php                      Branded 404 page
├── readme.md                    Internal dev-focused docs
│
├── inc/
│   ├── theme-setup.php          add_theme_support, menus, image sizes
│   ├── enqueue.php              CSS/JS loading + performance hooks
│   ├── cpt.php                  3 CPTs + 1 taxonomy + activation seeders
│   ├── acf-fields.php           ACF field groups defined in PHP
│   └── helpers.php              asadazam_field(), asadazam_option(), URL helpers
│
├── template-parts/              Modular section components
│   ├── hero.php                 Hero with animated dashboard graphic
│   ├── marquee.php              Skill scroller
│   ├── now.php                  "Currently working on" cards (ACF Options)
│   ├── stats.php                Animated counter cards
│   ├── about.php                Personal copy
│   ├── work-grid.php            ⭐ Dynamic — pulls from project CPT
│   ├── capabilities.php         Expertise cards
│   ├── testimonials.php         ⭐ Dynamic — pulls from testimonial CPT
│   ├── process.php              How I work — 4 steps
│   ├── faq.php                  ⭐ Dynamic — pulls from faq_item CPT
│   └── contact.php              CTA + contact channels (ACF Options)
│
└── assets/
    ├── css/main.css             Minified production CSS (~38KB)
    └── js/main.js               Minified production JS (~4KB)
```

---

## Custom Post Types

Three CPTs power the dynamic portions of the portfolio:

| CPT           | Purpose                          | Taxonomy            |
| ------------- | -------------------------------- | ------------------- |
| `project`     | Portfolio work cards             | `project_category`  |
| `testimonial` | Client quotes                    | none                |
| `faq_item`    | FAQ accordion entries            | none                |

Each is registered in `inc/cpt.php` with proper labels, capabilities, and REST support (so they work in the Gutenberg editor and the WP REST API). Default project categories are seeded automatically on theme activation: *Custom Themes*, *WooCommerce*, *Service Sites*.

---

## ACF Field Groups (defined in PHP)

Defining ACF field groups in PHP (instead of only in the database) is a senior pattern that:

- Keeps field definitions in version control
- Makes it easy to deploy field changes across environments
- Prevents the "works on my machine, breaks in production" problem

See `inc/acf-fields.php` for the implementation. Field groups cover:

- **Project fields** — URL, color skin, brand chip, metric chip, project number, tags
- **Testimonial fields** — role, initials, featured boolean
- **Site Options** — hero copy, "now" cards repeater, contact info

---

## Performance Optimizations

Real techniques implemented in this theme, with measurable impact on Lighthouse scores:

- **Async Google Fonts** — non-blocking `<link rel="preload">` swap pattern saves ~1,700ms render-blocking time
- **Deferred JavaScript** — `<script defer>` so JS never blocks LCP
- **Minified production CSS/JS** — 28% size reduction
- **Removed emoji scripts** — saves ~16KB on every page load
- **Cleaned `<head>` output** — stripped `wp_generator`, `rsd_link`, `wlwmanifest_link`, etc.
- **Font preconnect** in header.php to warm up DNS/TLS before request
- **Cache-busting** via `filemtime()` in dev mode, version constant in production
- **Progressive enhancement** for animated counters — render correct values even if JS fails

Result: **PageSpeed 96 desktop, 85+ mobile** with Core Web Vitals all green (TBT 0ms, CLS 0).

---

## Setup (if you want to run it locally)

### Requirements

- WordPress 6.0+
- PHP 8.0+
- Advanced Custom Fields plugin (free version is enough)

### Install

1. Copy the theme folder to `/wp-content/themes/`
2. Install & activate Advanced Custom Fields
3. Activate this theme — CPTs and default categories are seeded automatically
4. **Settings → Reading** → set "Your homepage displays" to your preference
5. Visit **Portfolio Settings** in the admin sidebar to configure hero copy and contact info
6. Add projects, testimonials, FAQ items via their respective admin menus

### Recommended Plugins

- Advanced Custom Fields (required)
- Rank Math SEO (or Yoast)
- WP Mail SMTP (reliable email delivery)
- A caching plugin (WP Rocket, LiteSpeed, etc.)

---

## Theme System

Light/dark theme controlled by `[data-theme="dark"|"light"]` on `<html>`. Toggle button is in the nav. State persists in `localStorage` (key: `asad-portfolio-theme`). First-visit default respects `prefers-color-scheme`, falls back to dark.

CSS variables organize into a shared accent system + per-theme tokens. Adding a new theme is a matter of adding a `[data-theme="newtheme"]` block.

---

## Decisions Worth Calling Out

A few choices in this theme that I'd defend in a code review:

1. **No build step.** Plain CSS, plain JS. Senior WordPress devs know that adding webpack/vite to a theme for a single-page site is over-engineering. If the theme needed React components or TypeScript, the build cost would be justified. For this scope, it isn't.

2. **ACF fields in PHP, not the database.** Field group exports work, but PHP definitions live in git. When you deploy this theme to a new environment, fields just appear. No manual import step.

3. **Modular includes, thin functions.php.** Most theme `functions.php` files are 800+ lines of mixed concerns. Mine is 30 lines that loads focused module files. Each module has one job.

4. **Repeater fields replaced with flat individual fields** for tag chips. Repeaters are ACF Pro on some installations and have known rendering issues. Flat fields work everywhere, are easier to query, and are migration-safe.

5. **Progressive enhancement for counters.** Stat numbers render the target value as static HTML. JavaScript animates them when the user scrolls in — but if JS never loads, the numbers are still correct. Most portfolio themes show "0+" if JS fails. This one doesn't.

---

## License

[MIT](LICENSE) — use, fork, modify freely.

---

## Get in touch

- **Email:** [email protected]
- **WhatsApp:** +92 301 5651810
- **LinkedIn:** [in/asad-azam-518a5a236](https://linkedin.com/in/asad-azam-518a5a236/)
- **Portfolio:** [kreativehive.net/portfolio](https://kreativehive.net/portfolio/)

---

*Built by Asad Azam in Karachi, Pakistan. Open to senior WordPress full-time roles and select freelance WooCommerce projects.*
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.