diff --git a/Dockerfile b/Dockerfile index 2ab3b01..102c936 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,6 +21,16 @@ FROM python:3.13-slim # Install uv COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv +# Install WeasyPrint system dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + libpango1.0-0 \ + libpangocairo-1.0-0 \ + libgdk-pixbuf-2.0-0 \ + libffi8 \ + shared-mime-info \ + fonts-dejavu-core \ + && rm -rf /var/lib/apt/lists/* + ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PYTHONPATH="/app" \ diff --git a/kjvstudy_org/data/stories/09_parables.json b/kjvstudy_org/data/stories/09_parables.json index 91872f7..353780f 100644 --- a/kjvstudy_org/data/stories/09_parables.json +++ b/kjvstudy_org/data/stories/09_parables.json @@ -98,6 +98,138 @@ "kids_title": "The Servant Who Wouldn't Forgive", "kids_description": "A servant owed the king MILLIONS but was forgiven! Then he refused to forgive another servant who owed him just a little bit. The king was NOT happy about that!", "kids_narrative": "Peter asked Jesus, 'How many times should I forgive someone? Seven times?'\n\nJesus said, 'Not seven—seventy times seven!' That basically means KEEP FORGIVING!\n\nThen Jesus told a story:\n\nA servant owed the king a HUGE amount of money—millions and millions! There was NO way he could pay it back.\n\nThe king said, 'Sell him and his family as slaves to pay the debt!'\n\nThe servant fell on his knees. 'Please, please! Be patient! I'll pay it all back!'\n\nThe king felt sorry for him. 'You know what? I forgive the WHOLE debt. You don't owe me anything. Go free!'\n\nWOW! The servant was forgiven MILLIONS!\n\nBut then that same servant found another servant who owed HIM a tiny bit of money—like a few dollars compared to millions.\n\nDid he forgive him? NO WAY!\n\nHe grabbed the other servant by the throat. 'PAY ME WHAT YOU OWE!'\n\n'Please, be patient! I'll pay you back!'\n\nBut the first servant had the man thrown in PRISON!\n\nOther servants saw this and told the king. The king was FURIOUS!\n\n'You wicked servant! I forgave you MILLIONS! Couldn't you forgive a tiny debt?!' The king threw him in prison.\n\nJesus said, 'This is what will happen if you don't forgive others from your heart.'\n\nGod has forgiven us SO MUCH. We should forgive others the same way!" + }, + { + "title": "The Lost Coin", + "slug": "the-lost-coin", + "description": "A woman loses one of her ten silver coins and searches the whole house until she finds it. Heaven rejoices the same way over one sinner who repents.", + "verses": ["Luke 15:8-10"], + "themes": ["God seeks the lost", "Value of each person", "Joy in heaven"], + "characters": ["Jesus", "Woman"], + "narrative": "Jesus continued: 'Or suppose a woman has ten silver coins and loses one. Doesn't she light a lamp, sweep the house and search carefully until she finds it?\n\nAnd when she finds it, she calls her friends and neighbors together and says, \"Rejoice with me; I have found my lost coin.\"\n\nIn the same way, I tell you, there is rejoicing in the presence of the angels of God over one sinner who repents.'\n\nThis parable is the second in a trilogy about lost things (the lost sheep, lost coin, and lost son). The coin was a drachma, worth about a day's wages—significant for a poor household. Some scholars suggest these ten coins may have been part of her marriage dowry, worn as a headpiece, making the loss both financial and sentimental.\n\nThe woman's response to finding the coin mirrors the shepherd's joy over finding his sheep. She lights a lamp because peasant homes in Palestine had few windows and were dark. She sweeps carefully because the coin could be hidden in the packed dirt floor or among the reeds.\n\nThe point is clear: God actively searches for those who are lost. And when one is found, heaven erupts in celebration. Every person matters infinitely to God.", + "kids_title": "The Lost Coin", + "kids_description": "A woman lost one of her ten special coins. She searched everywhere until she found it! God searches for lost people the same way.", + "kids_narrative": "Right after the Lost Sheep story, Jesus told another one:\n\nImagine a woman who has ten silver coins. They're very special to her—maybe part of her wedding jewelry!\n\nOne day, she counts them: 1, 2, 3... 9. Wait—NINE?! One coin is MISSING!\n\nDoes she say, 'Oh well, I still have nine'? NO WAY!\n\nShe lights a lamp because her house is dark. She gets a broom and sweeps EVERYWHERE. She looks in every corner. She moves everything around.\n\nShe searches and searches and searches...\n\nCLINK! There it is! She found it!\n\nThe woman is SO happy! She calls all her friends and neighbors: 'Come celebrate with me! I found my lost coin!'\n\nJesus said, 'That's what happens in heaven when ONE person who was lost comes back to God. The angels have a big celebration!'\n\nThink about it—the woman had nine other coins. But that one lost coin mattered SO much to her. She wouldn't stop looking until she found it.\n\nThat's how God feels about YOU! Even if millions of people already love Him, YOU matter! If you're feeling lost, God is searching for you right now. He won't give up!\n\nAnd when you come to Him? Party time in heaven!" + }, + { + "title": "The Ten Virgins", + "slug": "the-ten-virgins", + "description": "Ten virgins wait for the bridegroom with their lamps. Five are wise and bring extra oil; five are foolish and run out. Only the prepared ones enter the wedding feast.", + "verses": ["Matthew 25:1-13"], + "themes": ["Be prepared", "Jesus' return", "Wisdom", "Readiness"], + "characters": ["Jesus", "Ten virgins", "Bridegroom"], + "narrative": "Jesus said: 'At that time the kingdom of heaven will be like ten virgins who took their lamps and went out to meet the bridegroom. Five of them were foolish and five were wise. The foolish ones took their lamps but did not take any oil with them. The wise ones, however, took oil in jars along with their lamps.\n\nThe bridegroom was a long time in coming, and they all became drowsy and fell asleep.\n\nAt midnight the cry rang out: \"Here's the bridegroom! Come out to meet him!\"\n\nThen all the virgins woke up and trimmed their lamps. The foolish ones said to the wise, \"Give us some of your oil; our lamps are going out.\"\n\n\"No,\" they replied, \"there may not be enough for both us and you. Instead, go to those who sell oil and buy some for yourselves.\"\n\nBut while they were on their way to buy the oil, the bridegroom arrived. The virgins who were ready went in with him to the wedding banquet. And the door was shut.\n\nLater the others also came. \"Lord, Lord,\" they said, \"open the door for us!\"\n\nBut he replied, \"Truly I tell you, I don't know you.\"\n\nTherefore keep watch, because you do not know the day or the hour.'\n\nIn Jewish weddings, the bridegroom would come to claim his bride, often at an unexpected hour. The bridesmaids needed their lamps burning to join the procession. The wise virgins prepared for delay; the foolish assumed the bridegroom would come quickly. When he was delayed, only the prepared were ready.\n\nThe oil cannot be borrowed—each person must have their own relationship with Christ. When He returns, there will be no time to prepare.", + "kids_title": "The Wise and Foolish Girls", + "kids_description": "Ten girls waited for a wedding party. Five brought extra oil for their lamps; five didn't. When the groom finally came at midnight, only the prepared ones got to go to the party!", + "kids_narrative": "Jesus told a story about being ready:\n\nTen young women were waiting for a wedding. In those days, weddings happened at night! They needed lamps to see and to join the celebration.\n\nFive girls were WISE. They brought their lamps AND extra oil, just in case.\n\nFive girls were FOOLISH. They only brought their lamps—no extra oil.\n\nThey waited... and waited... and waited. The groom was taking a LONG time! Soon, all ten girls fell asleep. Zzzzz...\n\nThen at MIDNIGHT: 'THE GROOM IS COMING! Come out to meet him!'\n\nAll ten girls woke up and checked their lamps. Uh oh! The foolish girls' lamps were going out!\n\n'Give us some of your oil!' they begged the wise girls.\n\n'We can't—then we won't have enough either! Go buy some!'\n\nSo the five foolish girls ran off to find oil. But while they were gone... the groom arrived! The five wise girls went into the wedding party. And the door was SHUT.\n\nLater, the foolish girls came back. KNOCK KNOCK! 'Let us in! Let us in!'\n\nBut the groom said, 'I don't know you.' The door stayed closed.\n\nJesus said, 'Be ready! You don't know when I'm coming back.'\n\nJesus is like the bridegroom. One day He'll return! We need to be ready—not just SAYING we follow Him, but really knowing Him and living for Him.\n\nAre you ready?" + }, + { + "title": "The Mustard Seed", + "slug": "the-mustard-seed", + "description": "The kingdom of heaven is like a tiny mustard seed that grows into a large tree where birds can nest. Great things start small.", + "verses": ["Matthew 13:31-32", "Mark 4:30-32", "Luke 13:18-19"], + "themes": ["Kingdom growth", "Small beginnings", "Faith", "God's power"], + "characters": ["Jesus"], + "narrative": "Jesus told them another parable: 'The kingdom of heaven is like a mustard seed, which a man took and planted in his field. Though it is the smallest of all seeds, yet when it grows, it is the largest of garden plants and becomes a tree, so that the birds come and perch in its branches.'\n\nThe mustard seed was proverbially the smallest seed known to Jewish farmers of that time. Yet from this tiny beginning, a plant could grow ten to twelve feet tall—large enough for birds to nest in its branches.\n\nJesus was speaking to a small group of followers in an obscure corner of the Roman Empire. The religious establishment rejected Him. The world took no notice. Yet this tiny beginning would grow into something that would reshape human history.\n\nThe parable encourages those who feel their work for God is small and insignificant. A Sunday school teacher faithfully teaching children. A parent modeling faith at home. A believer sharing the gospel with one person. These may seem like mustard seeds—but God grows them into something beyond imagination.\n\nDo not despise the day of small beginnings. The kingdom of God starts tiny but becomes a shelter for many.", + "kids_title": "The Tiny Seed", + "kids_description": "Jesus said God's kingdom is like a tiny mustard seed. It starts SO small, but it grows into a HUGE tree! Big things can start small!", + "kids_narrative": "Jesus told a story about a tiny seed:\n\n'The kingdom of God is like a mustard seed. It's one of the SMALLEST seeds there is. You can barely see it!\n\nBut when you plant it in the ground, it grows and grows and GROWS! It becomes one of the BIGGEST plants in the garden—so big that birds can build nests in its branches!'\n\nWhat was Jesus teaching?\n\nWhen Jesus started His ministry, He just had a few followers. Twelve guys! That's like a tiny seed.\n\nBut look what happened! That tiny group grew and grew. Now there are BILLIONS of Christians all around the world! The small seed became a HUGE tree!\n\nThis parable is also about YOU. Maybe you feel small. Maybe you think you can't do much for God. You're just a kid! What difference can you make?\n\nBut remember the mustard seed! When you do something kind, when you tell someone about Jesus, when you pray—those are like tiny seeds.\n\nGod can take your small act of faith and grow it into something HUGE!\n\nNever think you're too small to matter. God loves using small things to do BIG stuff! Just plant your little seed of faith, and watch what God does!" + }, + { + "title": "The Wheat and the Weeds", + "slug": "the-wheat-and-weeds", + "description": "An enemy sows weeds among a farmer's wheat. The farmer lets both grow together until harvest, when they will be separated. Good and evil will coexist until judgment day.", + "verses": ["Matthew 13:24-30", "Matthew 13:36-43"], + "themes": ["Good and evil", "Patience", "Final judgment", "God's timing"], + "characters": ["Jesus", "Farmer", "Servants", "Enemy"], + "narrative": "Jesus told them another parable: 'The kingdom of heaven is like a man who sowed good seed in his field. But while everyone was sleeping, his enemy came and sowed weeds among the wheat, and went away. When the wheat sprouted and formed heads, then the weeds also appeared.\n\nThe owner's servants came to him and said, \"Sir, didn't you sow good seed in your field? Where then did the weeds come from?\"\n\n\"An enemy did this,\" he replied.\n\nThe servants asked him, \"Do you want us to go and pull them up?\"\n\n\"No,\" he answered, \"because while you are pulling the weeds, you may uproot the wheat with them. Let both grow together until the harvest. At that time I will tell the harvesters: First collect the weeds and tie them in bundles to be burned; then gather the wheat and bring it into my barn.\"'\n\nJesus later explained: The one who sows the good seed is the Son of Man. The field is the world. The good seed represents the people of the kingdom. The weeds are the people of the evil one, and the enemy who sows them is the devil. The harvest is the end of the age, and the harvesters are angels.\n\nAs the weeds are pulled up and burned in the fire, so it will be at the end of the age. The Son of Man will send out his angels, and they will weed out of his kingdom everything that causes sin and all who do evil. Then the righteous will shine like the sun in the kingdom of their Father.", + "kids_title": "The Wheat and the Weeds", + "kids_description": "An enemy planted weeds in a farmer's wheat field. The farmer said to wait until harvest to separate them. Good and bad people live together now, but one day God will sort everyone out.", + "kids_narrative": "Jesus told a story about a farmer:\n\nA farmer planted good wheat seeds in his field. But that night, while everyone was sleeping, an ENEMY snuck in and planted WEEDS everywhere! Then he ran away.\n\nWhen the plants started growing, the farmer's helpers noticed something wrong. 'Hey! There are weeds growing with the wheat! Should we pull them out?'\n\nThe farmer shook his head. 'No, don't do that. If you pull up the weeds now, you might accidentally pull up the good wheat too. Let them both grow together. At harvest time, we'll separate them. We'll burn the weeds and keep the wheat.'\n\nJesus explained what the story means:\n\nThe farmer is Jesus. The field is the whole world. The good wheat represents people who love God. The weeds represent people who follow the devil. The enemy who planted the weeds? That's Satan.\n\nRight now, good people and bad people live in the world together. Sometimes we wonder, 'Why doesn't God just get rid of all the bad people?'\n\nBut God is patient. He gives everyone time to turn to Him. And He knows exactly who is wheat and who is weeds—even when WE can't tell!\n\nAt the end of time, Jesus will sort everyone out. The weeds will be thrown away. But the wheat—everyone who loves God—will shine like the sun in God's kingdom!\n\nWhich one are you—wheat or a weed?" + }, + { + "title": "The Hidden Treasure and the Pearl", + "slug": "hidden-treasure-and-pearl", + "description": "A man finds treasure hidden in a field and joyfully sells everything to buy that field. A merchant finds a perfect pearl and sells everything to own it. The kingdom of heaven is worth everything.", + "verses": ["Matthew 13:44-46"], + "themes": ["Value of the kingdom", "Joy", "Sacrifice", "Priorities"], + "characters": ["Jesus", "Man who found treasure", "Pearl merchant"], + "narrative": "Jesus said: 'The kingdom of heaven is like treasure hidden in a field. When a man found it, he hid it again, and then in his joy went and sold all he had and bought that field.\n\nAgain, the kingdom of heaven is like a merchant looking for fine pearls. When he found one of great value, he went away and sold everything he had and bought it.'\n\nThese twin parables make the same point from two different angles. The first man stumbles upon treasure unexpectedly—perhaps a day laborer plowing someone else's field. The second man is actively searching—a merchant who knows pearls and recognizes perfection when he sees it.\n\nBoth men respond identically: they sell everything to obtain what they've found. Not reluctantly, not with regret—but with JOY. They know the value of what they've discovered far exceeds everything they're giving up.\n\nThe kingdom of heaven—relationship with God through Christ, forgiveness of sins, eternal life—is worth more than all worldly possessions combined. Those who truly see its value don't view following Jesus as sacrifice but as gain. They've found the treasure.", + "kids_title": "The Hidden Treasure", + "kids_description": "A man found buried treasure in a field! He was so happy that he sold everything he owned just to buy that field. Knowing Jesus is worth even more than that!", + "kids_narrative": "Jesus told two short stories about things that are REALLY valuable:\n\nStory #1: A man was working in a field when—CLUNK!—he hit something. He dug down and found... TREASURE! A chest full of gold and jewels buried in the ground!\n\nHe quickly covered it up again. Then he ran home with a HUGE smile. He sold EVERYTHING he owned—his house, his animals, everything! He used all that money to buy the field.\n\nWhy would he sell everything? Because the treasure in that field was worth WAY more than all his stuff!\n\nStory #2: A merchant spent his whole life searching for perfect pearls. He'd seen lots of nice ones. But one day, he found THE ONE—the most beautiful, perfect pearl EVER.\n\nHe sold everything he had to buy it. And he was SO happy!\n\nWhat's Jesus teaching?\n\nThe treasure and the pearl represent KNOWING GOD. Being part of His kingdom. Having your sins forgiven. Living with Him forever.\n\nThis is worth more than ALL the money in the world! More than video games, more than toys, more than ANYTHING!\n\nWhen people really understand how amazing Jesus is, they're willing to give up everything to follow Him. And they do it with JOY—not sadness—because they know what they're getting is so much better!\n\nHave YOU found the treasure?" + }, + { + "title": "The Rich Man and Lazarus", + "slug": "rich-man-and-lazarus", + "description": "A rich man lives in luxury while a poor beggar named Lazarus suffers at his gate. Both die, and their positions are reversed for eternity.", + "verses": ["Luke 16:19-31"], + "themes": ["Eternity", "Compassion", "Judgment", "Listening to Scripture"], + "characters": ["Jesus", "Rich man", "Lazarus", "Abraham"], + "narrative": "Jesus said: 'There was a rich man who was dressed in purple and fine linen and lived in luxury every day. At his gate was laid a beggar named Lazarus, covered with sores and longing to eat what fell from the rich man's table. Even the dogs came and licked his sores.\n\nThe time came when the beggar died and the angels carried him to Abraham's side. The rich man also died and was buried. In Hades, where he was in torment, he looked up and saw Abraham far away, with Lazarus by his side.\n\nSo he called to him, \"Father Abraham, have pity on me and send Lazarus to dip the tip of his finger in water and cool my tongue, because I am in agony in this fire.\"\n\nBut Abraham replied, \"Son, remember that in your lifetime you received your good things, while Lazarus received bad things, but now he is comforted here and you are in agony. And besides all this, between us and you a great chasm has been set in place, so that those who want to go from here to you cannot, nor can anyone cross over from there to us.\"\n\nHe answered, \"Then I beg you, father, send Lazarus to my family, for I have five brothers. Let him warn them, so that they will not also come to this place of torment.\"\n\nAbraham replied, \"They have Moses and the Prophets; let them listen to them.\"\n\n\"No, father Abraham,\" he said, \"but if someone from the dead goes to them, they will repent.\"\n\nHe said to him, \"If they do not listen to Moses and the Prophets, they will not be convinced even if someone rises from the dead.\"'", + "kids_title": "The Rich Man and Lazarus", + "kids_description": "A rich man ignored a poor beggar every day. When they both died, everything was reversed—the poor man was comforted, and the rich man suffered. It's a warning about ignoring God and others.", + "kids_narrative": "Jesus told a serious story:\n\nThere was a VERY rich man. He wore the fanciest clothes and ate the best food every single day. His house was like a palace!\n\nRight outside his gate sat a poor man named Lazarus. Lazarus was sick and hungry. He had sores all over his body. He just wanted to eat the scraps that fell from the rich man's table. But the rich man ignored him every day.\n\nOne day, Lazarus died. Angels carried him to heaven, where he sat right next to Abraham!\n\nThe rich man died too. But he didn't go to heaven. He went to a terrible place of suffering.\n\nFrom far away, the rich man saw Lazarus, happy and comfortable with Abraham. 'Father Abraham!' he called. 'Please send Lazarus to bring me just ONE drop of water! I'm in so much pain!'\n\nBut Abraham said, 'Remember—you had everything good while you were alive. Lazarus had nothing but suffering. Now he's comforted and you're in agony. And there's no way to cross from here to there.'\n\n'Then please send Lazarus to warn my brothers!' the rich man begged. 'So they don't end up here!'\n\n'They have the Bible,' Abraham said. 'They should listen to it.'\n\n'No, but if someone comes back from the dead, THEN they'll believe!'\n\n'If they won't listen to Scripture, they won't believe even if someone rises from the dead.'\n\nThis story warns us: Don't ignore God or ignore people in need. And don't wait until it's too late to listen to God's Word!" + }, + { + "title": "The Wise and Foolish Builders", + "slug": "wise-and-foolish-builders", + "description": "Two men build houses—one on rock, one on sand. When storms come, only the house on the rock stands. Those who hear and obey Jesus' words are like the wise builder.", + "verses": ["Matthew 7:24-27", "Luke 6:46-49"], + "themes": ["Obedience", "Foundation", "Hearing and doing", "Storms of life"], + "characters": ["Jesus", "Wise builder", "Foolish builder"], + "narrative": "Jesus concluded His Sermon on the Mount with this parable:\n\n'Therefore everyone who hears these words of mine and puts them into practice is like a wise man who built his house on the rock. The rain came down, the streams rose, and the winds blew and beat against that house; yet it did not fall, because it had its foundation on the rock.\n\nBut everyone who hears these words of mine and does not put them into practice is like a foolish man who built his house on sand. The rain came down, the streams rose, and the winds blew and beat against that house, and it fell with a great crash.'\n\nBoth builders heard Jesus' words. Both built houses. From the outside, the houses may have looked similar. The difference was invisible—until the storm came.\n\nThe wise builder dug deep, laying his foundation on bedrock. This took time and effort. The foolish builder took shortcuts, building on the easy surface of sand. When fair weather continued, both builders seemed equally successful.\n\nBut storms always come. Trials, temptations, crises—no life escapes them. The storm reveals the foundation. The house on rock stands; the house on sand collapses.\n\nJesus makes clear: hearing is not enough. Knowing the right answers is not enough. Only those who hear AND obey—who put His words into practice—have a foundation that will hold.", + "kids_title": "The Two Builders", + "kids_description": "One man built his house on solid rock. Another built on sand. When a big storm came, only one house was left standing! It's about building your life on Jesus.", + "kids_narrative": "Jesus told a story about two builders:\n\nThe WISE builder wanted to build a house. He looked around and found a big, solid ROCK. 'I'll build here!' he said.\n\nHe worked hard digging down to the rock. It took a lot of effort! But finally, his house was built on a strong foundation.\n\nThe FOOLISH builder wanted to build a house too. He found a nice sandy beach. 'This looks easy!' he said. 'I'll build here!'\n\nHe didn't bother digging down. He just built right on top of the soft sand. Quick and easy!\n\nBoth houses looked nice when they were done.\n\nThen one day—WHOOOOSH! A huge storm came! Rain poured down! Wind howled! Floods rose!\n\nThe storm hit the wise man's house. CRASH! BANG! WHOOSH! But the house stood strong. It was built on the rock!\n\nThe storm hit the foolish man's house. CRASH! BANG! WHOOSH! And... BOOM! The whole house fell down! Nothing left but a pile of rubble!\n\nJesus said: 'The wise man is like someone who hears My words and OBEYS them. The foolish man is like someone who hears My words but DOESN'T obey.'\n\nStorms will come in your life—hard times, problems, scary things. What will keep you standing? Building your life on JESUS!\n\nDon't just HEAR what Jesus says—DO it! That's how you build on the rock." + }, + { + "title": "The Workers in the Vineyard", + "slug": "workers-in-the-vineyard", + "description": "A landowner hires workers throughout the day but pays them all the same wage. Those hired first complain, but the owner reminds them of his generosity.", + "verses": ["Matthew 20:1-16"], + "themes": ["Grace", "God's generosity", "Fairness vs. grace", "The last shall be first"], + "characters": ["Jesus", "Landowner", "Workers"], + "narrative": "Jesus said: 'For the kingdom of heaven is like a landowner who went out early in the morning to hire workers for his vineyard. He agreed to pay them a denarius for the day and sent them into his vineyard.\n\nAbout nine in the morning he went out and saw others standing in the marketplace doing nothing. He told them, \"You also go and work in my vineyard, and I will pay you whatever is right.\"\n\nHe went out again about noon and about three in the afternoon and did the same thing. About five in the afternoon he went out and found still others standing around. He asked them, \"Why have you been standing here all day long doing nothing?\"\n\n\"Because no one has hired us,\" they answered.\n\nHe said to them, \"You also go and work in my vineyard.\"\n\nWhen evening came, the owner of the vineyard said to his foreman, \"Call the workers and pay them their wages, beginning with the last ones hired and going on to the first.\"\n\nThe workers who were hired about five in the afternoon came and each received a denarius. So when those came who were hired first, they expected to receive more. But each one of them also received a denarius.\n\nWhen they received it, they began to grumble against the landowner. \"These who were hired last worked only one hour,\" they said, \"and you have made them equal to us who have borne the burden of the work and the heat of the day.\"\n\nBut he answered one of them, \"I am not being unfair to you, friend. Didn't you agree to work for a denarius? Take your pay and go. I want to give the one who was hired last the same as I gave you. Don't I have the right to do what I want with my own money? Or are you envious because I am generous?\"\n\nSo the last will be first, and the first will be last.'", + "kids_title": "The Generous Farmer", + "kids_description": "A farmer hired workers at different times of day but paid them all the same. Some thought it wasn't fair—but the farmer was being generous, not unfair!", + "kids_narrative": "Jesus told a story about a farmer who needed help:\n\nEarly in the morning, the farmer went to town. 'Come work in my vineyard!' he said. 'I'll pay you one silver coin.' The workers agreed and went to work.\n\nA few hours later, the farmer found more people standing around. 'You can work too! I'll pay you fairly.' They went to work.\n\nAt noon, he found more workers. In the afternoon, more. Even near the END of the day—almost quitting time!—he found some people. 'Go work in my vineyard,' he said.\n\nWhen the day was done, the farmer paid everyone. He started with the ones who came LAST. He gave them... one silver coin!\n\nThe workers who came FIRST thought, 'Ooh! We worked ALL day! We'll get MORE!'\n\nBut they got... one silver coin too. Same as everyone else!\n\n'Hey! That's not FAIR!' they complained. 'We worked in the hot sun all day! Those guys only worked one hour!'\n\nThe farmer said, 'Friend, I'm not being unfair. Didn't you agree to work for one silver coin? I gave you exactly what we agreed. If I want to be GENEROUS to the others, that's my choice. Are you jealous because I'm kind?'\n\nThis story is about God's grace. Some people follow Jesus their whole lives. Some come to Him at the very end. But God gives the same gift to everyone: eternal life!\n\nWe shouldn't complain when God is generous to others. We should be thankful for His kindness to US!" + }, + { + "title": "The Great Banquet", + "slug": "the-great-banquet", + "description": "A man prepares a great feast, but the invited guests all make excuses. So he sends servants to bring in the poor, the crippled, the blind, and the lame.", + "verses": ["Luke 14:15-24"], + "themes": ["Invitation", "Excuses", "God's grace to all", "Rejection"], + "characters": ["Jesus", "Host", "Servant", "Invited guests", "Poor and outcast"], + "narrative": "When one of those at the table with Jesus said, 'Blessed is the one who will eat at the feast in the kingdom of God,' Jesus replied:\n\n'A certain man was preparing a great banquet and invited many guests. At the time of the banquet he sent his servant to tell those who had been invited, \"Come, for everything is now ready.\"\n\nBut they all alike began to make excuses. The first said, \"I have just bought a field, and I must go and see it. Please excuse me.\"\n\nAnother said, \"I have just bought five yoke of oxen, and I'm on my way to try them out. Please excuse me.\"\n\nStill another said, \"I just got married, so I can't come.\"\n\nThe servant came back and reported this to his master. Then the owner of the house became angry and ordered his servant, \"Go out quickly into the streets and alleys of the town and bring in the poor, the crippled, the blind and the lame.\"\n\n\"Sir,\" the servant said, \"what you ordered has been done, but there is still room.\"\n\nThen the master told his servant, \"Go out to the roads and country lanes and compel them to come in, so that my house will be full. I tell you, not one of those who were invited will get a taste of my banquet.\"'\n\nThe original guests represent those who should have recognized and welcomed Jesus—Israel's religious leaders. But they made excuses, prioritizing possessions and relationships over the invitation. So the invitation went to those the religious deemed unworthy: the poor, disabled, and outcasts.\n\nGod's banquet will be full—but those who reject His invitation will miss it.", + "kids_title": "The Big Party", + "kids_description": "A man planned an amazing party and invited lots of people. But they all made excuses! So he invited everyone else—and his house was full!", + "kids_narrative": "Jesus told a story about a man who threw a HUGE party:\n\nThe man worked hard to prepare everything. The food was ready! The decorations were up! He sent his servant to tell all the invited guests: 'Come on! The party is starting!'\n\nBut something weird happened. EVERYONE made excuses!\n\n'Sorry, I just bought some land. I need to go look at it.' (Really? Right now?)\n\n'Sorry, I just bought some oxen. I need to test them.' (Can't that wait?)\n\n'Sorry, I just got married.' (Bring your wife to the party!)\n\nThe man was hurt and angry. He'd worked SO hard, and nobody wanted to come!\n\n'Fine!' he told his servant. 'Go into the streets. Find the poor people, the disabled people, the blind, the lame—bring them ALL!'\n\nThe servant did. But there was STILL room!\n\n'Go even farther!' the man said. 'Go to the highways and country roads. MAKE people come! I want my house FULL!'\n\nAnd it was! The party was amazing—full of grateful people who never expected to be invited.\n\nJesus was teaching: God invites everyone to His kingdom! But some people are too busy with other stuff. They make excuses.\n\nSo God invites EVERYONE else—people the world looks down on. His kingdom WILL be full!\n\nDon't be like those excuse-makers. When God invites you, say YES!" + }, + { + "title": "The Persistent Widow", + "slug": "the-persistent-widow", + "description": "A widow keeps asking an unjust judge for justice until he grants her request just to get rid of her. How much more will God answer those who cry out to Him!", + "verses": ["Luke 18:1-8"], + "themes": ["Persistent prayer", "God answers", "Faith", "Justice"], + "characters": ["Jesus", "Widow", "Unjust judge"], + "narrative": "Then Jesus told his disciples a parable to show them that they should always pray and not give up.\n\nHe said: 'In a certain town there was a judge who neither feared God nor cared what people thought. And there was a widow in that town who kept coming to him with the plea, \"Grant me justice against my adversary.\"\n\nFor some time he refused. But finally he said to himself, \"Even though I don't fear God or care what people think, yet because this widow keeps bothering me, I will see that she gets justice, so that she won't eventually come and attack me!\"\n\nAnd the Lord said, \"Listen to what the unjust judge says. And will not God bring about justice for his chosen ones, who cry out to him day and night? Will he keep putting them off? I tell you, he will see that they get justice, and quickly.\n\nHowever, when the Son of Man comes, will he find faith on the earth?\"'\n\nThe parable works by contrast, not comparison. If even an unjust, uncaring judge will eventually respond to persistent pleading, how much MORE will a loving, just God respond to His children?\n\nThe widow had no power, no influence, no husband to advocate for her. All she had was persistence. She kept coming. She refused to give up. And she got what she asked for.\n\nJesus' question at the end is haunting: 'When the Son of Man comes, will he find faith on the earth?' Will He find people still praying, still trusting, still persisting?", + "kids_title": "The Woman Who Wouldn't Give Up", + "kids_description": "A widow kept asking a mean judge for help. She asked and asked until he finally helped her! Jesus says we should keep praying and never give up.", + "kids_narrative": "Jesus told a story to teach us to keep praying and never give up:\n\nThere was a judge in a certain town. He was NOT a nice man. He didn't care about God, and he didn't care about people. He was selfish and mean.\n\nA widow lived in that town. Someone had treated her unfairly, and she needed the judge to help her. 'Please give me justice!' she asked.\n\nDid the judge help her? NOPE. He ignored her.\n\nBut the widow didn't give up!\n\nThe next day: 'Please give me justice!'\n\nThe judge ignored her.\n\nThe next day: 'Please give me justice!'\n\nIgnored again.\n\nDay after day after day, the widow came back. She kept asking. She REFUSED to give up!\n\nFinally, the judge thought, 'I don't care about this woman, but she's driving me CRAZY! If I don't help her, she'll keep coming forever!'\n\nSo he gave her what she asked for—just to get rid of her!\n\nJesus said, 'Did you hear that? Even a MEAN judge finally helped because she kept asking. Think about GOD! He's not mean—He LOVES you! If you keep praying, won't He answer you? He definitely will!'\n\nThen Jesus asked a serious question: 'But when I come back, will I find people who still have faith? Will I find people still praying?'\n\nThe lesson: Don't give up! Keep praying! God hears every prayer, and He WILL answer!" + }, + { + "title": "The Sheep and the Goats", + "slug": "the-sheep-and-goats", + "description": "At the final judgment, the King separates people like a shepherd separates sheep from goats. How we treat 'the least of these' reveals our true heart.", + "verses": ["Matthew 25:31-46"], + "themes": ["Final judgment", "Serving others", "True faith", "Eternal destiny"], + "characters": ["Jesus", "The King", "Sheep", "Goats", "The least of these"], + "narrative": "Jesus said: 'When the Son of Man comes in his glory, and all the angels with him, he will sit on his glorious throne. All the nations will be gathered before him, and he will separate the people one from another as a shepherd separates the sheep from the goats. He will put the sheep on his right and the goats on his left.\n\nThen the King will say to those on his right, \"Come, you who are blessed by my Father; take your inheritance, the kingdom prepared for you since the creation of the world. For I was hungry and you gave me something to eat, I was thirsty and you gave me something to drink, I was a stranger and you invited me in, I needed clothes and you clothed me, I was sick and you looked after me, I was in prison and you came to visit me.\"\n\nThen the righteous will answer him, \"Lord, when did we see you hungry and feed you, or thirsty and give you something to drink? When did we see you a stranger and invite you in, or needing clothes and clothe you? When did we see you sick or in prison and go to visit you?\"\n\nThe King will reply, \"Truly I tell you, whatever you did for one of the least of these brothers and sisters of mine, you did for me.\"\n\nThen he will say to those on his left, \"Depart from me, you who are cursed, into the eternal fire prepared for the devil and his angels. For I was hungry and you gave me nothing to eat...\" whatever you did not do for one of the least of these, you did not do for me.\"\n\nThen they will go away to eternal punishment, but the righteous to eternal life.'", + "kids_title": "The Sheep and the Goats", + "kids_description": "One day Jesus will separate everyone—like a shepherd separates sheep from goats. How we treat hungry, sick, and lonely people shows what's really in our hearts.", + "kids_narrative": "Jesus told a story about the day He will judge everyone:\n\nWhen Jesus comes back in all His glory, every person who ever lived will stand before Him. He'll separate them into two groups—like a shepherd separates sheep from goats.\n\nTo the SHEEP on His right, Jesus will say: 'Come! You're blessed! Enter the kingdom My Father prepared for you. Because when I was hungry, you fed Me. When I was thirsty, you gave Me water. When I was a stranger, you welcomed Me. When I needed clothes, you gave Me some. When I was sick or in prison, you visited Me.'\n\nThe sheep will be confused. 'Lord, when did we ever do those things for YOU?'\n\nJesus will answer: 'Whenever you helped the least important person, you were helping ME.'\n\nThen to the GOATS on His left, Jesus will say: 'Go away. When I was hungry, you didn't feed Me. When I was thirsty, you gave Me nothing. When I was a stranger, you ignored Me. When I was sick or in prison, you didn't visit.'\n\nThe goats will say, 'Lord, when did we see You and not help?'\n\nJesus will answer: 'Whenever you DIDN'T help the least important person, you were ignoring ME.'\n\nThis is serious! Jesus says how we treat other people—especially poor, sick, lonely people—shows what's in our hearts.\n\nWhen you help someone in need, you're serving JESUS. When you ignore them, you're ignoring Him." } ] } diff --git a/kjvstudy_org/data/stories/10_passion.json b/kjvstudy_org/data/stories/10_passion.json index 8940233..38ef376 100644 --- a/kjvstudy_org/data/stories/10_passion.json +++ b/kjvstudy_org/data/stories/10_passion.json @@ -86,6 +86,54 @@ "kids_title": "Thomas Believes", "kids_description": "Thomas wasn't there when Jesus first appeared to the disciples. He said, 'I won't believe until I see for myself!' A week later, Jesus came back just for Thomas.", "kids_narrative": "After Jesus rose from the dead, He visited His disciples. But one of them wasn't there—Thomas.\n\nWhen Thomas got back, everyone was SO excited!\n\n'Thomas! Thomas! We SAW Jesus! He's ALIVE!'\n\nBut Thomas shook his head. 'No way. I won't believe it unless I see Him myself. I need to see the holes in His hands and touch His side where the spear went in. Then I'll believe.'\n\nA whole week went by. The disciples were together in a room with the doors locked.\n\nSuddenly—Jesus was there! Right in the middle of the room!\n\n'Peace be with you,' Jesus said.\n\nThen Jesus looked at Thomas. He held out His hands.\n\n'Thomas, come here. Look at My hands. Put your finger right here where the nails were. Touch My side. Stop doubting and BELIEVE!'\n\nThomas stared. It really WAS Jesus! He fell to his knees.\n\n'My Lord and my God!'\n\nThomas believed! He KNEW Jesus was alive!\n\nJesus said something important: 'You believe because you've seen Me. But there will be people who believe without seeing—and they are blessed!'\n\nThat's US! We haven't seen Jesus with our eyes, but we believe He's real and alive. Jesus says we're BLESSED!\n\nJesus was patient with Thomas. He's patient with us too when we have questions or doubts. He wants us to believe!" + }, + { + "title": "The Road to Emmaus", + "slug": "road-to-emmaus", + "description": "Two discouraged disciples walk toward Emmaus when a stranger joins them. As He explains the Scriptures and breaks bread, their eyes are opened—it's Jesus!", + "verses": ["Luke 24:13-35"], + "themes": ["Scripture reveals Jesus", "Discouragement to joy", "Recognizing Jesus", "Fellowship"], + "characters": ["Jesus", "Cleopas", "Another disciple"], + "narrative": "Now that same day two of them were going to a village called Emmaus, about seven miles from Jerusalem. They were talking with each other about everything that had happened.\n\nAs they talked and discussed these things, Jesus himself came up and walked along with them; but they were kept from recognizing him.\n\nHe asked them, 'What are you discussing together as you walk along?'\n\nThey stood still, their faces downcast. One of them, named Cleopas, asked him, 'Are you the only one visiting Jerusalem who does not know the things that have happened there in these days?'\n\n'What things?' he asked.\n\n'About Jesus of Nazareth,' they replied. 'He was a prophet, powerful in word and deed. The chief priests handed him over to be crucified. We had hoped that he was the one who was going to redeem Israel. And what is more, it is the third day since all this took place. Some women amazed us—they went to the tomb but didn't find his body. They came and told us they had seen angels who said he was alive.'\n\nHe said to them, 'How foolish you are, and how slow to believe all that the prophets have spoken! Did not the Messiah have to suffer these things and then enter his glory?' And beginning with Moses and all the Prophets, he explained to them what was said in all the Scriptures concerning himself.\n\nAs they approached the village, Jesus continued on as if he were going farther. But they urged him strongly, 'Stay with us, for it is nearly evening.' So he went in to stay with them.\n\nWhen he was at the table with them, he took bread, gave thanks, broke it and began to give it to them. Then their eyes were opened and they recognized him, and he disappeared from their sight.\n\nThey asked each other, 'Were not our hearts burning within us while he talked with us on the road and opened the Scriptures to us?'\n\nThey got up and returned at once to Jerusalem. There they found the Eleven gathered together, and they told what had happened on the road, and how Jesus was recognized by them when he broke the bread.", + "kids_title": "The Stranger on the Road", + "kids_description": "Two sad disciples were walking home when a stranger joined them. He explained the Bible to them. At dinner, they finally recognized Him—it was Jesus!", + "kids_narrative": "It was the same day Jesus rose from the dead. Two of His followers were walking to a village called Emmaus. They were SO sad.\n\n'I can't believe Jesus is gone,' one said. His name was Cleopas.\n\n'I thought He was the one who would save Israel,' the other said.\n\nA stranger came up and started walking with them.\n\n'What are you talking about?' the stranger asked.\n\nThey stopped and stared at Him. 'Are you the ONLY person who doesn't know what happened? Jesus of Nazareth was crucified! We thought He was the Messiah. Now He's dead.'\n\nThe stranger shook His head. 'Don't you understand? The prophets said the Messiah HAD to suffer before entering His glory!'\n\nThen the stranger started explaining the WHOLE Bible—from Moses to all the prophets—showing how everything pointed to Jesus!\n\nThe two disciples listened with wide eyes. Their hearts felt like they were on FIRE!\n\nWhen they reached Emmaus, it was getting dark. 'Please stay with us!' they begged.\n\nThe stranger agreed. They sat down to eat. The stranger took the bread, blessed it, broke it, and gave it to them.\n\nSuddenly—their eyes were opened! The stranger was JESUS!\n\nAnd then—POOF! He disappeared!\n\n'NO WONDER our hearts were burning!' they said. 'It was JESUS the whole time!'\n\nThey ran ALL the way back to Jerusalem to tell the other disciples: 'We SAW Jesus! He's ALIVE!'\n\nJesus loved them so much that He walked beside them even when they didn't recognize Him. He's with us too, even when we can't see Him." + }, + { + "title": "Jesus Restores Peter", + "slug": "jesus-restores-peter", + "description": "By the Sea of Galilee, the risen Jesus cooks breakfast for His disciples and asks Peter three times, 'Do you love me?'—restoring the disciple who had denied Him three times.", + "verses": ["John 21:1-19"], + "themes": ["Restoration", "Forgiveness", "Second chances", "Calling"], + "characters": ["Jesus", "Peter", "John", "Other disciples"], + "narrative": "Afterward Jesus appeared again to his disciples, by the Sea of Galilee. Simon Peter, Thomas, Nathanael, the sons of Zebedee, and two other disciples were together.\n\n'I'm going out to fish,' Simon Peter told them, and they said, 'We'll go with you.' So they went out and got into the boat, but that night they caught nothing.\n\nEarly in the morning, Jesus stood on the shore, but the disciples did not realize it was him.\n\nHe called out to them, 'Friends, haven't you any fish?'\n\n'No,' they answered.\n\nHe said, 'Throw your net on the right side of the boat and you will find some.' When they did, they were unable to haul the net in because of the large number of fish.\n\nThen the disciple whom Jesus loved said to Peter, 'It is the Lord!' As soon as Simon Peter heard this, he jumped into the water.\n\nWhen they landed, they saw a fire of burning coals there with fish on it, and some bread. Jesus said to them, 'Come and have breakfast.'\n\nWhen they had finished eating, Jesus said to Simon Peter, 'Simon son of John, do you love me more than these?'\n\n'Yes, Lord,' he said, 'you know that I love you.'\n\nJesus said, 'Feed my lambs.'\n\nAgain Jesus said, 'Simon son of John, do you love me?'\n\nHe answered, 'Yes, Lord, you know that I love you.'\n\nJesus said, 'Take care of my sheep.'\n\nThe third time he said to him, 'Simon son of John, do you love me?'\n\nPeter was hurt because Jesus asked him the third time. He said, 'Lord, you know all things; you know that I love you.'\n\nJesus said, 'Feed my sheep. Very truly I tell you, when you were younger you dressed yourself and went where you wanted; but when you are old you will stretch out your hands, and someone else will dress you and lead you where you do not want to go.' Jesus said this to indicate the kind of death by which Peter would glorify God. Then he said to him, 'Follow me!'", + "kids_title": "Breakfast with Jesus", + "kids_description": "After Peter had denied Jesus three times, he felt terrible. But Jesus made him breakfast and asked three times, 'Do you love me?' Jesus forgave Peter and gave him an important job!", + "kids_narrative": "Peter felt SO bad. He had told people THREE times that he didn't know Jesus. How could Jesus ever forgive him?\n\nOne night, Peter and some other disciples went fishing on the Sea of Galilee. They fished ALL night but caught NOTHING.\n\nIn the morning, someone called from the shore: 'Hey! Catch any fish?'\n\n'No!' they shouted back.\n\n'Throw your net on the other side of the boat!'\n\nThey did—and WHOOSH! So many fish filled the net they couldn't even pull it in!\n\nJohn's eyes got big. 'It's the LORD!'\n\nPeter was so excited he JUMPED into the water and swam to shore! The others brought the boat.\n\nOn the beach, Jesus had a fire going with fish cooking on it. 'Come have breakfast!' Jesus said.\n\nJesus served them bread and fish. It was SO good!\n\nAfter breakfast, Jesus turned to Peter.\n\n'Simon Peter, do you love me?'\n\n'Yes, Lord! You know I love you!'\n\n'Then feed my lambs.'\n\nAgain Jesus asked, 'Peter, do you love me?'\n\n'Yes, Lord, you know I love you!'\n\n'Take care of my sheep.'\n\nA third time: 'Peter, do you love me?'\n\nPeter felt sad—Jesus asked THREE times. But then he understood. He had denied Jesus three times. Now Jesus was giving him three chances to say he loved Him!\n\n'Lord, you know everything! You know I love you!'\n\n'Feed my sheep. Follow me.'\n\nJesus forgave Peter! Not only that—Jesus gave him an important job: take care of God's people!\n\nWhen WE mess up, Jesus doesn't throw us away. He forgives us and gives us another chance. He still has plans for us!" + }, + { + "title": "The Great Commission", + "slug": "great-commission", + "description": "The risen Jesus meets His disciples on a mountain in Galilee and gives them their mission: to make disciples of all nations, baptizing and teaching them.", + "verses": ["Matthew 28:16-20"], + "themes": ["Mission", "Authority of Jesus", "Making disciples", "Jesus' presence"], + "characters": ["Jesus", "The Eleven Disciples"], + "narrative": "Then the eleven disciples went to Galilee, to the mountain where Jesus had told them to go. When they saw him, they worshiped him; but some doubted.\n\nThen Jesus came to them and said, 'All authority in heaven and on earth has been given to me. Therefore go and make disciples of all nations, baptizing them in the name of the Father and of the Son and of the Holy Spirit, and teaching them to obey everything I have commanded you. And surely I am with you always, to the very end of the age.'", + "kids_title": "Go and Tell Everyone!", + "kids_description": "Before Jesus went back to heaven, He gave His followers an important job: go everywhere in the world and tell people about Him!", + "kids_narrative": "Jesus told His disciples to meet Him on a mountain in Galilee. When they saw Him, they fell down and worshiped Him!\n\nJesus had something VERY important to tell them.\n\n'ALL power in heaven and earth has been given to Me,' Jesus said.\n\nThe disciples listened carefully.\n\n'So HERE'S what I want you to do: GO! Go to ALL the nations—every country in the whole world!'\n\nJesus continued: 'Make disciples everywhere. Baptize them in the name of the Father, the Son, and the Holy Spirit. Teach them to obey everything I've taught you.'\n\nThat was a BIG job! Go to the whole world? Tell EVERYONE?\n\nBut then Jesus said the best part:\n\n'And remember this: I am with you ALWAYS. Even to the very end of the world.'\n\nJesus wasn't going to leave them alone! He would be with them every step of the way.\n\nThis is called the 'Great Commission.' Jesus was giving His followers their mission—their special job.\n\nAnd guess what? This job is for US too! Jesus wants EVERYONE to hear about Him. That includes people in every country, speaking every language.\n\nSome people become missionaries and go far away. Some people tell their neighbors and friends. But ALL of us can share Jesus with others!\n\nAnd Jesus promises: He's ALWAYS with us. We're never alone. He'll help us tell others about Him!" + }, + { + "title": "The Ascension", + "slug": "the-ascension", + "description": "Forty days after His resurrection, Jesus blesses His disciples and is taken up into heaven. Angels promise He will return the same way.", + "verses": ["Acts 1:1-11", "Luke 24:50-53"], + "themes": ["Jesus' return to heaven", "Promise of the Holy Spirit", "Jesus will come back", "Worship"], + "characters": ["Jesus", "The Disciples", "Two Angels"], + "narrative": "In my former book, Theophilus, I wrote about all that Jesus began to do and to teach until the day he was taken up to heaven, after giving instructions through the Holy Spirit to the apostles he had chosen.\n\nAfter his suffering, he presented himself to them and gave many convincing proofs that he was alive. He appeared to them over a period of forty days and spoke about the kingdom of God.\n\nOn one occasion, while he was eating with them, he gave them this command: 'Do not leave Jerusalem, but wait for the gift my Father promised, which you have heard me speak about. For John baptized with water, but in a few days you will be baptized with the Holy Spirit.'\n\nThen they gathered around him and asked him, 'Lord, are you at this time going to restore the kingdom to Israel?'\n\nHe said to them: 'It is not for you to know the times or dates the Father has set by his own authority. But you will receive power when the Holy Spirit comes on you; and you will be my witnesses in Jerusalem, and in all Judea and Samaria, and to the ends of the earth.'\n\nAfter he said this, he was taken up before their very eyes, and a cloud hid him from their sight.\n\nThey were looking intently up into the sky as he was going, when suddenly two men dressed in white stood beside them. 'Men of Galilee,' they said, 'why do you stand here looking into the sky? This same Jesus, who has been taken from you into heaven, will come back in the same way you have seen him go into heaven.'\n\nThen the disciples worshiped him and returned to Jerusalem with great joy.", + "kids_title": "Jesus Goes to Heaven", + "kids_description": "Forty days after rising from the dead, Jesus went back up to heaven. But He promised to send the Holy Spirit—and to come back one day!", + "kids_narrative": "For forty days after Jesus rose from the dead, He kept appearing to His disciples. He taught them more about God's kingdom. He ate meals with them. He proved He was really, truly alive!\n\nOne day, Jesus led His disciples to a hill near Jerusalem.\n\n'Don't leave Jerusalem yet,' Jesus told them. 'Wait for the gift My Father promised—the Holy Spirit! In a few days, you'll be baptized with the Holy Spirit. You'll receive POWER! And you'll tell people about Me—first in Jerusalem, then everywhere in the world!'\n\nThe disciples had a question: 'Lord, is this when You'll set up Your kingdom?'\n\nJesus said, 'It's not for you to know the timing. The Father decides that. But you WILL receive power when the Holy Spirit comes!'\n\nThen something AMAZING happened.\n\nJesus lifted His hands and blessed them. And then—He started going UP! Higher and higher! A cloud surrounded Him, and He went right up into HEAVEN!\n\nThe disciples stared up at the sky with their mouths open.\n\nSuddenly, two men in white clothes (angels!) appeared beside them.\n\n'Why are you standing here looking at the sky?' the angels asked. 'This same Jesus will come BACK the same way you saw Him go!'\n\nJesus went to heaven, but He's coming back! One day, He'll return in the clouds, and everyone will see Him!\n\nThe disciples were SO happy! They went back to Jerusalem praising God, waiting for the Holy Spirit.\n\nJesus is in heaven now, preparing a place for everyone who believes in Him. And one day—He's coming back!" } ] } diff --git a/kjvstudy_org/routes/api.py b/kjvstudy_org/routes/api.py index 6d5067f..24d17ce 100644 --- a/kjvstudy_org/routes/api.py +++ b/kjvstudy_org/routes/api.py @@ -12,6 +12,13 @@ from ..interlinear_loader import get_interlinear_data, has_interlinear_data from ..utils.books import normalize_book_name, OT_BOOKS from ..utils.search import perform_full_text_search from ..utils.helpers import get_daily_verse +from ..data.stories import ( + get_categories, + get_story_by_slug, + get_story_count, + get_category_count, + get_all_stories_flat, +) router = APIRouter(prefix="/api", tags=["API"]) @@ -44,7 +51,9 @@ def api_index(): "topics": "/api/topics", "topic": "/api/topics/{topic_name}", "reading_plans": "/api/reading-plans", - "reading_plan": "/api/reading-plans/{plan_id}" + "reading_plan": "/api/reading-plans/{plan_id}", + "stories": "/api/stories", + "story": "/api/stories/{slug}" } } @@ -440,3 +449,71 @@ def api_get_reading_plan(plan_id: str = Path(..., description="Reading plan ID", raise HTTPException(status_code=404, detail="Reading plan not found") return plan + + +@router.get("/stories") +def api_get_stories(): + """Get list of all Bible stories organized by category.""" + categories = get_categories() + story_count = get_story_count() + category_count = get_category_count() + + # Format categories for API response + categories_list = [] + for category in categories: + stories_list = [] + for story in category.get("stories", []): + stories_list.append({ + "title": story.get("title"), + "slug": story.get("slug"), + "description": story.get("description"), + "verses": story.get("verses", []), + "characters": story.get("characters", []), + "themes": story.get("themes", []), + "kids_title": story.get("kids_title"), + "kids_description": story.get("kids_description"), + "has_kids_version": bool(story.get("kids_narrative")) + }) + categories_list.append({ + "category": category.get("category"), + "slug": category.get("slug"), + "description": category.get("description"), + "story_count": len(stories_list), + "stories": stories_list + }) + + return { + "total_stories": story_count, + "total_categories": category_count, + "categories": categories_list + } + + +@router.get("/stories/{slug}") +def api_get_story(slug: str = Path(..., description="Story slug", examples=["creation-of-the-world"])): + """Get a specific Bible story by slug.""" + story = get_story_by_slug(slug) + if not story: + raise HTTPException(status_code=404, detail="Story not found") + + return { + "title": story.get("title"), + "slug": story.get("slug"), + "description": story.get("description"), + "category": story.get("category_name"), + "category_slug": story.get("category_slug"), + "verses": story.get("verses", []), + "characters": story.get("characters", []), + "themes": story.get("themes", []), + "narrative": story.get("narrative"), + "kids_title": story.get("kids_title"), + "kids_description": story.get("kids_description"), + "kids_narrative": story.get("kids_narrative"), + "has_kids_version": bool(story.get("kids_narrative")), + "links": { + "web": f"/stories/{slug}", + "kids_web": f"/stories/{slug}/kids" if story.get("kids_narrative") else None, + "pdf": f"/stories/{slug}/pdf", + "kids_pdf": f"/stories/{slug}/kids/pdf" if story.get("kids_narrative") else None + } + } diff --git a/kjvstudy_org/routes/stories.py b/kjvstudy_org/routes/stories.py index c769862..bdac2db 100644 --- a/kjvstudy_org/routes/stories.py +++ b/kjvstudy_org/routes/stories.py @@ -2,8 +2,9 @@ Routes for browsing Bible stories with adult and kids versions. """ +import io from fastapi import APIRouter, Request, HTTPException -from fastapi.responses import HTMLResponse +from fastapi.responses import HTMLResponse, StreamingResponse from ..kjv import bible from ..data.stories import ( get_categories, @@ -12,6 +13,14 @@ from ..data.stories import ( get_category_count, ) +# Try to import WeasyPrint (requires system libraries) +try: + from weasyprint import HTML + WEASYPRINT_AVAILABLE = True +except (ImportError, OSError): + WEASYPRINT_AVAILABLE = False + HTML = None + router = APIRouter(tags=["Bible Stories"]) # Templates will be set by the main app @@ -78,6 +87,71 @@ def stories_kids_index(request: Request): ) +@router.get("/stories/{slug}/pdf") +def story_pdf(request: Request, slug: str): + """Generate PDF for a story (adult version).""" + if not WEASYPRINT_AVAILABLE: + raise HTTPException( + status_code=503, + detail="PDF generation is not available. WeasyPrint system libraries are not installed." + ) + + story = get_story_by_slug(slug) + + if not story: + raise HTTPException(status_code=404, detail="Story not found") + + # Render the PDF template + html_content = templates.get_template("story_pdf.html").render(story=story) + + # Generate PDF + pdf_buffer = io.BytesIO() + HTML(string=html_content).write_pdf(pdf_buffer) + pdf_buffer.seek(0) + + # Return as downloadable PDF + filename = f"{slug}.pdf" + return StreamingResponse( + pdf_buffer, + media_type="application/pdf", + headers={"Content-Disposition": f"attachment; filename={filename}"} + ) + + +@router.get("/stories/{slug}/kids/pdf") +def story_kids_pdf(request: Request, slug: str): + """Generate PDF for a story (kids version).""" + if not WEASYPRINT_AVAILABLE: + raise HTTPException( + status_code=503, + detail="PDF generation is not available. WeasyPrint system libraries are not installed." + ) + + story = get_story_by_slug(slug) + + if not story: + raise HTTPException(status_code=404, detail="Story not found") + + if not story.get("kids_narrative"): + raise HTTPException(status_code=404, detail="Kids version not available for this story") + + # Render the PDF template + html_content = templates.get_template("story_kids_pdf.html").render(story=story) + + # Generate PDF + pdf_buffer = io.BytesIO() + HTML(string=html_content).write_pdf(pdf_buffer) + pdf_buffer.seek(0) + + # Return as downloadable PDF + filename = f"{slug}-kids.pdf" + return StreamingResponse( + pdf_buffer, + media_type="application/pdf", + headers={"Content-Disposition": f"attachment; filename={filename}"} + ) + + @router.get("/stories/{slug}", response_class=HTMLResponse) def story_detail(request: Request, slug: str): """Individual story page (adult version).""" diff --git a/kjvstudy_org/templates/story_detail.html b/kjvstudy_org/templates/story_detail.html index ad87647..441ef41 100644 --- a/kjvstudy_org/templates/story_detail.html +++ b/kjvstudy_org/templates/story_detail.html @@ -186,11 +186,39 @@ hr.story-divider::before { color: var(--text-secondary, #ccc); } +/* PDF download button */ +.print-btn { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 1rem; + font-size: 0.9rem; + color: var(--text-secondary, #666); + background: var(--code-bg, #f8f8f8); + border: 1px solid var(--border-color, #ddd); + border-radius: 4px; + cursor: pointer; + transition: all 0.2s; + margin-top: 1rem; + text-decoration: none; +} +.print-btn:hover { + background: var(--bg-color, #fff); + border-color: var(--link-color); + color: var(--link-color); + text-decoration: none; +} +.print-btn svg { + width: 16px; + height: 16px; +} + /* Print styles */ @media print { .story-meta, .kids-callout, - .story-nav { + .story-nav, + .print-btn { display: none; } @@ -287,6 +315,13 @@ hr.story-divider::before {
This story is also available in a kid-friendly version: {{ story.kids_title }} — written with simpler language and engaging narration perfect for young readers or family devotions.
+ + + + Download PDF +