<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Brevo on Benedykt Huszcza | Blog</title><link>https://blog.huszcza.dev/tags/brevo/</link><description>Recent content in Brevo on Benedykt Huszcza | Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 23 Feb 2025 17:00:00 +0000</lastBuildDate><atom:link href="https://blog.huszcza.dev/tags/brevo/index.xml" rel="self" type="application/rss+xml"/><item><title>SpeedDatingMatcher – Event Management with Django and Next.js</title><link>https://blog.huszcza.dev/p/speeddating-matcher/</link><pubDate>Sun, 23 Feb 2025 17:00:00 +0000</pubDate><guid>https://blog.huszcza.dev/p/speeddating-matcher/</guid><description>&lt;img src="https://blog.huszcza.dev/p/speeddating-matcher/cover.png" alt="Featured image of post SpeedDatingMatcher – Event Management with Django and Next.js" />&lt;h2 id="where-did-the-idea-come-from">Where Did the Idea Come From?
&lt;/h2>&lt;p>I am lucky to have my sister Róża, who studies at the Medical University of Białystok. Moreover, not only does she study there, but she also runs the university magazine – &lt;a class="link" href="https://www.instagram.com/mlodymedyk_/" target="_blank" rel="noopener"
>Młody Medyk&lt;/a>. For about two years, the student organization under Róża&amp;rsquo;s leadership has been organizing speed dating events. And this is exactly where the problem arose, which the future Doctor brought to me. As a mature developer, I decided to roll up my sleeves and solve it.&lt;/p>
&lt;h2 id="what-is-speeddatingmatcher">What is SpeedDatingMatcher?
&lt;/h2>&lt;p>&lt;strong>SpeedDatingMatcher&lt;/strong> is an event management system specifically designed for adding participants, their preferences (willingness to contact after the event), and sending emails with contact information to selected people. The application handles email communication through integration with &lt;strong>Brevo&lt;/strong>. The first edition was deployed on &lt;strong>Microsoft Azure&lt;/strong>, but honestly, I wasn&amp;rsquo;t fully aware of all the SSR properties, and the whole endeavor ended with considerable frustration with Azure, although I eventually managed to deploy the system on it.&lt;/p>
&lt;p>In this year&amp;rsquo;s edition of the application (2025), I opted for a more civilized approach: &lt;strong>VPS&lt;/strong> with &lt;strong>Docker&lt;/strong> and &lt;strong>nginx&lt;/strong>. I also had access to a &lt;strong>Free Tier AWS EC2&lt;/strong> server, but since I was planning to create this blog in the near future, I decided to purchase server access right away.&lt;/p>
&lt;h2 id="features">Features
&lt;/h2>&lt;p>The main task of the application was not only sending emails but also &lt;strong>automatically matching people&lt;/strong> participating in the event. That is:
if a person with number 3 wanted to contact numbers 2 and 1, then before sending the email, I needed to check if both person 2 and 1 also wanted to contact number 3. Only if there is a &lt;strong>mutual preference&lt;/strong>, the email is sent. This situation is illustrated by the following graphic:&lt;/p>
&lt;p>&lt;img src="https://blog.huszcza.dev/p/speeddating-matcher/persons_preferences.png"
width="365"
height="262"
srcset="https://blog.huszcza.dev/p/speeddating-matcher/persons_preferences_hu54643acddc985cee68ba355411069e18_10118_480x0_resize_box_3.png 480w, https://blog.huszcza.dev/p/speeddating-matcher/persons_preferences_hu54643acddc985cee68ba355411069e18_10118_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Graph showing preference matching"
class="gallery-image"
data-flex-grow="139"
data-flex-basis="334px"
>&lt;/p>
&lt;p>It is clearly visible that the email is sent only when a &lt;strong>cycle of length 2&lt;/strong> is found in the graph.&lt;/p>
&lt;p>Ultimately, the application enables:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Managing speed dating events&lt;/strong> – Comprehensive management of participants and meetings.&lt;/li>
&lt;li>&lt;strong>Email validation&lt;/strong> – Ensuring that all provided email addresses are correct.&lt;/li>
&lt;li>&lt;strong>Integration with Brevo&lt;/strong> – Automatic sending of notifications and reminders to participants.&lt;/li>
&lt;/ul>
&lt;p>Additionally, thanks to &lt;strong>Django&lt;/strong>, it&amp;rsquo;s easy to create and manage users.&lt;/p>
&lt;h2 id="tech-stack">Tech Stack
&lt;/h2>&lt;ul>
&lt;li>&lt;strong>Django&lt;/strong> – Backend and database management.&lt;/li>
&lt;li>&lt;strong>Next.js&lt;/strong> – Fast frontend with server-side rendering capabilities.&lt;/li>
&lt;li>&lt;strong>Brevo&lt;/strong> – Integration for sending emails.&lt;/li>
&lt;li>&lt;strong>BeautifulSoup4&lt;/strong> – Dynamic modification of HTML email templates.&lt;/li>
&lt;li>&lt;strong>Microsoft Azure&lt;/strong> – Cloud hosting for the first version.&lt;/li>
&lt;li>&lt;strong>Docker&lt;/strong> – Containerization of solutions.&lt;/li>
&lt;li>&lt;strong>Nginx&lt;/strong> – Reverse proxy on the VPS server.&lt;/li>
&lt;/ul>
&lt;h2 id="summary">Summary
&lt;/h2>&lt;p>Honestly, this was my &lt;strong>first serious project&lt;/strong> realized outside of work. I would be lying if I said that planning the architecture, selecting technologies, and writing the solution didn&amp;rsquo;t give me immense joy and didn&amp;rsquo;t awaken my developer&amp;rsquo;s soul.&lt;/p>
&lt;p>Thanks to this project, I had the opportunity to &lt;strong>test my ideas&lt;/strong> and also &lt;strong>get familiar with SSR, Django, and Azure&lt;/strong>.&lt;/p>
&lt;p>I co-created the project with &lt;a class="link" href="https://www.linkedin.com/in/maciej-korsakowski-a65b0226a/" target="_blank" rel="noopener"
>Maciek&lt;/a>, which provided an opportunity to &lt;strong>manage tasks&lt;/strong>, divide them, and conduct &lt;strong>mutual Code Review&lt;/strong>.&lt;/p>
&lt;p>Want to learn more? Check out the &lt;strong>repository on &lt;a class="link" href="https://github.com/benhus8/SpeedDatingMatcher" target="_blank" rel="noopener"
>GitHub&lt;/a>&lt;/strong>.&lt;/p></description></item></channel></rss>