Giter Club home page Giter Club logo

snowsend's Introduction

snowSend 📯

snowSend is an open-source prototype that empowers you to dispatch custom-styled emails directly from Snowflake. React to real-time triggers and provide a unique experience with emails stylized using React-Email components.

pika-1691483278303-1x

⚙️ Tech Stack

  • Snowflake - API Integration, External Functions
  • AWS - API Gateway, Lambda
  • Infrastructure as Code (IAC) - Pulumi
  • Email - Resend Labs

✨ Features

  • Custom Styled Emails: Generate beautiful emails with the help of React-Email components and Tailwind CSS.
  • Real-time Triggers: Deliver emails in response to real-time events from your Snowflake data warehouse.
  • Rapid Setup: Get up and running in minutes. Complete infrastructure setup using Pulumi on both AWS & Snowflake.
  • Data Privacy: Your data never leaves Snowflake, ensuring optimal privacy.
  • Integrated with Resend Labs: Provides seamless integration with Resend Labs as an email service provider.

⨠ Installation

Follow these steps to get snowSend up and running in your environment.

  1. Clone the repository

    git clone https://github.com/kaarthik108/snowSend.git
  2. Set up a Resend account

    Sign up on Resend and retrieve the API Key:

    cd pulumi
    npm i
    pulumi config set RESEND_API_KEY your_resend_api_key --secret
  3. Pulumi setup

    • Navigate to the pulumi directory, edit Pulumi.prod.yaml add the config values, use the below command to set for all other configs
    pulumi config set snowflake:password your_password --secret
    • Install npm packages and check the email components:
    cd pulumi/app
    npm install
    npm run dev
    • Install packages and provision all resources needed in AWS and Snowflake:
    cd ..
    npm install
    pulumi up
    • Configure API_AWS_EXTERNAL_ID and API_AWS_IAM_USER_ARN values (you will get these values once you run pulumi up from previous step as stack output):
    pulumi config set API_AWS_EXTERNAL_ID $(pulumi stack output API_AWS_EXTERNAL_ID) --secret
    pulumi config set API_AWS_IAM_USER_ARN $(pulumi stack output API_AWS_IAM_USER_ARN) --secret
    pulumi up
  4. Deploy translator function (manual step for now)

    This step is necessary due to an issue with snowflake when deploying the request translator UDF, as pulumi deploys functions with quotes eg: "snowsend-1234", but when you set that as REQUEST_TRANSLATOR in external function they don't register as quotes, which makes the external function to not able to find the UDF. So we do this step manually for now.

    cd ..
    pip install -r requirements.txt
    python test.py

Remember to replace the values in test.py with your function names (EXTERNAL_FUNC and TRANSLATOR_UDF).

Additionally, you can host your images either in s3 or snowflake. set pulumi config set url https://s3:xyz/s3.amazonaws.com if you have images in s3

🤝 Contributing

Your contributions are always welcome! Here's how:

snowsend's People

Contributors

kaarthik108 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.