Capstone: Production-Ready Web ApplicationIntroductionA production-ready web application is more than a collection of functioning pages. It is a socio-technical product that must satisfy stakeholder goals, protect users and data, remain maintainable, operate reliably, and communicate its value clearly. A capstone project brings together requirements engineering, user-interface design, software architecture, database development, testing, security, deployment, documentation, analytics, governance, and teamwork. The central challenge is integration. A technically elegant application may fail because it solves the wrong problem. A visually attractive application may be inaccessible or insecure. A feature-rich application may be impossible to maintain. Professional development therefore requires evidence-based decisions and traceability from stakeholder need to deployed behaviour. This chapter presents a disciplined lifecycle for planning, designing, implementing, evaluating, and presenting a complete web application. The discussion is technology-neutral, although examples assume a conventional browser-based frontend, an HTTP-based backend, and a persistent data store. Learning ObjectivesBy the end of this chapter, a student should be able to: - Translate stakeholder needs into measurable requirements and acceptance criteria.
- Select and justify an appropriate architecture and technology stack.
- Design accessible, usable, secure, and maintainable web interfaces and services.
- Implement a coherent application with validation, error handling, persistence, and observability.
- Construct a risk-based test strategy and interpret its results.
- Deploy an application using repeatable configuration and operational controls.
- Apply privacy, security, governance, and responsible analytics principles.
- Organize collaborative work and produce professional technical and user documentation.
- Evaluate the delivered system against functional, quality, stakeholder, and business objectives.
1. From Stakeholder Problem to Project DefinitionA capstone begins with a problem, not a framework. Stakeholders may include customers, administrators, staff, regulators, and members of the public. Each group has different goals and constraints. Interviews, observation, document analysis, workshops, and surveys can reveal the current workflow and its weaknesses. A useful problem statement identifies: - the affected users;
- the current difficulty or unmet need;
- the context in which it occurs;
- the consequences of the problem; and
- the intended measurable improvement.
For example, “build a booking website” is an implementation-oriented statement. A stronger formulation is: “Community sports coordinators need a reliable way to publish available facilities and manage bookings because telephone-based scheduling creates conflicts and prevents residents from seeing availability.” Requirements and acceptance criteriaRequirements should be classified carefully. Functional requirements describe behaviour, such as registering an account, searching facilities, or cancelling a booking. Non-functional requirements describe qualities and constraints, such as accessibility, response time, privacy, availability, compatibility, and maintainability. A requirement should be testable. The statement “the system should be fast” is vague. “For an authenticated user, the booking list should return within two seconds for at least 95% of requests under the defined pilot load” is measurable, provided the measurement method and environment are specified. Acceptance criteria convert a requirement into observable evidence. A user story may be written as: As a resident, I want to view available facilities by date so that I can choose a suitable venue. Acceptance criteria could include: - A date can be selected using a keyboard-accessible control.
- Only facilities available on that date are displayed.
- The empty-result state explains that no facilities are available.
- A selected facility can be opened for detailed information.
- The result is verified by automated or manual tests.
Traceability links each requirement to design elements, implementation, tests, and release evidence. A simple requirements matrix is often more valuable than an extensive but unused specification. Scope, assumptions, and risksA capstone must have a controlled scope. The minimum viable product (MVP) contains the smallest coherent set of capabilities that delivers stakeholder value. A product backlog may classify items as essential, desirable, or deferred. Scope decisions should be explicit rather than emerging accidentally during implementation. Assumptions include the expected number of users, supported browsers, available identity services, data ownership, and operating environment. Risks include unclear requirements, third-party failure, data loss, security vulnerabilities, unavailable team members, and schedule compression. Each significant risk should have an owner, likelihood, impact, mitigation, and contingency. A common qualitative risk model uses likelihood and impact categories. It is not a scientific probability calculation unless those categories are calibrated; its purpose is prioritization. High-impact risks should be addressed early through prototypes, technical spikes, or stakeholder clarification. 2. Architecture and Design JustificationArchitecture describes the major parts of a system and the relationships among them. A typical web application contains: - a presentation layer running in the browser;
- an application or API layer implementing use cases;
- a persistence layer managing data;
- external services such as email, payments, maps, or identity providers; and
- operational services for logging, monitoring, deployment, and backups.
A layered architecture separates responsibilities. The presentation layer handles interaction and display, the application layer coordinates business rules, and the data layer manages storage. Separation reduces coupling and allows a change in one area to be tested without rewriting the entire application. A modular monolith is often an appropriate capstone architecture. It can contain clear modules and deployment boundaries without the operational complexity of distributed microservices. Microservices may be justified when independent scaling, organizational autonomy, or strong isolation is genuinely required. They should not be selected merely because they are fashionable: network calls, distributed debugging, deployment coordination, and data consistency create additional costs. Architectural decision recordsAn architectural decision record (ADR) documents a significant choice. A concise ADR includes the context, decision, alternatives, consequences, and status. For example: - Context: The application has a small team and one primary relational data domain.
- Decision: Use a modular monolith with a relational database.
- Alternatives: Microservices and a serverless-only design.
- Consequences: Simpler deployment and transactions, but less independent scaling.
This reasoning demonstrates professional judgement. It also helps future maintainers understand why a design exists. Data and domain designIdentify domain entities, their attributes, relationships, and lifecycle states. A booking domain might include User, Facility, Booking, and Payment. A booking could progress through Requested, Confirmed, Cancelled, and Completed states. State transitions should be defined explicitly so that invalid operations—such as cancelling an already completed booking—are rejected consistently. Database constraints are part of correctness. Primary keys identify records; foreign keys preserve relationships; uniqueness constraints prevent duplicate values; check constraints restrict invalid states where supported. Application validation improves user feedback, but database constraints provide a final integrity boundary. Concurrency must be considered. If two users attempt to reserve the same facility and time simultaneously, checking availability in the interface alone is insufficient. The server must enforce the rule using a transaction, appropriate locking or a database constraint, and a clear failure response. The user interface should then explain that the resource was taken by another request. 3. User Experience, Accessibility, and Frontend DesignGood user experience reduces cognitive effort and supports task completion. A design system should establish consistent typography, spacing, colour, buttons, forms, feedback, navigation, and responsive behaviour. Components should have one clear purpose and predictable states: default, focus, hover, disabled, loading, success, and error. Accessibility is a design and engineering responsibility, not a final inspection. The application should follow the Web Content Accessibility Guidelines (WCAG) applicable to the project and should be evaluated with both automated tools and human interaction. Important practices include: - semantic HTML before custom widgets;
- labels associated with form controls;
- visible keyboard focus;
- logical heading hierarchy;
- sufficient colour contrast;
- text alternatives for meaningful images;
- captions or transcripts for relevant media;
- error messages that identify the field and correction;
- content that remains usable when text is enlarged; and
- avoidance of colour as the only means of communicating status.
ARIA can improve custom controls, but incorrect ARIA can make an interface less accessible. Native elements are generally preferable because browsers and assistive technologies already understand their behaviour. Forms deserve particular attention. Each field should have a clear label, input type, format guidance, validation, and an understandable error state. Validation must occur on the server even when client-side validation is provided. Client-side checks improve responsiveness; they cannot be trusted for authorization or data integrity. Responsive design should consider small screens, touch targets, slow connections, and zoom. Progressive enhancement provides a useful baseline experience before optional scripts or advanced browser features are added. 4. Implementation for MaintainabilityImplementation quality is visible in structure, naming, interfaces, tests, and documentation. Source code should be organized around coherent modules rather than arbitrary file size. Functions should have clear inputs and outputs, and side effects should be limited and identifiable. Configuration such as database URLs, credentials, feature flags, and service endpoints must be externalized. Secrets must not be committed to source control or placed in client-delivered code. Separate development, test, staging, and production configuration, while avoiding unreviewed differences that make failures difficult to reproduce. Validation and error handling should be deliberate. The application should distinguish user errors, authentication failures, authorization failures, missing resources, conflicts, dependency failures, and unexpected internal errors. Responses should help legitimate users recover but should not disclose stack traces, secrets, SQL statements, or sensitive internal details. An API should use consistent resource naming, status codes, validation rules, pagination, and error formats. Idempotency should be considered for operations that may be retried. For example, a payment or order request should not create duplicates merely because a network client repeats a request. Logging should record events useful for diagnosis, such as request correlation identifiers, operation names, outcome, duration, and safe identifiers. Logs should not expose passwords, access tokens, complete payment data, or unnecessary personal information. Version control is the authoritative history of the project. Small, focused commits, code review, protected main branches, and automated checks reduce integration risk. A team should agree on branching, review, formatting, testing, issue tracking, and definition-of-done conventions at the beginning of the project. 5. Testing and EvaluationTesting is an evidence-producing activity. It does not prove that software contains no defects; it provides increasing confidence for defined risks and behaviours. A balanced strategy includes: - Unit tests: verify small functions or modules in isolation.
- Integration tests: verify collaboration with databases, queues, or external boundaries.
- Contract tests: verify that service interfaces satisfy agreed schemas and behaviours.
- End-to-end tests: exercise important user journeys through a realistic stack.
- Accessibility tests: combine automated scanning with keyboard and assistive-technology checks.
- Security tests: inspect dependencies, authentication, authorization, input handling, and common attack paths.
- Performance tests: measure behaviour under a stated workload and environment.
- User acceptance tests: determine whether stakeholders can complete intended tasks.
Tests should be repeatable and independent where possible. Test data must be synthetic or appropriately controlled. A failing test is not automatically a defect in the application; it may indicate an incorrect requirement, unstable test, environmental problem, or changed contract. The cause must be investigated. Quantitative evaluationA useful service-level measure is availability. Over a defined observation period: Availability (%) = (Total agreed time − Unavailable time) ÷ Total agreed time × 100 Availability is meaningful only when the observation period, exclusions, monitoring method, and definition of unavailable time are specified. A maintenance exclusion, for example, must be agreed rather than silently removed after an outage. For a binary classification such as detecting fraudulent bookings, precision and recall may be relevant: Precision = True positives ÷ (True positives + False positives) Recall = True positives ÷ (True positives + False negatives) Precision answers, “Of the items classified positive, how many were actually positive?” Recall answers, “Of the actual positive items, how many were identified?” These metrics apply only when the classes and decision threshold are defined. They should not be used as generic measures of application quality. Performance results should report the workload, environment, sample size, percentile or summary statistic, and system version. An average response time alone can hide severe delays experienced by a minority of users. 6. Security, Privacy, and GovernanceSecurity should be designed through threat modelling. Identify assets, actors, trust boundaries, entry points, threats, mitigations, and residual risk. A simple threat model may consider spoofing identity, tampering with data, repudiation, information disclosure, denial of service, and elevation of privilege. Core controls include: - strong password hashing through a well-maintained adaptive algorithm;
- secure session management and appropriate cookie attributes;
- multi-factor authentication where risk justifies it;
- server-side authorization on every protected operation;
- parameterized database access;
- output encoding and contextual content security measures;
- protection against cross-site request forgery where relevant;
- transport encryption;
- dependency and patch management;
- rate limiting and abuse detection; and
- secure backups with tested restoration.
Authentication establishes who a user is; authorization determines what that user may do. A hidden button is not authorization. The server must enforce object-level and function-level permissions, including protection against changing an identifier in a request to access another user’s record. Privacy requires purpose limitation, data minimization, retention controls, transparency, access management, and lawful processing appropriate to the jurisdiction. Collecting a field “just in case” increases risk and governance burden. Personal data should have an owner, retention rule, access policy, and deletion or archival process. Governance also includes licensing, intellectual property, accessibility obligations, incident response, audit trails, change approval, and acceptable use. Analytics must be proportionate and transparent. Product metrics should not encourage harmful manipulation or surveillance. 7. Deployment and OperationsDeployment converts source code into a running service. A repeatable pipeline commonly performs dependency installation, static analysis, tests, security checks, packaging, migration review, deployment, smoke testing, and rollback preparation. Continuous integration catches defects close to their introduction. Continuous delivery makes a releasable version available through an automated process; continuous deployment additionally releases automatically when defined controls pass. The choice should reflect organizational risk and approval requirements. Infrastructure should be documented and, where feasible, defined as code. Environments need controlled configuration, access management, backups, monitoring, and alerting. A production release should have a version identifier, release notes, migration plan, rollback strategy, and responsible person. Observability has three related dimensions: - Logs describe discrete events.
- Metrics summarize measurable behaviour over time.
- Traces connect work across components and requests.
Alerts should be actionable. An alert that fires constantly becomes background noise. Useful indicators may include error rate, latency percentiles, saturation, failed authentication patterns, queue depth, and backup status. Operational runbooks should explain diagnosis, mitigation, escalation, and recovery. A post-incident review should focus on contributing conditions and system improvement rather than blame. It should record impact, timeline, detection, response, root or contributing causes, and preventive actions. 8. Analytics and Evidence-Based ImprovementAnalytics should answer defined questions. Examples include: Which step causes users to abandon registration? How long does a booking take? Are accessibility improvements increasing successful task completion? Events should have clear names, properties, ownership, retention, and privacy classification. A funnel can describe ordered stages such as landing page, search, detail view, and completed booking. If 800 users begin a process and 200 complete it, the completion rate is: Completion rate = Completed users ÷ Started users × 100 = 200 ÷ 800 × 100 = 25% This percentage describes the observed sample and period; it does not by itself establish why users abandoned the process or prove that a design change caused improvement. Instrumentation should avoid unnecessary personal data and should respect consent and regional requirements where applicable. Qualitative evidence—interviews, usability observations, support requests, and open-ended feedback—complements quantitative analytics. A low completion rate may result from confusing content, a technical error, lack of trust, or an unsuitable audience. Triangulation produces stronger conclusions than any single metric. 9. Teamwork, Documentation, and Professional PresentationA capstone team should allocate responsibilities without creating isolated silos. Roles may include product owner liaison, frontend lead, backend lead, quality lead, security lead, and release coordinator, but every member should understand the system sufficiently to support it. A professional project repository commonly contains: - a concise README with purpose, setup, architecture, and usage;
- requirements and acceptance criteria;
- architecture decisions;
- API and data documentation;
- testing and quality reports;
- threat model and privacy notes;
- deployment and rollback instructions;
- operations runbook;
- known limitations and future work; and
- licensing and attribution information.
Documentation should be versioned with the system and written for its audience. A user guide explains tasks in accessible language. A developer guide explains setup and extension. An operations guide explains deployment, monitoring, recovery, and escalation. A final presentation should demonstrate a realistic user journey, explain the stakeholder problem, justify major design choices, show evidence of testing and security, disclose limitations, and state what would be done next. A live demo should have prepared data and a recorded fallback. Claims should be supported by screenshots, test results, logs, or stakeholder feedback rather than unsupported adjectives such as “robust” or “secure.” 10. Illustrative Case: Community Facility Booking SystemBackgroundThis fictional case concerns a municipal recreation department that manages sports halls and meeting rooms. Residents currently telephone staff, while staff maintain separate spreadsheets. Double bookings occur, availability is difficult to discover, and administrators spend substantial time resolving conflicts. Problem and analysisInterviews identify three user groups: residents, facility administrators, and maintenance staff. Residents need search and booking; administrators need approval, reporting, and conflict management; maintenance staff need blocked dates and operational notes. The system must protect personal information and remain usable on mobile devices. The team defines an MVP containing account creation, facility search, availability display, booking requests, cancellation, administrator management, and audit records. Online payment and automated resource allocation are explicitly deferred. The principal risks are concurrent booking, unauthorized access to administrative functions, inaccurate availability data, and unclear cancellation rules. The team prioritizes these risks before visual refinement. Approach and solutionThe team selects a modular monolith with a relational database. The domain modules are identity, facilities, bookings, administration, and notifications. A transaction and database constraint protect against overlapping confirmed bookings. Authorization is checked on the server using role and ownership rules. The interface provides a keyboard-accessible date search, clear availability states, responsive tables or cards, confirmation summaries, and recoverable error messages. Automated tests cover booking rules and authorization. Integration tests verify persistence and conflict handling. End-to-end tests cover searching, booking, cancellation, and administrator approval. Analytics record search completion, booking completion, cancellation, and errors without storing unnecessary free-text personal information. A dashboard displays operational counts and funnel completion using aggregated data. OutcomeDuring a controlled pilot, staff confirm that availability is easier to manage and residents can complete common tasks without telephone support. Testing identifies an authorization defect in an early version: a user could view another user’s booking by changing an identifier in a URL. The defect is corrected by enforcing ownership on the server and adding a regression test. The team reports the limitation that payment and integration with the municipal calendar are not yet implemented. Learning pointsThe case demonstrates that production readiness is a system property. The successful result depends not only on screens but also on domain rules, concurrency control, authorization, evidence, stakeholder feedback, and honest communication of limitations. 11. Challenges, Limitations, and Contemporary PracticeCapstone teams face competing pressures: limited time, incomplete stakeholder availability, evolving requirements, and unequal technical experience. The response is not to eliminate planning but to make uncertainty visible. Frequent demonstrations, prioritized scope, early risk reduction, and incremental integration are more effective than postponing integration until the final week. No single framework guarantees quality. Automated tests can miss usability failures; vulnerability scanners can miss business-logic flaws; analytics can misrepresent users who do not consent or cannot be measured; and code review can inherit the assumptions of the reviewers. Quality assurance therefore requires complementary methods and critical interpretation. Artificial intelligence tools can assist with code suggestions, test-case brainstorming, accessibility review, documentation drafts, and log summarization. They can also generate insecure code, reproduce bias, violate licensing expectations, expose confidential material, or create plausible but incorrect explanations. Teams should define approved uses, avoid submitting secrets or personal data, verify generated outputs, preserve human accountability, and record material AI assistance where institutional policy requires it. Contemporary practice increasingly emphasizes supply-chain security, software bills of materials, passwordless authentication, privacy-enhancing analytics, platform engineering, and inclusive design. These developments are useful when they address a demonstrated need. A capstone should show informed selection rather than technology accumulation. Best-Practice Release ChecklistBefore release, the team should be able to answer “yes” to the following: - Is every MVP requirement linked to acceptance evidence?
- Are architecture and significant trade-offs documented?
- Are authentication and authorization tested independently?
- Are inputs validated on the server and errors handled safely?
- Has the application been evaluated with keyboard navigation and accessibility tools?
- Are secrets excluded from source control and client bundles?
- Are backups, restoration, monitoring, and rollback documented?
- Are analytics purposeful, minimized, and governed?
- Can a new developer run the project from the documentation?
- Have stakeholders seen the product and accepted the stated limitations?
Chapter SummaryA production-ready web application is an integrated outcome of stakeholder analysis, disciplined scope, justified architecture, accessible interaction design, maintainable implementation, risk-based testing, secure engineering, governed analytics, repeatable deployment, and professional communication. Requirements should be measurable and traceable. Architecture should reflect constraints rather than fashion, and domain rules must be enforced at trustworthy boundaries. Accessibility and privacy should be designed from the beginning. Testing provides evidence across units, integrations, user journeys, security, performance, and acceptance. Deployment requires controlled configuration, observability, recovery planning, and accountable operations. Finally, a capstone is evaluated not only by whether it works, but by whether its claims are supported, its limitations are understood, and its future maintenance is feasible. Key TermsStakeholder: A person or group affected by, responsible for, or interested in the application. Requirement: A stated capability, quality, constraint, or condition the system must satisfy. Acceptance criterion: An observable condition used to determine whether a requirement is satisfied. MVP: The smallest coherent product that delivers defined stakeholder value. Architecture: The major structures of a system and the relationships among them. Modular monolith: A single deployable application organized into internally separated modules. ADR: An architectural decision record documenting context, choice, alternatives, and consequences. Idempotency: A property whereby repeating an operation has the same intended effect as performing it once. Accessibility: The design and implementation of technology so people with diverse abilities can use it. Authentication: Verification of a user’s identity. Authorization: Determination of what an authenticated subject is permitted to do. Threat modelling: Systematic identification of assets, threats, trust boundaries, and mitigations. Observability: The ability to understand system behaviour through logs, metrics, and traces. Availability: The proportion of agreed service time during which a service is usable. Precision: The proportion of positive classifications that are true positives. Recall: The proportion of actual positive cases that are identified. Traceability: The linking of requirements to design, implementation, tests, and evidence. Runbook: An operational guide for diagnosing, operating, and recovering a system. Governance: Policies and processes that control accountability, risk, data, change, and compliance. Technical debt: Future cost created by expedient technical choices or deferred improvement. Review QuestionsShort Answer Questions- Why should a requirement include measurable acceptance criteria?
- Distinguish authentication from authorization.
- State two advantages of a modular monolith for a capstone project.
- Why is client-side validation insufficient for security?
- Name the three principal dimensions of observability.
Long Answer Questions- Explain how stakeholder analysis, scope management, and traceability contribute to a successful capstone.
- Compare a modular monolith with microservices and justify when each may be appropriate.
- Describe a risk-based testing strategy for a booking application.
- Explain how accessibility, privacy, and security should influence design from the beginning of a project.
- Discuss the evidence and documentation required for a professional production release.
Analytical / Application Questions- Two users attempt to reserve the same resource at nearly the same time. Design a server-side and database-level solution that prevents double booking, and identify the user-visible response when one request loses the conflict.
- An application reports a 95% booking completion rate, but user interviews reveal that many users abandon the process because the cancellation policy is unclear. Analyze why the metric is insufficient and propose a mixed-method evaluation plan.
- A team proposes adding facial recognition, microservices, and real-time analytics to a small community application. Evaluate the proposal using stakeholder value, privacy, security, maintainability, operational cost, and evidence of need.
Multiple Choice Questions with AnswersQuestion 1Which statement best describes an acceptance criterion? A. A preferred programming language for the project B. An observable condition used to determine whether a requirement is satisfied C. A list of all possible future features D. A diagram of the deployment infrastructure Correct Answer: B. An observable condition used to determine whether a requirement is satisfied Question 2Why must authorization be enforced on the server? A. Users can modify interface controls and requests B. Server authorization eliminates the need for authentication C. Browsers cannot display authorization messages D. Database systems do not support permissions Correct Answer: A. Users can modify interface controls and requests Question 3Which architecture is often suitable for a small capstone team with one main data domain? A. A modular monolith B. A globally distributed mesh of microservices C. A peer-to-peer browser network D. A system with no persistent storage Correct Answer: A. A modular monolith Question 4If 200 users complete a process after 800 users begin it, what is the completion rate? A. 20% B. 25% C. 40% D. 80% Correct Answer: B. 25% Question 5Which testing type verifies collaboration with a database or external service boundary? A. Unit testing B. Integration testing C. Typography testing D. Static content review Correct Answer: B. Integration testing Question 6What does recall measure in a binary classification task? A. The proportion of positive classifications that are correct B. The proportion of actual positive cases that are identified C. The average response time of a request D. The percentage of available service time Correct Answer: B. The proportion of actual positive cases that are identified Question 7Which practice is most appropriate for storing production secrets? A. Commit them to a private source repository B. Place them in client-side JavaScript C. Use controlled external configuration or a secrets manager D. Include them in public documentation Correct Answer: C. Use controlled external configuration or a secrets manager Question 8Which option is an example of observability data? A. A colour palette B. A database schema only C. Logs, metrics, and traces D. A stakeholder job title Correct Answer: C. Logs, metrics, and traces Question 9What is the primary purpose of an architectural decision record? A. To document the reasoning and consequences of a significant design choice B. To replace all automated tests C. To store user passwords D. To generate marketing content Correct Answer: A. To document the reasoning and consequences of a significant design choice Question 10Which statement about analytics is most accurate? A. A high completion rate proves that a design change caused improvement B. Analytics should collect every possible user detail C. Analytics should answer defined questions and be governed proportionately D. Qualitative feedback is unnecessary when metrics exist Correct Answer: C. Analytics should answer defined questions and be governed proportionately
|