Portfolio Building & Resume Design

Chapter 6
Technical Project Selection and Case-Study Writing

Bachelors Program in Full Stack Development
Portfolio Building & Resume Design   •   Bachelor

Technical Project Selection and Case-Study Writing

Introduction

A portfolio is not a catalogue of everything a developer has built. It is a curated body of evidence that helps an employer, client, or admissions panel judge technical capability, problem-solving, communication, and professional maturity. For a full-stack developer, a strong portfolio should demonstrate more than attractive interfaces. It should show how a problem was understood, requirements were negotiated, architecture was selected, software was implemented, quality was evaluated, security was considered, and results were communicated.

This chapter presents a systematic method for selecting representative technical projects and converting them into credible case studies. The method applies to academic projects, internships, freelance work, open-source contributions, hackathons, and carefully labelled personal projects. The emphasis is not on exaggeration or technology collecting. It is on evidence-based storytelling.

A useful case study connects five elements:

  1. Context—who experienced the problem and why it mattered.
  2. Engineering decisions—what was built and why particular technologies or designs were selected.
  3. Evidence—how the solution was tested and what outcomes were achieved.
  4. Reflection—what limitations remained and what was learned.
  5. Professional relevance—which capabilities the project demonstrates.

Learning Objectives

By the end of this chapter, students should be able to:

  • select portfolio projects using explicit and defensible criteria;
  • create a balanced project portfolio rather than a collection of similar applications;
  • distinguish claims, evidence, assumptions, and outcomes;
  • describe requirements, architecture, technology choices, implementation, testing, security, and deployment;
  • write a technically accurate and audience-appropriate case study;
  • evaluate project limitations, ethical risks, and maintenance responsibilities; and
  • use metrics without misleading readers or overstating personal contribution.

1. What Makes a Project Representative?

A representative project is not necessarily the largest, newest, or most visually impressive project. It is one that provides credible evidence of a capability relevant to the intended role. A project is especially valuable when it reveals decisions and trade-offs that a simple tutorial clone does not.

For a full-stack portfolio, representative evidence may include:

CapabilityPossible evidence
User-centred analysisPersonas, user stories, acceptance criteria, usability findings
Front-end engineeringResponsive design, state management, accessibility, performance work
Back-end engineeringAPI design, validation, business rules, error handling
Data engineeringSchema design, indexing, migrations, transaction handling
Quality assuranceAutomated tests, exploratory testing, defect resolution
SecurityAuthentication, authorization, input validation, secret management
DeliveryContinuous integration, deployment, monitoring, rollback planning
Professional practiceDocumentation, issue tracking, code review, collaboration

A project becomes stronger when the evidence is specific. “The application is secure” is a broad claim. “The API validates request bodies, uses parameterized database queries, applies role checks to administrative routes, and stores passwords using a slow, salted password-hashing algorithm” is a set of verifiable claims.

Tutorial projects and original projects

Tutorial projects can demonstrate that a student can follow instructions and reproduce a known pattern. They become more persuasive when substantially extended: for example, adding role-based access, offline support, meaningful tests, accessibility improvements, or a new domain model. A tutorial origin should not be hidden. Transparent labelling is more credible than presenting copied work as original.

An original project need not solve a global problem. A small application for scheduling equipment loans can be an excellent portfolio piece if it demonstrates requirements analysis, data integrity, authorization, testing, and deployment.

2. Selecting Projects Strategically

2.1 Start with the target role

Project selection should begin with the intended opportunity. A front-end role may require evidence of component design, accessibility, browser performance, and visual communication. A backend role may require evidence of API design, data modelling, concurrency, observability, and security. A general full-stack role requires breadth, but breadth should not become superficiality.

Create a capability matrix before selecting projects. Rate each candidate against the capabilities relevant to the target role and record the evidence available. The matrix should distinguish between “implemented,” “understood,” and “measured.”

2.2 Use weighted evaluation carefully

A weighted score can support discussion, but it should not replace judgement. Suppose projects are scored from 0 to 5 on six criteria:

  • relevance to the target role, weight 0.25;
  • technical depth, weight 0.20;
  • quality of evidence, weight 0.15;
  • user or organisational value, weight 0.15;
  • ownership and originality, weight 0.15; and
  • communication potential, weight 0.10.

The weights sum to 1.00. If Project A receives scores of 5, 4, 4, 3, 5, and 4 respectively, its weighted score is:

S = 0.25(5) + 0.20(4) + 0.15(4) + 0.15(3) + 0.15(5) + 0.10(4) = 1.25 + 0.80 + 0.60 + 0.45 + 0.75 + 0.40 = 4.25

Here, S is the weighted score on a 0–5 scale. The calculation is dimensionally consistent because all terms are weighted scores on the same scale. A high score does not prove that a project belongs in the portfolio. A technically deep project with no permission to publish screenshots, no reliable deployment, and unclear personal contribution may still require revision before publication.

A practical selection rule is to choose two to four projects that collectively cover the target capability profile. Avoid selecting three projects that all demonstrate the same framework and the same kind of CRUD interface.

2.3 Portfolio balance

A balanced undergraduate full-stack portfolio commonly includes:

  • one project showing end-to-end product development;
  • one project showing depth in a particular technical area, such as performance, data, security, or testing; and
  • one collaborative, client-based, open-source, or deployment-oriented project.

The exact combination depends on the target role. The principle is coverage with credible depth, not a fixed number of projects.

2.4 Evidence and ownership audit

Before writing, conduct an evidence audit:

QuestionEvidence to collect
What problem was addressed?Interview notes, brief, user stories, observed workflow
What did you personally do?Commits, task records, design artefacts, review comments
What was built?Repository, deployed URL, screenshots, API documentation
How well did it work?Test results, performance measurements, user feedback
What risks were addressed?Threat model, security tests, privacy decisions
What remains incomplete?Issue list, known defects, technical-debt record

The audit reduces two common risks: claiming team work as individual work and making unsupported performance or impact claims.

3. From Project Description to Case Study

A project description says what exists. A case study explains why it exists, how it was developed, and what was learned. The following structure is suitable for a portfolio website, a PDF portfolio, or an interview handout.

3.1 Context and problem

Begin with the setting, users, and consequence of the problem. Avoid starting with a technology list. “I built a React and Node application” gives no reason for the work. A stronger opening identifies a workflow and its weakness:

Student societies were recording equipment loans in spreadsheets. Staff could not reliably determine which items were overdue, and students had no self-service view of their reservations.

The statement should be bounded. Explain the setting, but do not invent a large social impact from a small prototype.

3.2 Requirements

Separate functional and non-functional requirements.

Functional requirements describe behaviour, such as:

  • a user can search available equipment;
  • an authenticated user can request a loan;
  • a coordinator can approve or reject a request; and
  • the system sends an overdue notification.

Non-functional requirements describe qualities or constraints, such as:

  • pages should remain usable on mobile devices;
  • unauthorized users must not view another user’s requests;
  • the system should provide meaningful error messages; and
  • deployment should be reproducible from version-controlled configuration.

Requirements should be testable. “The application should be fast” is weak. “The search endpoint should return a response within 500 ms for the defined test dataset under the stated test conditions” is more useful, provided the measurement method is reported.

User stories can help express intent, but acceptance criteria are needed for verification. For example:

As a student, I want to see available equipment by date so that I can request an item before planning an event.

Acceptance criteria might specify date validation, exclusion of already-approved loans, and an empty-result message.

3.3 Scope and prioritisation

A case study should explain what was deliberately excluded. Scope control demonstrates engineering judgement. A minimum viable product may include account creation, equipment records, reservations, and coordinator approval, while excluding payment processing, native mobile applications, and automated procurement.

A simple prioritisation model can classify requirements as essential, important, desirable, or excluded. More formal methods such as the MoSCoW framework are useful, but the chosen method matters less than documenting the reasoning.

4. Architecture and Technology Choices

4.1 Describe architecture at two levels

At the system level, identify the major components and their responsibilities: browser client, application programming interface, database, object storage, external services, and deployment platform. At the code level, explain boundaries such as presentation, domain logic, persistence, and infrastructure.

A case study should state data flow in plain language. For example:

  1. The browser sends an authenticated request over HTTPS.
  2. The API validates the request and identifies the user.
  3. The service layer checks reservation rules.
  4. A transaction writes the reservation and updates the relevant record.
  5. The API returns a deliberately limited response.

This explanation is more useful than naming a design pattern without showing its purpose.

4.2 Explain trade-offs, not brand names

Technology choices should be linked to constraints. A relational database may be selected because reservations require relationships, uniqueness constraints, and transactions. A document database may be appropriate where records have variable structure and relational operations are limited. A monolith may be preferable for a small team because it reduces operational complexity; microservices are not automatically more professional.

A useful decision record includes:

DecisionAlternatives consideredReason for choiceCost or limitation
Relational databaseDocument databaseStrong relationships and constraintsSchema migrations require planning
Server-rendered pages plus APISeparate frontend and backend deploymentsSimpler deployment for a small teamLess independent scaling
Managed hostingSelf-managed serverLower operational burdenLess infrastructure control

Technology claims must be version-aware. State the relevant framework or runtime versions when they affect reproducibility, and record major dependency updates.

4.3 Data modelling and integrity

Explain entities, relationships, identifiers, and constraints. For a reservation system, entities might include User, Equipment, Reservation, and Notification. A database-level uniqueness or exclusion strategy may prevent contradictory reservations, while application-level validation provides useful feedback. Relying only on client-side validation is insufficient because clients can be bypassed.

When discussing performance, identify the workload and measurement conditions. A statement such as “the query improved by 60%” is incomplete without baseline, dataset size, query pattern, environment, and measurement method.

5. Implementation Narrative

Implementation should be described as a sequence of important decisions rather than a diary of every coding task. Select two or three technically significant features and explain:

  • the input and expected output;
  • the domain rule;
  • the data or state changes;
  • error cases;
  • the design decision; and
  • how the feature was verified.

For example, a reservation operation should address duplicate submissions, conflicting dates, invalid identifiers, and authorization. If two users can submit requests at nearly the same time, the design should explain how the database or transaction boundary prevents inconsistent results.

Code excerpts can be useful when they reveal a principle, but long listings usually reduce readability. Include short excerpts only when the surrounding explanation identifies what the reader should notice.

6. Testing and Evidence of Quality

Testing is evidence, not a decorative list of tools. A credible case study identifies test levels and their purposes.

Test levelMain questionExample
UnitDoes a small unit behave correctly?Date-overlap rule
IntegrationDo components work together?API with test database
End-to-endCan a user complete a workflow?Login to approved reservation
AccessibilityCan people with varied abilities use it?Keyboard navigation and labels
SecurityCan common misuse be resisted?Authorization and injection tests
PerformanceDoes it meet a stated target?Response-time test under defined load
ExploratoryWhat unexpected behaviour appears?Manual boundary and error checks

Report meaningful results, including limitations. “32 automated tests passed” is less informative than “The reservation service has unit tests for valid, overlapping, boundary-date, and unauthorized cases; an integration test verifies persistence; manual testing covered keyboard navigation on the primary workflow.” Counts can supplement, but not replace, coverage of important risks.

Testing evidence should be reproducible where possible: state the command, environment, test data, and date. A performance result should identify whether the value is an average, percentile, or maximum. Do not compare measurements collected under incompatible conditions.

7. Security, Privacy, and Responsible Development

Security belongs in the project narrative from the beginning. A concise case study can use a threat-oriented structure:

  • Assets: accounts, personal information, reservations, administrative actions.
  • Threats: credential theft, unauthorized access, injection, abuse of notifications, data leakage.
  • Controls: password hashing, secure session handling, authorization checks, parameterized queries, input validation, rate limiting, logging, and backups.
  • Residual risk: what remains possible and how it would be monitored.

Authentication establishes identity; authorization determines what an identified user may do. These are distinct. A route that checks only whether a user is logged in may still permit an ordinary user to access an administrative function.

Never publish real passwords, access tokens, private keys, personal addresses, or unredacted user data. Use synthetic data in screenshots and repositories. Obtain permission before publishing client names, logos, source code, or user feedback. If a project processes personal data, discuss data minimisation, retention, access, and deletion. Legal obligations vary by jurisdiction, so students should not claim regulatory compliance without a competent basis.

Artificial intelligence tools can assist with brainstorming, test generation, documentation, or code explanation, but their use creates responsibilities. Generated code must be reviewed, tested, and checked for licensing, insecure patterns, fabricated citations, and leakage of confidential material. A portfolio may disclose substantial AI assistance when it affects authorship or evaluation. The student remains responsible for the submitted work.

8. Deployment and Operations

Deployment demonstrates that software can operate outside a development laptop. Explain the delivery path: source control, build, configuration, database migration, deployment, health check, and rollback or recovery plan.

Configuration secrets should be supplied through a secure environment mechanism rather than committed to source control. Separate development, test, and production data. Document database migrations and backup assumptions. A deployment case study should mention logging and monitoring, even if the project is small. Useful signals include failed requests, authentication failures, service health, and resource exhaustion.

A deployed demonstration should not be treated as proof of production readiness. State limitations such as single-instance hosting, limited monitoring, lack of high-availability design, or untested disaster recovery. Honest boundaries increase credibility.

9. Outcomes and Lessons Learned

Outcomes should connect to the original requirements. They may include:

  • completion of defined acceptance criteria;
  • user feedback from a specified number and type of participants;
  • reduced steps in a workflow;
  • measured response-time improvement under stated conditions;
  • successful deployment and reproducible setup; or
  • improved test coverage of a high-risk module.

Do not manufacture adoption, revenue, time savings, or user satisfaction. If no real users existed, write “In an illustrative evaluation with five volunteer testers...” rather than implying organisational deployment.

A strong lessons-learned section has three parts:

  1. Observation: what happened.
  2. Interpretation: why it happened.
  3. Action: what would change next time.

For example: “Early screens exposed database terminology to users. Usability feedback showed confusion about status labels. In a future iteration, the interface would use task-oriented language and test labels before implementation.”

10. Detailed Illustrative Case: Campus Equipment Exchange

The following is a fictional illustrative case, not a report of a real deployment.

Background and problem

A university media society lends cameras, microphones, and lighting kits to members. The illustrative team observed that requests were handled through email and a shared spreadsheet. Availability was difficult to establish, approval decisions were not consistently recorded, and overdue items were discovered late.

Requirements and scope

The minimum release required authenticated member accounts, equipment search by date, reservation requests, coordinator approval, an audit history, and email reminders. The team excluded payment processing, integration with the university identity provider, and native mobile applications. The exclusion reduced risk and kept the project suitable for a semester-scale build.

Architecture and choices

The solution used a browser client, a REST-style API, and a relational database. The relational model was selected because users, equipment, reservations, and approval events have clear relationships and require consistency. A single deployable application was chosen instead of microservices because the team was small and the workload was modest. This reduced operational overhead, although it also meant that the client and API could not be scaled independently.

The reservation workflow validated dates at the API boundary, checked user authorization, verified equipment availability, and persisted the reservation and event record within a transaction. The database enforced required fields and valid status values. Client-side validation improved usability but was not treated as a security control.

Implementation

The team first implemented equipment browsing and account access, then added reservation requests and coordinator approval. The most significant defect occurred when two requests for the same equipment were submitted close together. An initial application-only availability check was vulnerable to a race condition. The team moved the critical consistency rule into the transaction and added a concurrency-focused integration test. This illustrates why a case study should discuss failed approaches as well as successful features.

Testing and security

Unit tests covered date boundaries, invalid identifiers, status transitions, and authorization rules. Integration tests used an isolated test database. End-to-end testing covered member request and coordinator approval workflows. Manual accessibility testing checked keyboard operation, focus visibility, form labels, and error presentation.

The security review identified account data, reservation history, and coordinator privileges as assets. Controls included password hashing through a maintained library, secure transport in deployment, server-side authorization, parameterized database operations, generic login error messages, and removal of secrets from the repository. The project did not undergo an independent penetration test; that limitation is explicitly recorded.

Deployment and outcome

The application was deployed to a managed hosting service using a version-controlled build process. A health endpoint and application logs supported basic diagnosis. Synthetic accounts and equipment records were used in the public demonstration. In an illustrative evaluation, five volunteer students completed the principal reservation workflow, while one tester identified unclear wording around pending approval. The team revised the status labels and added a confirmation message.

The result should not be described as a university-wide operational system. It was a validated prototype demonstrating end-to-end development, transaction-aware data handling, security controls, testing, and deployment practice.

Lessons learned

The team learned that availability is a consistency problem, not merely a user-interface feature. They also learned that non-functional requirements must be written early: accessibility and authorization were easier to test when treated as acceptance criteria rather than late improvements. If the project continued, the next priorities would be independent security review, backup and recovery testing, identity-provider integration, and improved monitoring.

11. Writing and Presenting the Case Study

A portfolio reader often spends less than a minute deciding whether to continue. Present the project with a concise headline, one-sentence problem statement, role, technology summary, and links to evidence. Then provide the deeper case study for readers who want detail.

Use first person to identify personal contribution and team language to represent shared work accurately. “I implemented the authorization middleware” is appropriate if true. “We designed the deployment pipeline” is appropriate when the work was collaborative. Avoid inflated adjectives such as revolutionary, seamless, or enterprise-grade unless supported by evidence.

A practical editing sequence is:

  1. Write the technical truth without worrying about length.
  2. Remove implementation detail that does not support a decision or outcome.
  3. Add evidence for every important claim.
  4. Identify limitations and unresolved risks.
  5. Rewrite for the intended reader.
  6. Check links, screenshots, accessibility, spelling, and confidentiality.

The case study should be understandable to a technically literate recruiter while containing enough precision for an engineer to ask productive follow-up questions.

Challenges and Limitations

Project selection is constrained by available evidence, confidentiality, unequal access to clients, and the temptation to optimise for visual appearance. A student may have excellent work that cannot be published because it belongs to an employer. In that situation, describe the problem and personal contribution at an appropriate level without disclosing protected information.

Metrics can also mislead. A small test dataset may produce excellent response times that do not generalise. Volunteer usability testers may not represent the intended population. Automated test counts do not establish absence of defects. Framework popularity changes, and a current technology choice may later require migration. Case studies should therefore report conditions, boundaries, and uncertainty rather than presenting measurements as universal truths.

Best-Practice Checklist

Before publishing a case study, confirm that it:

  • identifies a real or explicitly illustrative problem;
  • states the intended users and project scope;
  • separates functional from non-functional requirements;
  • explains architecture and technology trade-offs;
  • distinguishes personal work from team work;
  • describes important implementation decisions;
  • reports testing methods and relevant results;
  • addresses authentication, authorization, privacy, and secrets;
  • explains deployment and operational limitations;
  • links outcomes to requirements;
  • includes lessons learned and future improvements; and
  • contains no confidential information or unsupported claims.

Chapter Summary

Technical project selection is a strategic activity. Projects should be chosen for the evidence they provide about capabilities relevant to a target role, not merely for size or visual polish. A weighted evaluation can structure judgement; in the worked example, the correctly calculated score is 4.25 on a 0–5 scale.

A case study should move from context and problem to requirements, scope, architecture, technology trade-offs, implementation, testing, security, deployment, outcomes, and lessons learned. Strong writing distinguishes facts from interpretation, records assumptions and limitations, and makes personal contribution explicit. Security and privacy are part of engineering quality, while deployment and operational evidence show whether a project extends beyond local development. Ethical portfolio practice requires permission, confidentiality, accurate attribution, responsible use of AI tools, and honest reporting of results.

Key Terms

Acceptance criteria: Conditions that determine whether a requirement has been satisfied.

Architecture: The structure of a system, including components, boundaries, relationships, and data flows.

Authentication: The process of establishing a user’s identity.

Authorization: The process of determining what an identified user is allowed to do.

Case study: A structured account of a problem, decisions, implementation, evidence, outcomes, and learning.

Functional requirement: A required system behaviour or capability.

Non-functional requirement: A quality, constraint, or operational property of a system.

Evidence audit: A systematic check of artefacts supporting project claims.

MVP: A minimum viable product containing the smallest useful set of capabilities for learning or validation.

Portfolio curation: Deliberate selection and presentation of work for a particular audience.

Technical debt: Future cost created by expedient technical decisions or incomplete implementation.

Threat model: An analysis of assets, threats, vulnerabilities, controls, and residual risks.

Unit test: A test of a small, isolated piece of software.

Integration test: A test of interaction between components or systems.

End-to-end test: A test of a complete user or business workflow.

Observability: The ability to understand system behaviour through logs, metrics, traces, and related signals.

Reproducibility: The ability to recreate a software build, test, or result under documented conditions.

Weighted score: A combined evaluation in which criteria contribute according to assigned weights.

Review Questions

Short Answer Questions

  1. What distinguishes a case study from a simple project description?
  2. Why should functional and non-functional requirements be documented separately?
  3. Explain the difference between authentication and authorization.
  4. Give two reasons why a portfolio should include project limitations.
  5. What evidence might support a claim about personal contribution to a team project?

Long Answer Questions

  1. Explain a systematic method for selecting two to four representative projects for a full-stack development portfolio.
  2. Discuss how architecture and technology choices should be justified in a technical case study.
  3. Describe how testing, security, privacy, and deployment evidence contribute to perceived project credibility.
  4. Explain why metrics can be misleading and propose a responsible method for reporting performance or user feedback.
  5. Analyse the relationship between scope control, minimum viable products, technical debt, and lessons learned.

Analytical / Application Questions

  1. A student has three projects: a tutorial clone with polished design, a collaborative API with strong tests but no public deployment, and a deployed inventory system with weak accessibility evidence. Which combination would you select for a general full-stack role, and what additional evidence would you request?
  2. Design a case-study outline for an application that manages clinic appointments. Identify at least four functional requirements, four non-functional requirements, two security threats, and suitable evidence for evaluating the solution.
  3. Using the weighted criteria in this chapter, calculate the score for a project rated 4, 5, 3, 4, 4, and 2 respectively. Explain why the resulting score should support, but not replace, professional judgement.

Multiple Choice Questions with Answers

Question 1

What is the primary purpose of selecting representative portfolio projects?

A. To display the greatest possible number of technologies

B. To provide credible evidence of capabilities relevant to a target role

C. To ensure every project uses a different programming language

D. To replace the need for technical interviews

Correct Answer: B. To provide credible evidence of capabilities relevant to a target role

Question 2

In the worked weighted-score example, what is Project A's score on the 0–5 scale?

A. 3.85

B. 4.05

C. 4.15

D. 4.25

Correct Answer: D. 4.25

Question 3

Which statement best distinguishes authentication from authorization?

A. Authentication establishes identity; authorization determines permitted actions

B. Authentication encrypts data; authorization compresses data

C. Authentication tests performance; authorization tests accessibility

D. Authentication stores backups; authorization restores databases

Correct Answer: A. Authentication establishes identity; authorization determines permitted actions

Question 4

Which is a non-functional requirement?

A. A coordinator can approve a reservation

B. A user can search equipment by date

C. The search endpoint should respond within a stated target under defined conditions

D. The system sends an overdue notification

Correct Answer: C. The search endpoint should respond within a stated target under defined conditions

Question 5

Why is client-side validation insufficient as a security control?

A. It always prevents invalid data from being entered

B. It can be bypassed because requests can be sent directly to the server

C. It makes databases relational

D. It prevents automated testing

Correct Answer: B. It can be bypassed because requests can be sent directly to the server

Question 6

Which testing level primarily evaluates a complete user workflow?

A. Unit testing

B. Integration testing

C. End-to-end testing

D. Static code formatting

Correct Answer: C. End-to-end testing

Question 7

Which information should not be published in a portfolio repository?

A. A synthetic demonstration account

B. A public architecture diagram

C. A redacted screenshot

D. A production access token

Correct Answer: D. A production access token

Question 8

What is the main reason for explaining technology trade-offs in a case study?

A. To maximise the number of framework names in the document

B. To show how choices responded to constraints and introduced consequences

C. To prove that newer technologies are always superior

D. To avoid describing requirements

Correct Answer: B. To show how choices responded to constraints and introduced consequences

Question 9

Which statement is the most responsible performance claim?

A. The application is universally fast

B. The application has perfect performance

C. The endpoint averaged 280 ms on the stated dataset and test environment

D. The framework guarantees sub-second responses

Correct Answer: C. The endpoint averaged 280 ms on the stated dataset and test environment

Question 10

What should a strong lessons-learned section connect?

A. Observation, interpretation, and a future action

B. Only positive adjectives and screenshots

C. Framework popularity and salary expectations

D. Unverified claims and confidential data

Correct Answer: A. Observation, interpretation, and a future action

Portfolio Building & Resume Design
Chapter 6 of 15