For six modules you have practiced on the Order Book of Brandt Building Services, step by step, with the instructions of the lessons. Now comes what is the normal case on the job: Nobody tells you what the next step is. You decide for yourself what you modernize, in which order, what you protect yourself with, and when you stop. The final project is the same method as before, only without instructions.
This module teaches nothing new. It points to modules M1 to M6 and requires you to apply them. It also has no module exam: The reviewer reads your repository, your plan, your decisions and your final report and grades them with the grid below. Plan on about ten hours for the whole module.
| Lesson | What comes out of it |
|---|---|
| M7.1 Planning the final project | docs/final-project/plan.md, seams.csv, at least two ADRs, the tag final-start |
| M7.2 Carrying out the final project | the history: one step per commit, one test per step, evidence |
| M7.3 Operating, evaluating, closing | pilot, measurement, decision, final-report.md, the submission |
Two paths: the maintenance plan or your own program
You have two options. Both lead through the same steps and are graded with the same grid.
| Variant A: the maintenance plan | Variant B: your own program | |
|---|---|---|
| Starting point | your Order Book repository after module M6 | a Windows Forms or WPF program that you maintain or inherit |
| Advantage | you know every spot; maintenance rule, export and permissions are already there | you learn on the program you really have |
| Price | some building blocks already stand; you provide evidence for them and finish the rest | the inventory (lesson M1.3) and the cut cost time, and you carry the program's risk |
| Suitable if | you did modules M1 to M6 on the Order Book | the “Suitability” table below yields only Yes |
Choose A if you are unsure. The maintenance plan is cut as a function block so that it touches all stations of the course: data access, API, page, window, export, permissions, pilot and switching off.
Variant A: what already stands, and what remains
The lessons built the Order Book all the way through and took parts of the maintenance plan along. That is intended: In this project you do not repeat the build, you repeat the method. For every building block you check whether it really stands, write the evidence into the plan and do the rest.
| Building block | Status after the lessons | Your remainder |
|---|---|---|
| Rule “next maintenance” | in the library, with tests (lesson M3.1); the trigger's rule was added with the switch-off (lesson M6.5) | write the evidence into the plan: tests green |
| Data access and writers | MaintenanceDueQuery, MaintenanceWriter, OrderWriter.CompleteAsync (lessons M3.2, M3.3, M6.5) |
check that nothing hangs on the procedure or trigger anymore (Check-Shutdown.ps1) |
| Permissions | policies Read and Edit for GET /maintenance and POST /maintenance/{id}/order in the test rig (lesson M5.2) |
build the endpoints in the real API with the same policies |
| Format of the technicians' file | MaintenanceExport in the library, byte comparison with the old file (lesson M4.5) |
write the file to Blob Storage and settle the reader, the tablet |
| Page and window | not built | “Maintenance plan” page in Blazor; the MaintenanceForm window as a client with a switch |
| Pilot, measurement, switching off | planned for the order list and the invoices (lessons M6.3 to M6.5) | pilot plan, measurement and switch-off conditions for the maintenance plan |
If a row does not fit your repository (you are further along or less far along than the table says), strike or add it in the plan and write down why. A plan row that does not fit the repository is the most common mistake of this project.
Variant B: suitability
You may choose your own program only if you answer every row with Yes. Otherwise the grid cannot be met, and you will only notice at the end.
| Question | Why |
|---|---|
| Is it a Windows Forms or WPF program in C#, and do you have the source code? | Module M2 needs it |
| May you show the source code to the reviewer? | You submit your repository |
| Are there no real customer data and no secrets in the repository and in the database? | House rules: no secrets in Git; the database for the exercise is invented or anonymized |
| Does it build today, and do you know its behavior? | without a starting point there is no safety net (lesson M2.1) |
| Is there a database that old and new can share? | ownership and protective layer (lessons M3.3, M6.2) |
| Is there a sign-in or permissions, a file that someone outside reads, and an output like printing? | Entra ID, consumers, export (lessons M5.1, M4.5, M6.5) |
| Can a function block be pulled out that is not the whole program? | one to three forms with a group of related tables |
For variant B, first do the inventory from lesson M1.3 and read the result before you fix the cut.