{
    "componentChunkName": "component---src-templates-docs-js",
    "path": "/old/03-assignments/01-assignment_1/yacht-club-problem-description",
    "result": {"data":{"site":{"siteMetadata":{"title":"Linnéuniversitetet","language":"sv","courseCode":"1DV607"}},"mdx":{"fields":{"id":"485556f1-0a83-5776-89fa-b7a57c6adddb","title":"Yacht Club Problem Description","slug":"/old/03-assignments/01-assignment_1/yacht-club-problem-description"},"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Yacht Club Problem Description\",\n  \"metaTitle\": \"Yacht Club Problem Description\",\n  \"metaDescription\": \"This is the meta description for this page\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"h1\", null, \"Introduction\"), mdx(\"p\", null, \"The yacht club \\u201CThe jolly pirate\\u201D has started to have some issues. The club has grown to such an extent that the members have a hard time keeping track of all meetings, and other important dates such as the club\\u2019s various competitions. It is also difficult for a member to change information in the membership registry, for example change address or reporting that they have a newly purchased boat. The result of this is that members sometimes are without a reserved berth, when it became time for launch towards the spring.\"), mdx(\"p\", null, \"The reservation of berths is operated by the club secretary and he goes through all members\\u2019 boats and book their berth in the spring. This is a very \\u201Ctricky\\u201D work, members owning several boats would love to have them as close together as possible, while they want their \\u201Cusual\\u201D place. Much fuss and mess usually follow the announcement of this year\\u2019s places, and sometimes even \\u201Cprivate\\u201D exchanges between members occurs, which strongly opposed by the municipality for safety reasons.\"), mdx(\"p\", null, \"The biggest problem, however, has the club\\u2019s treasurer, it is quite impossible for the treasurer to manage all subscriptions manually via receipts that members come in with when they paid their fees. The fee consists of a fixed part and a variable part, where the variable component is dependent on the number and the size of the boats. Several members probably slips through each year without paying a fee, the result of wich is that the club will soon go bankrupt.\"), mdx(\"h1\", null, \"Primary Actors\"), mdx(\"h2\", null, \"Secretary\"), mdx(\"p\", null, \"Wants to book berths for members in a fair and effective manner. Wants to minimize \\u201Cwhining\\u201D when advertising of berts and avoid that private exchanges occurs. Would also be able to manage the club\\u2019s calendar where important events and meetings are advertised.\"), mdx(\"h2\", null, \"Treasurer\"), mdx(\"p\", null, \"Wants to manage member payments in an efficient manner. It is also important that the Treasurer has access to history in the payments for accounting purposes.\"), mdx(\"h2\", null, \"Member\"), mdx(\"p\", null, \"A person who is a member of the boat club, probably has one or more boats registered and want a good berth for these. Want to manage their membership data, including boats, as well as to have a smooth overview of their payments. Would also like to be able to participate in various boat club meetings and social activities.\"), mdx(\"h1\", null, \"Supporting Actors\"), mdx(\"h2\", null, \"Third-party systems for credit card payment\"), mdx(\"p\", null, \"A service used to handle payment via credit card. Receives a transaction ID and a sum, will respond with a positive or negative result.\"), mdx(\"h2\", null, \"Third-party systems for Direct Payment\"), mdx(\"p\", null, \"A service used to manage the direct payment online banking. Receives a transaction ID and a sum, will respond with a positive or negative result. In case of positive results money is deducted from the payer\\u2019s account 00:00 o\\u2019clock the next day, and the transaction may be rescinded by the payer prior to tis alternatively, there is not enough money in the account.\"), mdx(\"h2\", null, \"Third party systems for SMS payment\"), mdx(\"p\", null, \"A service for payment via SMS. A special message with the transaction id is sent by the payer. This transaction id is provided by the service and includes a checksum so that typing errors are minimized. The payment will be deducted from the payer\\u2019s phone bill.\"), mdx(\"h1\", null, \"Offstage Actors\"), mdx(\"h2\", null, \"Municipality\"), mdx(\"p\", null, \"Has an interest in knowing what boat owners have what berth. This is important in te event of for example example accidents, thefts or similar.\"), mdx(\"h2\", null, \"The tax authority\"), mdx(\"p\", null, \"Has an interest in that the current regulations regarding the taxation of income associations are followed.\"), mdx(\"h1\", null, \"Use Cases\"), mdx(\"h2\", null, \"1 Authenticate\"), mdx(\"p\", null, \"A person wants to be authenticated as a role. The person is authenticated and assigned a role.\"), mdx(\"p\", null, \"Precondition: The person is not already assigned a user role.\"), mdx(\"p\", null, \"Postcondition: The person is authenticated as a user role (Member, Treasurer or Secretary)\"), mdx(\"h3\", null, \"Main scenario\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The person wants to be authenticated.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system asks for log in information.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The person supplies a user name and password\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system controls the username and password and authenticates the person as a user role (Member, Treasurer, Secretary) in the system, the assigned user role is presented.\")), mdx(\"h3\", null, \"Secondary Scenarios\"), mdx(\"h4\", null, \"2.1 The combination of user name and password is wrong\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system presents an error message and asks for log in information again.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Go to step 3 in main scenario.\")), mdx(\"h2\", null, \"2 Pay Membership Fee\"), mdx(\"p\", null, \"A member wants to pay their dues. The fee and payment options are presented and Member proceeds with payment. The payment is recorded and its status is updated, a receipt is presented.\"), mdx(\"p\", null, \"Primary Actor: Member\"), mdx(\"p\", null, \"Precondition: Member has unprocessed dues to be payed.\"), mdx(\"p\", null, \"Postcondition: Member\\u2019s payment status updated, transaction recorded.\"), mdx(\"h3\", null, \"Main Scenario\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The member wants to pay their dues.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system presents the calculation of membership and a total amount due.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The member chooses to pay via credit card.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system transmits a transaction id and a total to third-party system for Credit Card Payment.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Third Party Credit Card Payments System for process the transaction and reply with a positive result.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system updates the Member\\u2019s pay status to paid and presents a receipt of the transaction.\")), mdx(\"h3\", null, \"Secondary Scenarios\"), mdx(\"h4\", null, \"3.1 The member chooses to pay via invoice\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system presents an invoice for printing with a unique invoice id, boat club account number and amount due. The amount due is the total membership fee plus an administrative service charge of currently 45 swedish crowns.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The member confirms the invoice.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system updates the member\\u2019s payment status to invoiced and presents that the payment status changed.\")), mdx(\"h4\", null, \"3.2 The member chooses to pay via SMS payment\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system contacts the Third Party System for SMS payment and enclose the sum total of the transaction.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The third-party systems for SMS payment replies with the SMS message to be sent to process the payment.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system updates member\\u2019s payment status to waiting. SMS message to be sent is presented.\")), mdx(\"h4\", null, \"3.3 The member chooses to pay via third party systems for Direct Payment\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system transmits a transaction id and a total to third-party systems for Direct Payment.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"Third Party System for Direct Payment process the payment and reply with a positive result.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The System updates the Member\\u2019s pay status to paid and presents a receipt of the transaction.\")), mdx(\"h2\", null, \"3 View Member Profile Information\"), mdx(\"p\", null, \"A member wants to view their member data. Membership details are presented including registreade boats booked berths and payment history.\"), mdx(\"h2\", null, \"4 Register Boat\"), mdx(\"p\", null, \"A member wants to register a new boat and the boat\\u2019s data. The boat is registered, the membership fee is updated and a confirmation appears.\"), mdx(\"h3\", null, \"Main Scenario\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"A member wants to register a new boat.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system asks for Boat Details.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The member input the boat\\u2019s size and type (sailboat, motorsailer, powerboat, kayak/canoe, other) and an optional image of the boat.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system presents the information for the boat to be registered, including cost of berth.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The member confirms the correct information.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The System registers the boat and assigns a berth using the current rules for berth assigment, updates the membership fee and presents a confirmation.\")), mdx(\"h3\", null, \"Secondary Scenarios\"), mdx(\"h4\", null, \"6.1 The boat is registered during the \\u201Coffseason\\u201D (October 1 to December 31)\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"System assigns no berth and the membership fee for the current year is unchanged.\")), mdx(\"h4\", null, \"6.2 The boat is registered in pre-season (January 1 to April 1) when no berth assignment has been made yet.\"), mdx(\"p\", null, \"System assigns no berth. This is done by the Secretary before the start of the season.\"), mdx(\"h2\", null, \"5 Remove a Boat\"), mdx(\"p\", null, \"A Member To remove one of their registered boats. The boat is removed and a confirmation appears.\"), mdx(\"h2\", null, \"6 Change a boat.\"), mdx(\"p\", null, \"A Member wants to change a boat\\u2019s data. The boat\\u2019s data is updated and a confirmation appears.\"), mdx(\"h2\", null, \"7 Send Payment Reminder\"), mdx(\"p\", null, \"The treasurer lists and send a reminder to those members who have not paid enough dues for a calendar year.\"), mdx(\"h3\", null, \"Main Scenario\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The treasurer wants to send a reminder to those members who have not paid enough dues for a previous year and indicates the year considered.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system lists the members who have a debt to the boat club during the year.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The treasurer choose to print an invoice for each member (see 2.3.1) in the invoice also includes a reminder fee of 25% per year behind schedule.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system prints an invoice per member and records that the member received a payment reminder.\")), mdx(\"h2\", null, \"8 Assign Berths\"), mdx(\"p\", null, \"The Secretary wants to assign this season berths. The system assign and book berths in accordance with applicable rules and update member information.\"), mdx(\"h3\", null, \"Main Scenario\"), mdx(\"ol\", null, mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The Secretary wants to book this season berths.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system presents a proposal on the allocation under the current rules, the available berths and the previous year\\u2019s allocation.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The Secretary approves the proposal.\"), mdx(\"li\", {\n    parentName: \"ol\"\n  }, \"The system assigns moorings for members\\u2019 boats according to the proposal.\")), mdx(\"h2\", null, \"9 List Berths\"), mdx(\"p\", null, \"The secretary chooses to list all berths. A list of unbooked and booked berths with information about the boat and member is presented.\"), mdx(\"h2\", null, \"10 Manage Calendar Events\"), mdx(\"p\", null, \"The Secretary wants to add, delete or change a calendar event. Boat club calendar is updated.\"), mdx(\"h2\", null, \"11 List Calendar Events\"), mdx(\"p\", null, \"A Member wish to list calendar events in a certain time interval. A list of calendar events are presented with a short title and start date.\"), mdx(\"h2\", null, \"12 View Calendar Events\"), mdx(\"p\", null, \"Member to view all details for a particular calendar event. Calendar event is presented including start and end dates.\"), mdx(\"h2\", null, \"13 Update Payment Status\"), mdx(\"p\", null, \"The Treasurer would like to update the status of payments. The system will contact third party services and check the status of payments and update these.\"), mdx(\"h2\", null, \"14 Update Invoice Status\"), mdx(\"p\", null, \"The Treasurer wants to change a Member\\u2019s payment status to paid. The system updates the Member\\u2019s payment status to paid.\"));\n}\n;\nMDXContent.isMDXComponent = true;","tableOfContents":{"items":[{"url":"#introduction","title":"Introduction"},{"url":"#primary-actors","title":"Primary Actors","items":[{"url":"#secretary","title":"Secretary"},{"url":"#treasurer","title":"Treasurer"},{"url":"#member","title":"Member"}]},{"url":"#supporting-actors","title":"Supporting Actors","items":[{"url":"#third-party-systems-for-credit-card-payment","title":"Third-party systems for credit card payment"},{"url":"#third-party-systems-for-direct-payment","title":"Third-party systems for Direct Payment"},{"url":"#third-party-systems-for-sms-payment","title":"Third party systems for SMS payment"}]},{"url":"#offstage-actors","title":"Offstage Actors","items":[{"url":"#municipality","title":"Municipality"},{"url":"#the-tax-authority","title":"The tax authority"}]},{"url":"#use-cases","title":"Use Cases","items":[{"url":"#1-authenticate","title":"1 Authenticate","items":[{"url":"#main-scenario","title":"Main scenario"},{"url":"#secondary-scenarios","title":"Secondary Scenarios","items":[{"url":"#21-the-combination-of-user-name-and-password-is-wrong","title":"2.1 The combination of user name and password is wrong"}]}]},{"url":"#2-pay-membership-fee","title":"2 Pay Membership Fee","items":[{"url":"#main-scenario-1","title":"Main Scenario"},{"url":"#secondary-scenarios-1","title":"Secondary Scenarios","items":[{"url":"#31-the-member-chooses-to-pay-via-invoice","title":"3.1 The member chooses to pay via invoice"},{"url":"#32-the-member-chooses-to-pay-via-sms-payment","title":"3.2 The member chooses to pay via SMS payment"},{"url":"#33-the-member-chooses-to-pay-via-third-party-systems-for-direct-payment","title":"3.3 The member chooses to pay via third party systems for Direct Payment"}]}]},{"url":"#3-view-member-profile-information","title":"3 View Member Profile Information"},{"url":"#4-register-boat","title":"4 Register Boat","items":[{"url":"#main-scenario-2","title":"Main Scenario"},{"url":"#secondary-scenarios-2","title":"Secondary Scenarios","items":[{"url":"#61-the-boat-is-registered-during-the-offseason-october-1-to-december-31","title":"6.1 The boat is registered during the “offseason” (October 1 to December 31)"},{"url":"#62-the-boat-is-registered-in-pre-season-january-1-to-april-1-when-no-berth-assignment-has-been-made-yet","title":"6.2 The boat is registered in pre-season (January 1 to April 1) when no berth assignment has been made yet."}]}]},{"url":"#5-remove-a-boat","title":"5 Remove a Boat"},{"url":"#6-change-a-boat","title":"6 Change a boat."},{"url":"#7-send-payment-reminder","title":"7 Send Payment Reminder","items":[{"url":"#main-scenario-3","title":"Main Scenario"}]},{"url":"#8-assign-berths","title":"8 Assign Berths","items":[{"url":"#main-scenario-4","title":"Main Scenario"}]},{"url":"#9-list-berths","title":"9 List Berths"},{"url":"#10-manage-calendar-events","title":"10 Manage Calendar Events"},{"url":"#11-list-calendar-events","title":"11 List Calendar Events"},{"url":"#12-view-calendar-events","title":"12 View Calendar Events"},{"url":"#13-update-payment-status","title":"13 Update Payment Status"},{"url":"#14-update-invoice-status","title":"14 Update Invoice Status"}]}]},"parent":{"relativePath":"old/03-assignments/01-assignment_1/yacht-club-problem-description.md"},"frontmatter":{"metaTitle":"Yacht Club Problem Description","metaDescription":"This is the meta description for this page","fullWidth":null}},"allMdx":{"edges":[{"node":{"fields":{"slug":"/forelasningar-2026","title":"Föreläsningar 2026"}}},{"node":{"fields":{"slug":"/","title":"Objektorienterad analys och design med UML (1DV607)"}}},{"node":{"fields":{"slug":"/laborationer-2026","title":"Laborationer 2026"}}},{"node":{"fields":{"slug":"/old","title":"Old"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-2-objektorienterad-analys-och-uml","title":"Tema 2 – Objektorienterad analys och modellering med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-3-objektorienterad-design-med-uml","title":"Tema 3 – Objektorienterad design med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/01-kursintroduktion-och-domanmodellering","title":"1. Kursintroduktion och domänmodellering"}}},{"node":{"fields":{"slug":"/forelasningar-2026/02-objektorienterad-analys-och-modellering","title":"2. Objektorienterad analys och modellering"}}},{"node":{"fields":{"slug":"/forelasningar-2026/03-uml-modellering","title":"3. Fortsatt modellering med UML"}}},{"node":{"fields":{"slug":"/forelasningar-2026/04-grasp","title":"4. GRASP"}}},{"node":{"fields":{"slug":"/forelasningar-2026/00-tema-1-grunderna","title":"Tema 1 – Grunderna i objektorienterad analys och design"}}},{"node":{"fields":{"slug":"/laborationer-2026/01-laboration-1","title":"Laboration 1 – Domänmodellering"}}},{"node":{"fields":{"slug":"/old/001-introduction","title":"Course Introduction"}}},{"node":{"fields":{"slug":"/old/01-information","title":"Course Information"}}},{"node":{"fields":{"slug":"/laborationer-2026/02-laboration-2","title":"Laboration 2"}}},{"node":{"fields":{"slug":"/old/02-theory","title":"Theory"}}},{"node":{"fields":{"slug":"/old/03-assignments","title":"Assignments"}}},{"node":{"fields":{"slug":"/old/01-information/01-welcome","title":"Welcome to the Course"}}},{"node":{"fields":{"slug":"/old/01-information/registration","title":"Course Registration"}}},{"node":{"fields":{"slug":"/old/02-theory/01-intro_to_ooad","title":"Introduction to Object Oriented Analysis and Design"}}},{"node":{"fields":{"slug":"/old/01-information/grading","title":"Course Grading"}}},{"node":{"fields":{"slug":"/old/02-theory/03_software_architecture","title":"Software Architecture"}}},{"node":{"fields":{"slug":"/old/02-theory/04_mvc","title":"Model View Controller"}}},{"node":{"fields":{"slug":"/old/02-theory/02-domain_modeling","title":"Domain Modeling"}}},{"node":{"fields":{"slug":"/old/02-theory/06_grasp1","title":"GRASP 1"}}},{"node":{"fields":{"slug":"/old/02-theory/05_layers_components","title":"Layers & Components"}}},{"node":{"fields":{"slug":"/old/02-theory/07_grasp2","title":"GRASP 2"}}},{"node":{"fields":{"slug":"/old/02-theory/09_gof1","title":"GoF 1"}}},{"node":{"fields":{"slug":"/old/02-theory/10_gof2","title":"GoF 2"}}},{"node":{"fields":{"slug":"/old/02-theory/11_solid","title":"SOLID"}}},{"node":{"fields":{"slug":"/old/02-theory/08_grasp3","title":"GRASP 3"}}},{"node":{"fields":{"slug":"/old/02-theory/design_class_diagram","title":"UML Design Class Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/design_class_relations","title":"UML Design Class Relations"}}},{"node":{"fields":{"slug":"/old/02-theory/design_object_diagram","title":"UML Object Diagram Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/99-exercises","title":"Exercises"}}},{"node":{"fields":{"slug":"/old/02-theory/design_package_diagram","title":"UML Package Notation"}}},{"node":{"fields":{"slug":"/old/02-theory/domain_class_diagram","title":"UML Domain Model"}}},{"node":{"fields":{"slug":"/old/02-theory/reading-instructions","title":"Reading Instructions"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1","title":"Assignment 1"}}},{"node":{"fields":{"slug":"/old/03-assignments/02-assignment_2","title":"Assignment 2"}}},{"node":{"fields":{"slug":"/old/03-assignments/03-assignment_3","title":"Assignment 3"}}},{"node":{"fields":{"slug":"/old/03-assignments/04-yahtzee","title":"Yahtzee Assignment"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a","title":"Övningsuppgifter del A"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-b","title":"Övningsuppgifter del B"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1/lending-system-problem-description","title":"Stuff Lending System Problem Description"}}},{"node":{"fields":{"slug":"/old/03-assignments/01-assignment_1/yacht-club-problem-description","title":"Yacht Club Problem Description"}}},{"node":{"fields":{"slug":"/old/old_template/videologgar","title":"Vlog"}}},{"node":{"fields":{"slug":"/old/old_template/codeblock/1-index","title":"Sub Page"}}},{"node":{"fields":{"slug":"/old/03-assignments/02-assignment_2/test_specification","title":"Test Specification"}}},{"node":{"fields":{"slug":"/old/old_template/codeblock","title":"Syntax Highlighting"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a/01-hello-world","title":"Hello world"}}},{"node":{"fields":{"slug":"/old/old_template/ovningsuppgifter-del-a/02-simple-addition","title":"Enkel addition"}}}]}},"pageContext":{"id":"485556f1-0a83-5776-89fa-b7a57c6adddb"}},
    "staticQueryHashes": ["253607798","3706406642","710574383"]}