{"id":6607,"date":"2025-09-14T16:15:19","date_gmt":"2025-09-14T16:15:19","guid":{"rendered":"https:\/\/obsidiansofteducation.com\/?page_id=6607"},"modified":"2025-09-14T16:15:21","modified_gmt":"2025-09-14T16:15:21","slug":"mit-app-inventor-diary-tutorial","status":"publish","type":"page","link":"https:\/\/obsidiansofteducation.com\/index.php\/mit-app-inventor-diary-tutorial\/","title":{"rendered":"MIT App Inventor Diary App Tutorial | Display Pictures in ListView | Personal Diary App with Images"},"content":{"rendered":"\n<p class=\"has-medium-font-size\">Hello\u00a0friends, and welcome to Obsidian Soft,<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Today, I will teach you how to make an easy but impressive app using MIT App Inventor: a diary app with pictures. In the process of making this app, you will learn some useful things: <\/p>\n\n\n\n<p class=\"has-medium-font-size\">1. How to use a date picker,<\/p>\n\n\n\n<p class=\"has-medium-font-size\">2. How to use an image picker,&nbsp;<\/p>\n\n\n\n<p class=\"has-medium-font-size\">and best of all,&nbsp;<\/p>\n\n\n\n<p class=\"has-medium-font-size\">3. How to show images in list view. <\/p>\n\n\n\n<p class=\"has-medium-font-size\"> So, let\u2019s begin:<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Open up MIT App Inventor and start a new project. Let\u2019s call it DiaryWithPicsApp. Keep the toolkit default. This is very important.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">In the screen1\u2019s properties, make align horizontal center. Also, make the screen orientation portrait and turn on the scrollable checkbox.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Add a <strong>Horizontal Arrangement <\/strong>from the <strong>Layout <\/strong>palette. Make align horizontal and align vertical both center. Make height 15% and width fill parent. Select the arrangement and duplicate it by pressing <strong>Ctrl + C &amp; Ctrl + V <\/strong>on the keyboard for Windows OR <strong>Command + C &amp; Command + V <\/strong>for MacOS. Duplicate again as we need 3 arrangements.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">In the topmost arrangement, drag and drop a <strong>TextBox <\/strong>from the <strong>User Interface<\/strong> palette. Rename it to dateTxt and make it read-only.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">On its right, drag and drop a <strong>DatePicker<\/strong> from the <strong>User Interface<\/strong> palette. Change text to \u201cChoose Date\u201d.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Now, drag and drop a <strong>TextBox <\/strong>between the 1st and 2nd horizontal arrangement. Rename to entryTxt. Make height 15% and width 90%.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Change hint to \u201cEnter diary entry\u201d.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Below this, drag and drop an <strong>Image <\/strong>component from the <strong>User Interface<\/strong> palette.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">In the second horizontal arrangement, drag and drop a <strong>Button <\/strong>from the <strong>User Interface <\/strong>palette. Rename to cameraBtn and change text to \u201cCamera\u201d. Duplicate the button and rename to saveBtn. Change text to Save. Now, drag and drop an ImagePicker from the Media palette between these two buttons. Change text to \u201cChoose Pic\u201d.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Drag and drop a listview below this horizontal arrangement. Make width fill parent. Change ListViewLayout to Image and MainText. And turn on the checkbox for ShowFilterBar.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Drag and drop a button inside the last horizontal arrangement. Rename to viewBtn and change text to \u201cView\u201d. Duplicate this button. Rename to deleteBtn and change text to \u201cDelete\u201d. From the <strong>Storage <\/strong>palette, drag and drop a <strong>TinyDB <\/strong>component onto the viewer. From <strong>Sensors<\/strong>, drag and drop a <strong>Clock <\/strong>component. Add a <strong>Notifier <\/strong>from the <strong>User Interface <\/strong>palette and a <strong>Camera <\/strong>component from the <strong>Media<\/strong> palette.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Now, click on the \u201cAdd Screen\u201d button and add another screen. Make the screen orientation portrait and align horizontal center. Add an image component, two labels, and one button. Rename the top label to dateLbl and the bottom label to entryLbl. Rename button to backBtn.&nbsp;<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Our UX design is done, so let\u2019s go to the blocks section. We will work on screen 1 first.&nbsp;<\/p>\n\n\n\n<p class=\"has-medium-font-size\">We need a global variable for our list of diary entries.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"778\" height=\"54\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image.png\" alt=\"\" class=\"wp-image-6608\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image.png 778w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-300x21.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-768x53.png 768w\" sizes=\"auto, (max-width: 778px) 100vw, 778px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">Get the screen1\u2019s initialize event and set the data picker to the current date, and then update the date textbox with this date. This is done so that the user doesn\u2019t have to choose today\u2019s date. It is prefilled for him.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"400\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-1-1024x400.png\" alt=\"\" class=\"wp-image-6609\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-1-1024x400.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-1-300x117.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-1-768x300.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-1.png 1138w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">The initialize event is still not complete as we still need to load data here, but let\u2019s work on saving first.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">If the user clicks on a DatePicker to choose a date, then after picking the date, DatePicker\u2019s AfterDateSet event is triggered. Get this event and just duplicate the dateTxt setting from the initialize event into this event too.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"325\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-2-1024x325.png\" alt=\"\" class=\"wp-image-6610\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-2-1024x325.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-2-300x95.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-2-768x244.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-2.png 1072w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">If the user clicks on the image picker and chooses a pic, AfterPicking event is triggered for the ImagePicker component.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Get it, and the code is simple here. Just set the image component\u2019s picture to the image picker. Selection. This selection is a path to the chosen picture.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1010\" height=\"130\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-3.png\" alt=\"\" class=\"wp-image-6611\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-3.png 1010w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-3-300x39.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-3-768x99.png 768w\" sizes=\"auto, (max-width: 1010px) 100vw, 1010px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">When the camera button is clicked, call TakePicture procedure for the camera component.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"524\" height=\"130\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-4.png\" alt=\"\" class=\"wp-image-6612\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-4.png 524w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-4-300x74.png 300w\" sizes=\"auto, (max-width: 524px) 100vw, 524px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">The <strong>after picture<\/strong> event is triggered for the camera once a picture has been taken. Just set the image component\u2019s picture to the image. The image here is a path, too.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"182\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-6.png\" alt=\"\" class=\"wp-image-6614\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-6.png 770w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-6-300x71.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-6-768x182.png 768w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">Now, get the save button click event.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">First, check using the Control\u2019s if\/else block that image. picture isn\u2019t empty, and the user has entered some text in our entry textbox. Inside the else block, use the notifier to show an alert and a relevant message.&nbsp;<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Then, make a local variable entry for constructing our list of three items in this order:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li class=\"has-medium-font-size\">Text inside our readonly dateTxt.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Text inside the entry textbox<\/li>\n\n\n\n<li class=\"has-medium-font-size\">Image component\u2019s picture<\/li>\n<\/ol>\n\n\n\n<p class=\"has-medium-font-size\">Add this local entry list to our global list of diaryEntries. Store this global list of diaryEntries in TinyDB against a tag such as \u201centries\u201d.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">And most importantly, add an item to your listview where mainTxt<\/p>\n\n\n\n<p class=\"has-medium-font-size\">=date, detailTxt= user entered diary entry, and imageName is the picture in our image component(remember it is a path)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"601\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-5-1024x601.png\" alt=\"\" class=\"wp-image-6613\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-5-1024x601.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-5-300x176.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-5-768x451.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-5-1536x901.png 1536w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-5.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">Now, go back to your screen1.initialize event and we need to load diary entries from TinyDB here.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">So, set the diary entries list to the data returned by TinyDB against the tag \u201centries\u201d. The spellings of the tag are super important.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Then go through the diary entries list one by by using the Control\u2019s for each item block and add items to the listview.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"533\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-7-1024x533.png\" alt=\"\" class=\"wp-image-6615\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-7-1024x533.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-7-300x156.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-7-768x400.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-7.png 1168w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">Now, get viewBtn click event. Check if listview.selection index isn\u2019t 0 using Control\u2019s if\/else block (this is to confirm that the user has tapped on an item in the listview). Show a relevant message using the notifier\u2019s show alert in the else.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">In if condition, use open another screen block from Control to open screen2, but with startValue: the item in our diaryEntries list against the selection index from the listview.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"282\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-8-1024x282.png\" alt=\"\" class=\"wp-image-6616\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-8-1024x282.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-8-300x83.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-8-768x211.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-8-1536x422.png 1536w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-8.png 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">Get the delete button click event. Again, do a similar error check to confirm that the user has tapped on an item in the listview. Then, remove the item from the global list diaryEntries and from the listview. After all this, store the updated list in tinyDB.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"560\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-9-1024x560.png\" alt=\"\" class=\"wp-image-6617\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-9-1024x560.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-9-300x164.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-9-768x420.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-9.png 1228w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">Now, open up screen 2 blocks section. Simple code here:<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Make a global list variable for diaryEntry.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"754\" height=\"54\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-10.png\" alt=\"\" class=\"wp-image-6618\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-10.png 754w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-10-300x21.png 300w\" sizes=\"auto, (max-width: 754px) 100vw, 754px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">When the screen is initialized, set this diary entry to get start value block from Control. This is the data being sent by screen1.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Now, just set all the components on the screen: dateLbl, entryLbl, and image.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"377\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-11-1024x377.png\" alt=\"\" class=\"wp-image-6619\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-11-1024x377.png 1024w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-11-300x110.png 300w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-11-768x282.png 768w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-11-1200x442.png 1200w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-11.png 1202w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">Get the back button click event and just plug in the close screen block from Control.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"370\" height=\"122\" src=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-12.png\" alt=\"\" class=\"wp-image-6620\" srcset=\"https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-12.png 370w, https:\/\/obsidiansofteducation.com\/wp-content\/uploads\/2025\/09\/image-12-300x99.png 300w\" sizes=\"auto, (max-width: 370px) 100vw, 370px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">And we are done. This cool diary app with pictures is done, and you have learned many new things that you can use in other apps too.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">You can also have a look at the video tutorial here:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<p class=\"responsive-video-wrap clr\"><iframe loading=\"lazy\" title=\"MIT App Inventor Diary App Tutorial | Display Pictures in ListView | Personal Diary App with Images\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/9TffNq5iCSw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<\/div><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">Please like my videos and share it with your friends and family. Also, subscribe to my channel and press the bell icon so you don\u2019t miss any of the great projects I have planned for you.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><a href=\"https:\/\/www.youtube.com\/c\/obsidiansofteducation\" target=\"_blank\" rel=\"noopener\">https:\/\/www.youtube.com\/c\/obsidiansofteducation<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size\">Please like my Facebook page and Instagram page for more educational resources and tips.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Facebook:<\/strong><a href=\"https:\/\/www.blogger.com\/blog\/page\/edit\/4947000819484484884\/7140650632339107612#\" target=\"_blank\" rel=\"noopener\">&nbsp;https:\/\/www.facebook.com\/ObsidianSoft\/<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Instagram:<\/strong><a href=\"https:\/\/www.blogger.com\/blog\/page\/edit\/4947000819484484884\/7140650632339107612#\" target=\"_blank\" rel=\"noopener\">&nbsp;https:\/\/www.instagram.com\/obsidiansoftapps\/<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Pinterest:<\/strong>&nbsp;<a href=\"https:\/\/www.pinterest.com\/obsidiansoft\/\" target=\"_blank\" rel=\"noopener\">https:\/\/www.pinterest.com\/obsidiansoft\/<\/a><\/p>\n\n\n\n<p class=\"has-medium-font-size\">For links to free educational&nbsp;<a href=\"https:\/\/obsidiansofteducation.com\/index.php\/flappy-bird-game-mit-app-inventor\/#\">&nbsp;apps<\/a>, have a look at the&nbsp;<a href=\"https:\/\/obsidiansofteducation.com\/index.php\/mobile-apps\/\">educational apps page<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello\u00a0friends, and welcome to Obsidian Soft, Today, I will teach you how to make an easy but impressive app using MIT App Inventor: a diary app with pictures. In the process of making this app, you will learn some useful things: 1. How to use a date picker, 2. How to use an image picker,&nbsp; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6607","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/pages\/6607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/comments?post=6607"}],"version-history":[{"count":1,"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/pages\/6607\/revisions"}],"predecessor-version":[{"id":6621,"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/pages\/6607\/revisions\/6621"}],"wp:attachment":[{"href":"https:\/\/obsidiansofteducation.com\/index.php\/wp-json\/wp\/v2\/media?parent=6607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}