Skip to main content
Portfolio Code

API Camp · Full cohort portfolio lab

Build it.
Test it.
Prove it.

28 product ideas become 28 guided testing briefs.

Each tutorial supplies a small Python domain-model starter, pytest acceptance checks, and a Playwright user-journey scaffold for the local interface you build.

Choose a tutorial ↓Set up Python →

One setup for every project

Prepare your testing workspace.

  1. 01Create a folder and virtual environment.python -m venv .venv
  2. 02Install pytest and the Playwright plugin.python -m pip install pytest pytest-playwright
  3. 03Install the Chromium browser.python -m playwright install chromium
  4. 04Run the complete portfolio test.python -m pytest -v

Scope: these are learning scaffolds, not completed implementations of the original products. Build the behavior, connect the interface, replace placeholder criteria with real rules, and make the tests pass locally before presenting a project as portfolio evidence.

Choose your build

Portfolio tutorial library

28 tutorials shown

01Tutorials & learning

API Camp

Build a progress tracker that records completed lessons and calculates a certificate-ready score.

  • Python
  • pytest
  • Playwright
02Tutorials & learning

API + LLM Tutorial

Build a small provider-neutral text-generation API with a deterministic fake model and an explicitly optional live adapter.

  • Python
  • pytest
  • Playwright
03Tutorials & learning

Magnet SDET Study Lab

Build a ten-week study-plan engine that schedules topics and records evidence.

  • Python
  • pytest
  • Playwright
04WordPress plugins

Creator Resources Hub

Build a resource directory that filters tools by a visitor’s goal.

  • Python
  • pytest
  • Playwright
05Apps & extensions

DomainLaunch Domain Searcher

Build a domain-quality scorer with explainable recommendations.

  • Python
  • pytest
  • Playwright
06Product experiences

Solo Engine

Build an approval-first content queue with explicit delivery states.

  • Python
  • pytest
  • Playwright
07Apps & extensions

Focus Redirect

Build a focus-rule evaluator that decides whether a URL should be redirected.

  • Python
  • pytest
  • Playwright
08Apps & extensions

TopicFeed Focus

Build a topic-lane manager that replaces an open-ended video feed.

  • Python
  • pytest
  • Playwright
09Apps & extensions

YouTube Feed Coach

Build a mobile viewing queue with focus timers and avoid rules.

  • Python
  • pytest
  • Playwright
10Apps & extensions

Video Resource Saver

Build a validated study-resource catalog for video links and notes.

  • Python
  • pytest
  • Playwright
11Apps & extensions

Nuggets of Wisdom

Build a consent-first message scheduler with claim tokens.

  • Python
  • pytest
  • Playwright
12Automation

Benable Control Center

Build a review-first recommendation queue with resumable posting.

  • Python
  • pytest
  • Playwright
13Automation

Automation Platform

Build a job runner that tracks queued, running, completed, and failed work.

  • Python
  • pytest
  • Playwright
14Automation

Book Name Reader

Build a book-title extraction pipeline with a human review queue.

  • Python
  • pytest
  • Playwright
15Automation

Traffic Getter

Build a campaign planner that validates destinations before scheduling.

  • Python
  • pytest
  • Playwright
16Automation

Job Skill Planner

Build a skill-gap scorer from a collection of job listings.

  • Python
  • pytest
  • Playwright
17Product experiences

HostPapa Promo Hub

Build a hosting chooser that captures consented leads.

  • Python
  • pytest
  • Playwright
18WordPress plugins

Mass Comment Cleaner Free

Build a bounded comment-cleanup planner with a 500-item limit.

  • Python
  • pytest
  • Playwright
19WordPress plugins

Mass Comment Cleaner Pro

Build a licensed cleanup planner for batches up to 5,000.

  • Python
  • pytest
  • Playwright
20WordPress plugins

Mass Comment Cleaner Enterprise

Build a configurable high-volume cleanup runner with operational safeguards.

  • Python
  • pytest
  • Playwright
21WordPress plugins

MCCP License Server

Build a small license validation service with expiry and edition checks.

  • Python
  • pytest
  • Playwright
22Business assets

WordPress Revenue Capture Kit

Build an audit scorer that turns findings into a scoped service proposal.

  • Python
  • pytest
  • Playwright
23Business assets

Mass Comment Cleaner Launch Bundle

Build a release verifier for Free, Pro, Enterprise, and license-server packages.

  • Python
  • pytest
  • Playwright
24Business assets

HostPapa Promo Kit

Build a customer-first hosting comparison and lead-magnet workflow.

  • Python
  • pytest
  • Playwright
25Business assets

Resources Hub Traffic Engine

Build a 30-day content queue with traceable campaign links.

  • Python
  • pytest
  • Playwright
26Business assets

Medium AI Articles Kit

Build an editorial validator for article structure and sourcing.

  • Python
  • pytest
  • Playwright
27WordPress plugins

Bulk Uploader Playground Sample

Build a safe bulk-upload validator with a reproducible sample fixture.

  • Python
  • pytest
  • Playwright
28Tutorials & learning

Pytest Tutorial

Build a small library system and prove it with reusable fixtures.

  • Python
  • pytest
  • Playwright
Step 1 · Product outcome

Build the smallest useful version.

Build a progress tracker that records completed lessons and calculates a certificate-ready score.

Step 2 · Python

Model the behavior.

Dataclasses, sets, validation, and percentage calculations.

Step 3 · pytest

Prove the rules.

Fixtures for fresh learner state and parametrized progress boundaries.

Step 4 · Playwright

Test the user journey.

Complete a challenge, inspect the progress bar, and verify the completion state.

Python domain model
from dataclasses import dataclass, field

@dataclass
class ApiCampProject:
    completed: set[str] = field(default_factory=set)

    def complete(self, criterion: str) -> None:
        if not criterion.strip():
            raise ValueError("criterion is required")
        self.completed.add(criterion)

    def is_portfolio_ready(self) -> bool:
        required = ["Duplicate lesson completions do not inflate progress","Progress stays between 0 and 100","The browser announces a completed challenge","A README explains the learning workflow"]
        return all(item in self.completed for item in required)
pytest acceptance tests
import pytest
from app import ApiCampProject

@pytest.fixture
def project():
    return ApiCampProject()

@pytest.mark.parametrize("criterion", [
    "Duplicate lesson completions do not inflate progress",
    "Progress stays between 0 and 100",
    "The browser announces a completed challenge",
    "A README explains the learning workflow"
])
def test_each_criterion_can_be_completed(project, criterion):
    project.complete(criterion)
    assert criterion in project.completed

def test_project_is_ready_only_after_all_criteria(project):
    assert project.is_portfolio_ready() is False
    for criterion in ["Duplicate lesson completions do not inflate progress","Progress stays between 0 and 100","The browser announces a completed challenge","A README explains the learning workflow"]:
        project.complete(criterion)
    assert project.is_portfolio_ready() is True
Playwright user-journey scaffold
from playwright.sync_api import Page, expect

def test_api_camp_tutorial(page: Page):
    page.goto("http://127.0.0.1:8000")

    expect(page.get_by_role("heading", name="API Camp")).to_be_visible()
    page.get_by_role("button", name="Run portfolio check").click()
    expect(page.get_by_role("status")).to_have_text("Ready for review")
Step 5

Proof to publish

  • Duplicate lesson completions do not inflate progress
  • Progress stays between 0 and 100
  • The browser announces a completed challenge
  • A README explains the learning workflow

Finish with a public README, one passing terminal screenshot, and a short explanation of the failure you fixed.