This sample post was built to test every block type in the reader without mixing in outside content.
The opening section sets up the lesson and lets us check text-to-speech, word popovers, and translation toggles in one place.
Because the goal is review rather than storytelling, the content is layered on purpose and each block has a clear role.

Next comes the lyric section, which is still rendered as a placeholder in the UI but should still be present in the data model.
To exercise the optional fields, one lyric block includes timing and chorus metadata while another one omits them.
We read the line, we test the tone, we see what still is missing.
Check the hook, repeat the hook, make the weak spots visible.

The exercise block appears between normal reading blocks so learners can practice instantly in context.
Each exercise task gives instant correctness feedback so users can self-correct without waiting for a final submit.
تمرين ضمني: اختبارات أساسية
Pick the correct block type.
اختر نوع الكتلة الصحيح.
Which block includes optional fields like startTime and isChorus?
أي كتلة تتضمن حقولاً اختيارية مثل startTime و isChorus؟
Keep trying
Fix the sentence so it is grammatically correct.
صحح الجملة لتصبح صحيحة نحوياً.
The placeholder blocks is useful for real users.
The subject is plural (blocks), so use are.
Keep trying
Complete the sentence with the expected words.
أكمل الجملة بالكلمات المتوقعة.
Keep trying
تمرين ضمني: البنية والمفردات
Arrange the steps from setup to practice.
رتب الخطوات من التمهيد إلى التدريب.
Users complete tasks and get instant feedback.
A paragraph introduces the learning goal.
The reader places an exercise block in the middle.
Keep trying
Sort each word into the correct category.
صنّف كل كلمة في الفئة الصحيحة.
exercise
image
song_lyric
instant
interactive
contextual
Keep trying
Overall score: 0%
Review ordering and category choices, then try again.
راجع ترتيب الجمل واختيارات الفئات ثم حاول مرة أخرى.
When the testing ends, the final note should echo what the first block promised.
By the end of this post, every supported block type has appeared at least once and several option combinations have been covered.
If any section feels awkward in the reader, this file should make it easier to spot whether the problem lives in the schema, the component, or the placeholder strategy.