- Notifications
You must be signed in to change notification settings - Fork19
The open source Mailchimp alternative.
License
bespoke-surf/bespoke
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Combining best parts of Mailchimp, Kalviyo's automation, Substack's newsletter and Typeform for surveys.
Bespoke's mission is to gather information about the customer and do personalized targetting.
We gather customer data through various means, including API's, behavioral intent, surveys and integrations with platforms for data ingestion. Recommendations are delivered via Automations and Campaigns.
- Automations
- Newsletter
- Sign-up Forms
- Design Emails
- Lists
- Segmentation
- Campaigns
- Analytics Dashboard
- Transactional Emails & Webhooks
- Surveys
- Behavioral Intent API
- API Reference for Bespoke REST API
- Details about Bespoke'sSuppression process
- SuggestFeature and Integration Requests.
- Open aGitHub issue toreport a bug.
Experience seamless integration with Bespoke's OpenAPI and Postman. Explore our latest OpenAPI specification.
For quick and convenient interaction with our APIs, import theOpenAPI spec into your preferred API tool, such as Postman. This will enable you to immediately begin working with our new APIs.
To further simplify your workflow, we have created a dedicatedPostman Workspace. By visiting our Postman Workspace, you will have access to our latest collection of requests, along with the comprehensive API definitions.
Clone this repository
Initial setup
~/bespoke$: yarn setup
Run both
web
andserver
using turbo repo in parallel mode:~/bespoke$: yarn dev
ℹ️ we recommed not running it parallel.
~/bespoke/apps/web$: yarn dev
~/bespoke/packages/server$: yarn dev
Do not forget to fill the env variables in
web
andserver
folder
This starts your app in development mode.
Bespoke comes with a GitHub Action that handles automatically deploying your app to production environments.
Prior to your first deployment, you'll need to do a few things:
Install, sign up and login toFly
Create two apps on Fly, one for web and one for server:
fly apps create [your-app-name]-webfly apps create [your-app-name]-server
Add a
FLY_API_TOKEN
to your GitHub repo. To do this, go to your user settings on Fly and create a newtoken, then add it toyour repo secrets with the nameFLY_API_TOKEN
.Dealing with Bespoke Web
Add the following secrets to your fly app secrets, to do this you can run the following commands:
fly secretsset FRONTEND_HOST= BACKEND_HOST= FLY_BACKEND_HOST= SENTRY_DSN= POSTHOG_TOKEN= POSTHOG_ORGANISATION= POSTHOG_PROJECT_ID= CLOUDINARY_UPLOAD_IMAGE_URL= CLOUDINARY_PRESET= UNLAYER_PROJECT_ID= OPEN_SOURCE=true --app [your-app-name]-web
Add
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
,AWS_S3_BUCKET_REGION
,AWS_S3_BUCKET
,CLOUDFRONT
,SENTRY_AUTH_TOKEN
,SENTRY_ORG
,SENTRY_PROJECT
toyour repo secrets in Gihub. This is used during docker container build.For the initial
fly deploy
you can use:~/bespoke$: yarn deploy:web
Dealing with Bespoke Server
Add to your fly app secrets, to do this you can run the following commands:
fly secretsset HOST= FRONTEND_HOST= FRONTEND_HOST_PROTOCOL= SESSION_SECRET=$(openssl rand -hex 32) AWS_ACCESS_KEY_ID= AWS_SECRET_ACCESS_KEY= SES_REGION= SES_SENDING_RATE= REDIS_PORT= REDIS_HOST= REDIS_PASSWORD= UNLAYER_SECRET= OPEN_SOURCE=true EMAIL_DOMAIN= SUPPORT_EMAIL= SENTRY_DSN= POSTHOG_KEY= --app [your-app-name]-server
Create a FlyPostgres Cluster
Attach Postgres Cluster to Bespoke Server
We recommend
not using
Redis by Upstash in Fly.Before deploying please read AWS SES & SNS setup
For the initial
fly deploy
you can use:~/bespoke$: yarn deploy:server
To receive Hard bounce, Open, Delivery events etc, let's setup AWS SES with AWS SNS
We need to create a new subscription and confirm the https endpoint.
Create a new Subscription
Add Topic name and select
HTTPS
protocolAdd your endpoint i.e
[server-hostname]/user/sns-webhook
console.log()
the data in yoursns-webhook
under user controllerBefore deploying add and confirm a localhost endpoint
Deploy the server and confirm your production endpoint
We need to create a new configuration set and add the SNS subscription as the destination for events.
Create a new configuration set with default values
Add a new Event Destination
Select all event types except
Redering failures
& also select open and click trackingUnder destination option, select
Amazon SNS
and select the SNS topic you created
For theSES_SENDING_RATE
env variable, you can get the value from the SES dashboard.
To get unlimited contacts and to send emails with no restriction and to create unlimited signup-forms, please setOPEN_SOURCE=true
Let's setupUnlayer for Signup-Forms and Email templates to work
Login or Signup toUnlayer embed
Create a project and get the project id from the url
Use project id for
UNLAYER_PROJECT_ID
env variabe for bespoke webGo to the
Security
tab and enforce identity verification.Copy secret and add to
UNLAYER_SECRET
env varaible for bespoke server
Now that everything is set up you can commit and push your changes to your repo. Every commit to your main branch will trigger a deployment to your production environment.
- Create a new branch
git checkout -b my-new-branch
- Commit your changes
git commit -a -m 'Description of the changes'
- There are many ways of doing this and this is just a suggestion
- Push your branch to GitHub
git push origin my-new-branch
- Go to the repository page in GitHub and click on "Compare & pull request"
Bespoke engineers are checking this regularly.
Bespoke isAGPL-3.0 license
About
The open source Mailchimp alternative.