# Apprenticeship project report
The following sections are required. Your report is supposed to demonstrate a certain set of knowledge, skills and behaviours. These are listed alongside the relevant questions as quotes.
## Introduction
- What are you building?
- Why are you building it?
## Project scope
- What are you _not_ building?
- How did you decide what features were important?
## Project plan
- How are you going to structure your sprints?
- What order are you going to build in?
- How did user research inform your plan?
## Requirement analysis
- How will you ensure your project is accessible to as many users as possible?
- Are there any legal or regulatory requirements you should consider?
## Project learnings
- Did your team work effectively?
- What would you do differently next time?
## Research and findings
- What did you find out from user testing?
## Project outcomes
- Were your assumptions right or wrong?
## Recommendations and conclusions
- What features would you prioritise to build next?
- Was the project a success?
## Software Development Lifecycle stages
### Planning
- What roles did your team take on?
> Explain the roles and responsibilities of all people working within the software development lifecycle, and how they relate to the project (K2)
- Did these roles help your team work effectively?
> Outline how teams work effectively to produce software and how to contribute appropriately (K6)
> Compare and contrast the requirements of a software development team, and how they would ensure that each member (including themselves) were able to make a contribution (K6)
### Analysis
- What might be the intended and unintended consequences of building this product?
### Design
- How did you plan a user experience?
- What technical decisions did you make?
- Server-render vs client-render vs both
- Relational or non-relational or no DB
- Self-hosted or platform-as-a-service
- Frontend first vs DB first
- Did you create a technical specification?
> Review methods of software design with reference to functional/technical specifications and apply a justified approach to software development (K11, S11, S12)
### Implementation/Build
- How did you ensure your code was good?
> Create logical and maintainable code to deliver project outcomes, explaining their choice of approach. (S1)
- What interesting technical problems did you have to solve?
> Outline and apply the rationale and use of algorithms, logic and data structures. (K9, S16)
- How did you debug issues that arose?
> Apply structured techniques to problem solving to identify and resolve issues and debug basic flaws in code (S7)
### Test
- How did you verify your project worked correctly?
> Identify and create test scenarios which satisfy the project specification (S6)
- Did writing automated tests catch any bugs?
> Analyse unit testing results and review the outcomes, correcting errors. (S4)
### Deploy
- Where/how did you deploy your application?
> Review and justify their contribution to building, managing and deploying code into the relevant environment in accordance with the project specification (S10)
- What problems did you encounter during deployment?
### Maintain
- Is it easy for someone make changes to the codebase?
- Could a new person quickly be onboarded to contribute?
---
- Establishes a logical thinking approach to areas of work which require valid reasoning and/or justified decision making (B2)
- Describes how they have maintained a productive, professional and secure working environment throughout the project activity (B3)