[{"data":1,"prerenderedAt":496},["ShallowReactive",2],{"post-\u002Fposts\u002Fenhancing-engagement-enabling-comments-on-my-articles":3,"post-link-en-0d4cb8be-230e-444e-9419-fce9adf0ef6b":253},{"id":4,"title":5,"body":6,"contentId":241,"date":242,"description":243,"extension":244,"meta":245,"navigation":86,"path":246,"rawbody":247,"robots":248,"schemaOrg":248,"seo":249,"sitemap":250,"stem":251,"__hash__":252},"posts\u002Fposts\u002Fenhancing-engagement-enabling-comments-on-my-articles.md","Enhancing Engagement: Enabling Comments on My Articles",{"type":7,"value":8,"toc":235},"minimark",[9,24],[10,11,12,13,18,19,23],"p",{},"Last week, I introduced the first phase of a major project: ",[14,15,17],"a",{"href":16},".\u002Fenhancing-engagement-adding-reactions-to-my-articles","incorporating reactions to my articles",". Today, I'm excited to unveil the second phase: ",[20,21,22],"strong",{},"enabling comments on my articles",".",[25,26,28,33,36,50,54,67,70],"callout-read-more",{"id":27},"0d4cb8be-230e-444e-9419-fce9adf0ef6b",[29,30,32],"h2",{"id":31},"a-second-phase","A second phase",[10,34,35],{},"In the previous article, I detailed the progressive approach I'm pursuing to enhance my personal website. Step by step, I aim to introduce features to engage with you, the reader, and create a platform for meaningful interactions around all the knowledge I share.",[10,37,38,39,45,46],{},"It's a progressive process because I believe this is the most effective way to deliver, rather than waiting to complete everything at once. At the same time, it keeps me motivated and focused by achieving small victories and receiving feedback. And since I'm learning ",[14,40,44],{"href":41,"rel":42},"https:\u002F\u002Flaravel.com",[43],"nofollow","Laravel",", it prevents me from feeling overwhelmed by the project's complexity. ",[47,48,49],"em",{},"In essence, it's a win-win scenario.",[29,51,53],{"id":52},"the-importance-of-comments","The importance of comments",[10,55,56,57,62,63,66],{},"Recently, I posted on X ",[14,58,61],{"href":59,"rel":60},"https:\u002F\u002Fx.com\u002Fsoubiran_\u002Fstatus\u002F1842987889216672223",[43],"a thread about \"singleton composables\"",". Swiftly, I received comments, suggestions, and insights that made me realize that I could be mistaken. ",[47,64,65],{},"I was mistaken."," And I'm grateful that I had the opportunity to learn from others' feedback.",[10,68,69],{},"Two weeks ago, I also published an article on the simplest method to create a Vue.js component library. At one juncture, there were two approaches to constructing the library. I chose one, deeming it the simplest, but through comments, people could have shared their thoughts and experiences, which could have assisted others in making better decisions and learning from one another.",[25,71,73,76,80,83,93,99,151,157,160,203,206,221,224,230],{"id":72},"f9754148-40bd-4df2-a144-f686e894b200",[10,74,75],{},"Comments are valuable as they allow us to express our thoughts, ask questions, and engage in discussions. They enable us to learn from each other, broaden our knowledge, and grow collectively. With this in mind, I decided to implement the comments feature on my personal website.",[29,77,79],{"id":78},"taking-the-second-step","Taking the second step",[10,81,82],{},"And here we are, the comments feature has been implemented and launched.",[84,85,87,88],"video",{"autoPlay":86,"loop":86,"muted":86,"playsInline":86},true,"\n  ",[89,90],"source",{"src":91,"type":92},"https:\u002F\u002Fimages.soubiran.dev\u002Fposts\u002Fenhancing-engagement-enabling-comments-on-my-articles\u002Fdemo.mp4","video\u002Fmp4",[10,94,95,96],{},"This phase posed more challenges than the first. I had to consider various factors and make decisions throughout the process. ",[47,97,98],{},"It's fascinating to observe how the same feature can be implemented in different ways. Ultimately, it's about striking a balance, aiming to choose the best solution for your specific scenario based on your needs and constraints like time, resources, and expertise.",[100,101,102,109,115,124,130,136,142],"ul",{},[103,104,105,108],"li",{},[20,106,107],{},"Which editor to use?"," Notion-like, Markdown, or WYSIWYG?",[103,110,111,114],{},[20,112,113],{},"How to render the editor?"," EasyMDE, CKEditor, Quill, or a simple textarea?",[103,116,117,120,121],{},[20,118,119],{},"How to highlight the code blocks?"," Prism.js, Highlight.js, or Shiki? ",[47,122,123],{},"This is crucial for my technical articles.",[103,125,126,129],{},[20,127,128],{},"How to preview the comments?"," Real-time, on-demand, or in browser?",[103,131,132,135],{},[20,133,134],{},"Is a reply a comment?"," Comments can have replies, but should replies be considered comments?",[103,137,138,141],{},[20,139,140],{},"Does a comment deletion delete the replies?"," If a comment is deleted, should the replies be removed as well?",[103,143,144,147,148],{},[20,145,146],{},"Who can comment?"," Everyone, authenticated users, or only me? ",[47,149,150],{},"It would be odd if only I could comment on my articles.",[10,152,153,154],{},"The benefit of building the project incrementally is that these were the only decisions I had to make. ",[47,155,156],{},"I didn't have to worry about the entire project, just the comments feature.",[10,158,159],{},"To address these questions, I conducted research, experimented, and made trade-offs.",[100,161,162,180,197],{},[103,163,164,167,168,173,174,179],{},[20,165,166],{},"Research",": I tried to find articles on best practices but didn't find anything especially useful. So I delved into ",[14,169,172],{"href":170,"rel":171},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fdiscussions",[43],"GitHub Discussions"," and ",[14,175,178],{"href":176,"rel":177},"https:\u002F\u002Flaracasts.com\u002Fdiscuss",[43],"Laracasts Forum",". I discovered interesting patterns and ideas that I could leverage.",[103,181,182,185,186,173,191,196],{},[20,183,184],{},"Experiment",": In previous projects, I used ",[14,187,190],{"href":188,"rel":189},"https:\u002F\u002Fgithub.com\u002FIonaru\u002Feasy-markdown-editor",[43],"EasyMDE",[14,192,195],{"href":193,"rel":194},"https:\u002F\u002Fquilljs.com\u002F",[43],"Quill",". I also examined editors from the platforms mentioned earlier, and my final choice may surprise you. 🫣",[103,198,199,202],{},[20,200,201],{},"Trade-offs",": Choosing simplicity over complexity. This is my guiding principle, and all my decisions are informed by it. However, simplicity can be quite complex and doesn't mean compromising on features or user experience.",[10,204,205],{},"All these decisions were made with the user in mind. I aim to make the commenting experience as seamless and enjoyable as possible, encouraging you to share your thoughts, ask questions, and engage in discussions.",[10,207,208,209,212,213,216,217,220],{},"Sometimes I'm wrong, and sometimes there are better solutions, and these are the moments when ",[20,210,211],{},"I need your feedback",". ",[47,214,215],{},"I acknowledge I'm not perfect and I'm always open to learning and improving."," With this new comments feature, it's now easier than ever to share your thoughts and ",[20,218,219],{},"help everyone learn and grow",". 💜",[222,223],"hr",{},[10,225,226,229],{},[20,227,228],{},"Would you like to delve deeper into how I implemented the comments feature?"," Let me know in the comments below. ⬇️",[10,231,232],{},[47,233,234],{},"I'm contemplating writing a series of articles about this project, from ideation to real-world implementation, complete with numerous code snippets and explanations.",{"title":236,"searchDepth":237,"depth":237,"links":238},"",2,[239,240],{"id":31,"depth":237,"text":32},{"id":52,"depth":237,"text":53},"c8faba17-5480-49fb-a201-d426ea583097","2024-10-09","The second phase of a key project. Let's proceed by allowing readers to comment on my articles. It's time to foster meaningful conversations and discussions.","md",{},"\u002Fposts\u002Fenhancing-engagement-enabling-comments-on-my-articles","---\ncontentId: c8faba17-5480-49fb-a201-d426ea583097\ntitle: \"Enhancing Engagement: Enabling Comments on My Articles\"\ndescription: The second phase of a key project. Let's proceed by allowing readers to comment on my articles. It's time to foster meaningful conversations and discussions.\ndate: 2024-10-09\n---\n\nLast week, I introduced the first phase of a major project: [incorporating reactions to my articles](.\u002Fenhancing-engagement-adding-reactions-to-my-articles.md). Today, I'm excited to unveil the second phase: **enabling comments on my articles**.\n\n\u003CCalloutReadMore id=\"0d4cb8be-230e-444e-9419-fce9adf0ef6b\" \u002F>\n\n## A second phase\n\nIn the previous article, I detailed the progressive approach I'm pursuing to enhance my personal website. Step by step, I aim to introduce features to engage with you, the reader, and create a platform for meaningful interactions around all the knowledge I share.\n\nIt's a progressive process because I believe this is the most effective way to deliver, rather than waiting to complete everything at once. At the same time, it keeps me motivated and focused by achieving small victories and receiving feedback. And since I'm learning [Laravel](https:\u002F\u002Flaravel.com), it prevents me from feeling overwhelmed by the project's complexity. _In essence, it's a win-win scenario._\n\n## The importance of comments\n\nRecently, I posted on X [a thread about \"singleton composables\"](https:\u002F\u002Fx.com\u002Fsoubiran_\u002Fstatus\u002F1842987889216672223). Swiftly, I received comments, suggestions, and insights that made me realize that I could be mistaken. _I was mistaken._ And I'm grateful that I had the opportunity to learn from others' feedback.\n\nTwo weeks ago, I also published an article on the simplest method to create a Vue.js component library. At one juncture, there were two approaches to constructing the library. I chose one, deeming it the simplest, but through comments, people could have shared their thoughts and experiences, which could have assisted others in making better decisions and learning from one another.\n\n\u003CCalloutReadMore id=\"f9754148-40bd-4df2-a144-f686e894b200\" \u002F>\n\nComments are valuable as they allow us to express our thoughts, ask questions, and engage in discussions. They enable us to learn from each other, broaden our knowledge, and grow collectively. With this in mind, I decided to implement the comments feature on my personal website.\n\n## Taking the second step\n\nAnd here we are, the comments feature has been implemented and launched.\n\n\u003Cvideo autoplay loop muted playsinline>\n  \u003Csource src=\"https:\u002F\u002Fimages.soubiran.dev\u002Fposts\u002Fenhancing-engagement-enabling-comments-on-my-articles\u002Fdemo.mp4\" type=\"video\u002Fmp4\">\n\u003C\u002Fvideo>\n\nThis phase posed more challenges than the first. I had to consider various factors and make decisions throughout the process. _It's fascinating to observe how the same feature can be implemented in different ways. Ultimately, it's about striking a balance, aiming to choose the best solution for your specific scenario based on your needs and constraints like time, resources, and expertise._\n\n- **Which editor to use?** Notion-like, Markdown, or WYSIWYG?\n- **How to render the editor?** EasyMDE, CKEditor, Quill, or a simple textarea?\n- **How to highlight the code blocks?** Prism.js, Highlight.js, or Shiki? _This is crucial for my technical articles._\n- **How to preview the comments?** Real-time, on-demand, or in browser?\n- **Is a reply a comment?** Comments can have replies, but should replies be considered comments?\n- **Does a comment deletion delete the replies?** If a comment is deleted, should the replies be removed as well?\n- **Who can comment?** Everyone, authenticated users, or only me? _It would be odd if only I could comment on my articles._\n\nThe benefit of building the project incrementally is that these were the only decisions I had to make. _I didn't have to worry about the entire project, just the comments feature._\n\nTo address these questions, I conducted research, experimented, and made trade-offs.\n\n- **Research**: I tried to find articles on best practices but didn't find anything especially useful. So I delved into [GitHub Discussions](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fdiscussions) and [Laracasts Forum](https:\u002F\u002Flaracasts.com\u002Fdiscuss). I discovered interesting patterns and ideas that I could leverage.\n- **Experiment**: In previous projects, I used [EasyMDE](https:\u002F\u002Fgithub.com\u002FIonaru\u002Feasy-markdown-editor) and [Quill](https:\u002F\u002Fquilljs.com\u002F). I also examined editors from the platforms mentioned earlier, and my final choice may surprise you. 🫣\n- **Trade-offs**: Choosing simplicity over complexity. This is my guiding principle, and all my decisions are informed by it. However, simplicity can be quite complex and doesn't mean compromising on features or user experience.\n\nAll these decisions were made with the user in mind. I aim to make the commenting experience as seamless and enjoyable as possible, encouraging you to share your thoughts, ask questions, and engage in discussions.\n\nSometimes I'm wrong, and sometimes there are better solutions, and these are the moments when **I need your feedback**. _I acknowledge I'm not perfect and I'm always open to learning and improving._ With this new comments feature, it's now easier than ever to share your thoughts and **help everyone learn and grow**. 💜\n\n---\n\n**Would you like to delve deeper into how I implemented the comments feature?** Let me know in the comments below. ⬇️\n\n_I'm contemplating writing a series of articles about this project, from ideation to real-world implementation, complete with numerous code snippets and explanations._\n",null,{"title":5,"description":243},{"loc":246},"posts\u002Fenhancing-engagement-enabling-comments-on-my-articles","MDt3jBX3K_2x2WObJstlDQxjyMZd38Vrs9yAPTnE48w",{"id":254,"title":255,"body":256,"contentId":27,"date":487,"description":488,"extension":244,"meta":489,"navigation":86,"path":490,"rawbody":491,"robots":248,"schemaOrg":248,"seo":492,"sitemap":493,"stem":494,"__hash__":495},"posts\u002Fposts\u002Fenhancing-engagement-adding-reactions-to-my-articles.md","Enhancing Engagement: Adding Reactions to My Articles",{"type":7,"value":257,"toc":481},[258,261,265,277],[10,259,260],{},"Hey there! I hope you're doing well. I'm excited to share with you the beginning of a significant project that will accompany me over the coming months.",[29,262,264],{"id":263},"introduction","Introduction",[10,266,267,268,273,274],{},"In March 2024, I announced the overhaul of my personal website for the fourth time, this time using ",[14,269,272],{"href":270,"rel":271},"https:\u002F\u002Fvitepress.dev\u002F",[43],"VitePress",". This decision was guided by the desire for a streamlined yet robust tool that allows me to write easily and rapidly while maintaining control over both design and functionality. ",[47,275,276],{},"VitePress is truly exceptional in this regard.",[25,278,280,284,291,297,306,323,327,338,341,347,351,368,373,376,458,464,473,478],{"id":279},"674a3932-aaba-445c-82bb-0896ce3a8e7e",[29,281,283],{"id":282},"exploring-new-horizons","Exploring new horizons",[10,285,286,287,290],{},"In June 2024, I embarked on learning ",[14,288,44],{"href":41,"rel":289},[43]," for two primary reasons.",[10,292,293,294],{},"Firstly, I aimed to broaden my expertise and skills in web development. I want to create applications from the ground up, turning ideas into reality without heavily relying on external services. ",[47,295,296],{},"And I'm already working on my first SaaS 🤫.",[10,298,299,300,305],{},"Secondly, I sought more flexibility in my career options. Since the outset of my professional journey, I have predominantly used ",[14,301,304],{"href":302,"rel":303},"https:\u002F\u002Fangular.dev\u002F",[43],"Angular"," as my main tool. I am eager to explore new avenues as Angular no longer resonates with me.",[10,307,308],{},[47,309,310,311,316,317,322],{},"I considered ",[14,312,315],{"href":313,"rel":314},"https:\u002F\u002Frubyonrails.org\u002F",[43],"Rails",", but once you've experienced the Laravel Documentation and ",[14,318,321],{"href":319,"rel":320},"https:\u002F\u002Flaracasts.com\u002Freferral\u002FBarbapapazes",[43],"Laracasts",", the choice becomes apparent.",[29,324,326],{"id":325},"progressing-incrementally","Progressing incrementally",[10,328,329,330],{},"Addressing the first reason demands substantial time and effort. It is a long-term initiative that I perceive as a significant challenge. Although I may not precisely know where to begin or how the journey will unfold, I am clear about my ultimate goal. Like all challenges, the best approach is to break them into smaller, manageable tasks, solve them individually, and then integrate the solutions. ",[47,331,332,333,23],{},"This is the essence of ",[14,334,337],{"href":335,"rel":336},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDivide-and-conquer_algorithm",[43],"divide and conquer",[10,339,340],{},"I firmly believe that the most effective way to learn is through practical projects. Not just a simple to-do list but something functional with a real purpose.",[10,342,343,344],{},"Meanwhile, I aim to enhance engagement with others. It's much more enjoyable to share and converse, to have interactions. For months, I've been contemplating additions to my personal website but struggled to find a practical, engaging, and useful idea. ",[47,345,346],{},"Until now.",[29,348,350],{"id":349},"taking-the-first-step","Taking the first step",[10,352,353,354,357,358,212,361],{},"Here we are. I decided to implement the feature to ",[20,355,356],{},"react to my articles using predefined emojis",", supported by an API developed with ",[14,359,44],{"href":41,"rel":360},[43],[47,362,363,364,23],{},"And the front-end continues to be powered by ",[14,365,272],{"href":366,"rel":367},"https:\u002F\u002Fvitepress.dev",[43],[84,369,87,370],{"autoPlay":86,"loop":86,"muted":86,"playsInline":86},[89,371],{"src":372,"type":92},"https:\u002F\u002Fimages.soubiran.dev\u002Fposts\u002Fenhancing-engagement-adding-reactions-to-my-articles\u002Fdemo.mp4",[10,374,375],{},"Initially, it might appear as a minor feature, and that's true; it isn't vast, yet for a first step, it suffices. In this process, I engaged with numerous different concepts:",[100,377,378,386,394,413,421,429,438,446],{},[103,379,380,385],{},[14,381,384],{"href":382,"rel":383},"https:\u002F\u002Flaravel.com\u002Fdocs\u002Fsocialite",[43],"Laravel Socialite"," for GitHub authentication.",[103,387,388,393],{},[14,389,392],{"href":390,"rel":391},"https:\u002F\u002Flaravel.com\u002Fdocs\u002Fsanctum",[43],"Laravel Sanctum"," for API authentication.",[103,395,396,401,402,401,407,412],{},[14,397,400],{"href":398,"rel":399},"https:\u002F\u002Flaravel.com\u002Fdocs\u002Fpint",[43],"Laravel Pint",", ",[14,403,406],{"href":404,"rel":405},"https:\u002F\u002Fphpstan.org\u002F",[43],"PHPStan",[14,408,411],{"href":409,"rel":410},"https:\u002F\u002Fgetrector.org\u002F",[43],"Rector"," for code quality assurance.",[103,414,415,420],{},[14,416,419],{"href":417,"rel":418},"https:\u002F\u002Fforge.laravel.com\u002F",[43],"Laravel Forge"," for deployment.",[103,422,423,428],{},[14,424,427],{"href":425,"rel":426},"https:\u002F\u002Fwww.hetzner.com\u002F",[43],"Hetzner"," for the server infrastructure.",[103,430,431,432,437],{},"Custom Command for database backups and ",[14,433,436],{"href":434,"rel":435},"https:\u002F\u002Fwww.cloudflare.com\u002Fdeveloper-platform\u002Fr2\u002F",[43],"R2"," for their storage.",[103,439,440,445],{},[14,441,444],{"href":442,"rel":443},"https:\u002F\u002Ffilamentphp.com\u002F",[43],"Filament"," for the dashboard management.",[103,447,448,449],{},"100% test coverage. ",[47,450,451,452,457],{},"Achievable with ease using Laravel and ",[14,453,456],{"href":454,"rel":455},"https:\u002F\u002Fpestphp.com\u002F",[43],"Pest",". 💫",[10,459,460,461],{},"And that's about it. ",[47,462,463],{},"Not too shabby for five days of work!",[10,465,466,467],{},"Reviewing all the source code of ",[468,469,472],"git-hub-link",{"repo":470,"name":471},"pinkary-project\u002Fpinkary.com","Pinkary Project"," greatly enhanced my understanding of these tools and the process of building a Laravel application.",[10,474,475],{},[47,476,477],{},"One of the significant aspects of this step is laying the groundwork for more features on my website and numerous articles to share what I've learned.",[10,479,480],{},"So, what are your thoughts? ⬇️",{"title":236,"searchDepth":237,"depth":237,"links":482},[483,484,485,486],{"id":263,"depth":237,"text":264},{"id":282,"depth":237,"text":283},{"id":325,"depth":237,"text":326},{"id":349,"depth":237,"text":350},"2024-10-01","The initial yet crucial phase of a significant project that will accompany me in the upcoming months. Let's start small by adding reactions to my articles.",{},"\u002Fposts\u002Fenhancing-engagement-adding-reactions-to-my-articles","---\ncontentId: 0d4cb8be-230e-444e-9419-fce9adf0ef6b\ntitle: \"Enhancing Engagement: Adding Reactions to My Articles\"\ndescription: The initial yet crucial phase of a significant project that will accompany me in the upcoming months. Let's start small by adding reactions to my articles.\ndate: 2024-10-01\n---\n\nHey there! I hope you're doing well. I'm excited to share with you the beginning of a significant project that will accompany me over the coming months.\n\n## Introduction\n\nIn March 2024, I announced the overhaul of my personal website for the fourth time, this time using [VitePress](https:\u002F\u002Fvitepress.dev\u002F). This decision was guided by the desire for a streamlined yet robust tool that allows me to write easily and rapidly while maintaining control over both design and functionality. _VitePress is truly exceptional in this regard._\n\n\u003CCalloutReadMore id=\"674a3932-aaba-445c-82bb-0896ce3a8e7e\"\u002F>\n\n## Exploring new horizons\n\nIn June 2024, I embarked on learning [Laravel](https:\u002F\u002Flaravel.com) for two primary reasons.\n\nFirstly, I aimed to broaden my expertise and skills in web development. I want to create applications from the ground up, turning ideas into reality without heavily relying on external services. _And I'm already working on my first SaaS 🤫._\n\nSecondly, I sought more flexibility in my career options. Since the outset of my professional journey, I have predominantly used [Angular](https:\u002F\u002Fangular.dev\u002F) as my main tool. I am eager to explore new avenues as Angular no longer resonates with me.\n\n_I considered [Rails](https:\u002F\u002Frubyonrails.org\u002F), but once you've experienced the Laravel Documentation and [Laracasts](https:\u002F\u002Flaracasts.com\u002Freferral\u002FBarbapapazes), the choice becomes apparent._\n\n## Progressing incrementally\n\nAddressing the first reason demands substantial time and effort. It is a long-term initiative that I perceive as a significant challenge. Although I may not precisely know where to begin or how the journey will unfold, I am clear about my ultimate goal. Like all challenges, the best approach is to break them into smaller, manageable tasks, solve them individually, and then integrate the solutions. _This is the essence of [divide and conquer](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDivide-and-conquer_algorithm)._\n\nI firmly believe that the most effective way to learn is through practical projects. Not just a simple to-do list but something functional with a real purpose.\n\nMeanwhile, I aim to enhance engagement with others. It's much more enjoyable to share and converse, to have interactions. For months, I've been contemplating additions to my personal website but struggled to find a practical, engaging, and useful idea. _Until now._\n\n## Taking the first step\n\nHere we are. I decided to implement the feature to **react to my articles using predefined emojis**, supported by an API developed with [Laravel](https:\u002F\u002Flaravel.com). _And the front-end continues to be powered by [VitePress](https:\u002F\u002Fvitepress.dev)._\n\n\u003Cvideo autoplay loop muted playsinline>\n  \u003Csource src=\"https:\u002F\u002Fimages.soubiran.dev\u002Fposts\u002Fenhancing-engagement-adding-reactions-to-my-articles\u002Fdemo.mp4\" type=\"video\u002Fmp4\">\n\u003C\u002Fvideo>\n\nInitially, it might appear as a minor feature, and that's true; it isn't vast, yet for a first step, it suffices. In this process, I engaged with numerous different concepts:\n\n- [Laravel Socialite](https:\u002F\u002Flaravel.com\u002Fdocs\u002Fsocialite) for GitHub authentication.\n- [Laravel Sanctum](https:\u002F\u002Flaravel.com\u002Fdocs\u002Fsanctum) for API authentication.\n- [Laravel Pint](https:\u002F\u002Flaravel.com\u002Fdocs\u002Fpint), [PHPStan](https:\u002F\u002Fphpstan.org\u002F), [Rector](https:\u002F\u002Fgetrector.org\u002F) for code quality assurance.\n- [Laravel Forge](https:\u002F\u002Fforge.laravel.com\u002F) for deployment.\n- [Hetzner](https:\u002F\u002Fwww.hetzner.com\u002F) for the server infrastructure.\n- Custom Command for database backups and [R2](https:\u002F\u002Fwww.cloudflare.com\u002Fdeveloper-platform\u002Fr2\u002F) for their storage.\n- [Filament](https:\u002F\u002Ffilamentphp.com\u002F) for the dashboard management.\n- 100% test coverage. _Achievable with ease using Laravel and [Pest](https:\u002F\u002Fpestphp.com\u002F). 💫_\n\nAnd that's about it. _Not too shabby for five days of work!_\n\nReviewing all the source code of \u003CGitHubLink repo=\"pinkary-project\u002Fpinkary.com\" name=\"Pinkary Project\" \u002F> greatly enhanced my understanding of these tools and the process of building a Laravel application.\n\n_One of the significant aspects of this step is laying the groundwork for more features on my website and numerous articles to share what I've learned._\n\nSo, what are your thoughts? ⬇️\n",{"title":255,"description":488},{"loc":490},"posts\u002Fenhancing-engagement-adding-reactions-to-my-articles","LD0HcKhXb60MUxL3IW43GYJzYnvIjjtinUYforzYsiA",1790086901444]