Giter VIP home page Giter VIP logo

bottlenose-mail-client's Introduction

Bottlenose Mail

Join the chat at https://gitter.im/bottlenose-mail/community

A disposable email service.

This project was bootstrapped with Create React App.

Contributors

Available Scripts

In the project directory, you can run:

yarn start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

yarn test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

yarn build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.

yarn eject

Note: this is a one-way operation. Once you eject, you can’t go back!

If you aren’t satisfied with the build tool and configuration choices, you can eject at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except eject will still work, but they will point to the copied scripts so you can tweak them. At this point you’re on your own.

You don’t have to ever use eject. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.

Learn More

You can learn more in the Create React App documentation.

To learn React, check out the React documentation.

Code Splitting

This section has moved here: https://facebook.github.io/create-react-app/docs/code-splitting

Analyzing the Bundle Size

This section has moved here: https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size

Making a Progressive Web App

This section has moved here: https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app

Advanced Configuration

This section has moved here: https://facebook.github.io/create-react-app/docs/advanced-configuration

Deployment

This section has moved here: https://facebook.github.io/create-react-app/docs/deployment

yarn build fails to minify

This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify

bottlenose-mail-client's People

Contributors

frankolson avatar gitter-badger avatar nickelliston avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

bottlenose-mail-client's Issues

Add support for email attachments

Is your feature request related to a problem? Please describe.
People often send attachments along with their emails. We need to support viewing those attachments

Describe the solution you'd like
When receiving emails, store attachments for viewing with the email. These should be destroyed with the emails when performing the expired inbox cleanup.

Build Inbox Page

inbox

  • Use the following headers
    • Sender
    • Subject
    • Actions

Extra details

// https://api.bottlenosemail.com/inbox/:inboxId
{
  "inboxId": "string",
  "emailAddress": "string",
  "createdAt": 6546513521321321
}
// https://api.bottlenosemail.com/emails?inboxId=:inboxId
[
  {
    "emailId": "d843bdd6-7c86-43e0-a3e4-0405d08c0f24",
    "emailAddress": "[email protected]",
    "date": "1599696547782",
    "from": "Will <[email protected]>",
    "subject": "Some subject"
  },
  // ...
]

Check email address lambda

Is your feature request related to a problem? Please describe.
We should not be storing or processing emails for emails that no longer, or never did, exist. Eventually or SES service will need to define a rule for accepting emails. This ticket is for creating the lambda function that that rule will use.

Describe the solution you'd like
A lambda function that:

  • takes a string (the email address being checked) as an input and checks whether or not there is a matching unexpired inbox
  • returns a boolean value base on that check
    • true ~> matching inbox
    • false ~> no matching inbox, or the matching inbox is expired

Show Email API endpoint

The front-end client needs a API endpoint for showing the content of specific email within an inbox.

Describe the solution you'd like

  • inbox is determined by an inbox ID in the path parameters.
  • email is determined by an email ID in the path parameters.
  • if the email or inbox cannot be found, a 404 error is returned
  • an email needs the following attributes:
    • id~ string
    • inbox_id~ string
    • received_at ~ DateTime string in ISO 8601 format
    • from~ string
    • subject~ string
    • body_html~ string
    • body_plain~ string
    • attachments ~ Array of objects

Receive and store emails

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like

  • Utilize SES to receive emails
  • emails should only be processed if there is a matching and unexpired inbox in the DynamoDB inboxes table.
  • emails should be stored using AWS services
    • I am unsure on the most effective data store for this. S3 and DynamoDB both seem like viable options. More research should be done and reported here on the pros and cons of each.

Captcha integration

Is your feature request related to a problem? Please describe.
Humans should be the only ones allowed to create inboxes. If some bot wen to the website and started creating inboxes like crazy we would end up paying A LOT to AWS for storage and lambda usage.

Describe the solution you'd like
Integrate Google's reCaptcha service with the creation of new inboxes.
https://www.google.com/recaptcha/

Additional context
This will require a working front-end client for BottlenoseMail.

Expired inbox cleanup

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like

  • lambda function that deletes all the stored emails of expired inboxes
  • expired inboxes are identified by the expires_at timestamp on each inbox
  • inboxes are kept for future metrics.
  • Daily CloudWatch task is setup to run the lambda function

Show Inbox API endpoint

The front-end client needs a API endpoint for showing the content of existing inboxes.

Describe the solution you'd like

  • inbox is determined by an inbox ID in the path parameters.
  • if an inbox cannot be found, a 404 error is returned

Create Inbox API endpoint

The front-end client needs a API endpoint for creating new inboxes.

Describe the solution you'd like

  • takes no arguments
  • creates a new inbox
  • inboxes should have the following attributes:
    • id ~ string
    • email_address~ string
    • created_at ~ DateTime string in ISO 8601 format
    • expired_at ~ DateTime string in ISO 8601 format
    • emails ~ Array
  • the emails attribute should be initialized as an empty array

Complete Header

  • Bootstrap Jumbotron
    • Add Title
    • Add Description
    • Button for creating a new inbox (does nothing for now)

CI/CD Pipeline

Is your feature request related to a problem? Please describe.
We need a way to test and deploy our code automatically. Otherwise someone will have to spend a lot of time manually deploying and managing the infrastructure. Infrastructure as Code should be our objective here.

Describe the solution you'd like

  • Changes to the master branch of this should trigger the automated test suite
  • If the automated test suite passes without any failures, the code should automatically be deployed to AWS.

Setup API Gateway Websockets for real-time inbox updates.

Is your feature request related to a problem? Please describe.
Currently, the only way for the front-end client to check if there are new emails is to constantly poll the back-end with REST API calls. If someone stays on the inbox page long, this could result in A LOT of API calls and lambda usage.

Describe the solution you'd like
Use AWS API Gateway Websockets for real-time inbox updates. This ticket only requires the backend setup to be implemented. Another ticket will be created in order to handle the front-end client consumption.

Build Show Email Page

show_email

  • Navbar of card with "Back to Inbox" button
  • Email header section
    • Sender
    • Date
    • Subject
  • HTML body section

Extra details

// https://api.bottlenosemail.com/emails/:emailId
{
  "emailId": "d843bdd6-7c86-43e0-a3e4-0405d08c0f24",
  "emailAddress": "[email protected]",
  "inboxId": "d843bdd6-7c86-43e0-a3e4-asdfasdfasdfw", // (WIP)
  "date": "1599696547782",
  "from": "Will <[email protected]>",
  "subject": "Some subject",
  "bodyHtml": "<p>Hi!</p>",
  "bodyText": "Hi!",
}

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.