Find our project hosted at https://1newsletter.tech to give it a shot!
Let's face it - Keeping your inbox clean is not an easy task. And all those newsletters and promotional emails you get aren't helping either. Of course, you don't want to unsubscribe, since you do want to eventually read them (if you get time), but cluttering your inbox doesn't seem like the solution. That's why we built 1Newsletter, a little web application that helps you keep your inbox tidy!
🏡 What it does
Once you sign up on the website, you get an email that looks like firstname.lastname@example.org. Now, subscribe to the newsletters/marketing emails you'd like to read using this email. Our application then receives, processes and stores these emails, and then sends you a single email every week on Sunday with the links to all the emails that have been received.
🔨 How we built it
For both receiving and sending emails, we used Twilio's SendGrid API. We use SendGrid's Inbound parse to send emails to our server, which is then processed by our backend server which was written using NodeJS and the Fastify web framework. For storage, we use the SQLite3 database for both authentication and email storage. On the front end, we used React, for lightning fast pages, with a tinge of CSS to make everything fancy. For the production deployment, we used the Caddy web server deployed on a Google Cloud instance.
🥲 Challenges we ran into
- At the very last moment, we had trouble with the caddy web server. For local development, we were using the dev server with the
proxyoption, but this was in no way suitable for production use. The issue was that since React is a SPA framework, we needed to add additional route handling to the Caddyfile, but this broke the back-end routes. We finally managed to figure it out though xD.
- We ran into an issue when updating the MX records for SendGrid. Fortunately, Twilio's great documentation was able to help us with this.
🏆 Accomplishments that we're proud of
- We're pretty proud of how much we managed to accomplish this weekend. Receiving emails using SendGrid's Inbound Parse was particularly satisfying (thanks ngrok!)
- The website design turned out to be simplistic but fancy at the same time. Specially like our choice of the Raleway font.
📖 What we learned
- We learnt on how to use Twilio's SendGrid email API to send emails from a custom domain as well as parse emails into their respective components. We also learnt on how to integrate SQLite databases with React.
- Learned tons of how to configure a production Caddy server. That'll be a good tool in the toolbelt for next time.
🚀 What's next for 1Newsletter
At the moment, the email that's sent doesn't look too fancy. We have to figure out how to use external fonts, that's a definite first. Secondly, we're planning better session handling on the website. We should probably also explain what the site does on the homepage haha..