Git Product home page Git Product logo

remindmail's Introduction

Disclaimer: This is a project for a college-level software development class, and is therefore not an actual software. This is primarily to demonstrate understanding, and for practice.

At this point, the duration of the project has run its course, and as a result this repository is to be archived to preserve the end-result.

Participants

RemindMail

RemindMail (placeholder name; “the software”) is defined as an email-based reminder system, in terms of a web service. The premise is to act as a component of {SOME PROJECT*}, so the interface may not necessarily be user-friendly, since it’s meant for internal use.

The software is split into further components, with the primary two being the setup of the web service interface, and the ability to send emails. Further features have to do with the internal functionality, or alternative access.

The required components (detailed below) are as follows:

  • Allow emails to be sent recurrently, at set intervals (every day, every week, etc);
  • Allow a user to “opt-out”, which will prevent the software from sending an email to an opted-out user, in the form of an Access Denied code being sent to the user (403);
  • Allow specific contextual information about the email (“metadata”) to be dynamically added through special formatting. The currently expected syntax would be <meta: $metadata>; and
  • Allow a user to ‘acknowledge’ an email, such to demonstrate that the reminded task has been fulfilled (this could be useful in terms of the metadata).

There are additional features that are going to be mentioned, that are part of the suggested scope, but will only be included if ahead of schedule:

  • Add AI-integration to allow “natural language processing”, which will allow users to speak more naturally, such as “remind me to do the laundry every week on Saturday morning”;
  • Add SMS compatibility, which will allow the equivalent reminders, but in form of text messages; and
  • Allow sending POST requests to the web service form with sending an email, as an alternative to raw POST requests.

The scope is considered incomplete; additional features may be added to the scope if additional features are required as per the outline.

remindmail's People

Contributors

trystyncote avatar

remindmail's Issues

Web Service Documentation

Set up and write the documentation for the web service interface.

Analysis & Design

  • 1. Determine which library to use for the documentation.

Coding (... enacting?)

  • 1. Set up the library for the documentation.
  • 2. Write the documentation.

Testing

  • 1. Test to make sure the configuration of the documentation is correct.

Assigned to: Liji Philip.

Metadata Formatting

Allow custom syntax in body text to have the metadata written in it.

Analysis & Design

  • 1. Define syntax to have metadata information.

Coding

  • 1. Allow the software to notice metadata syntax and update the reminder to include the information.

Testing

  • 1. Test to ensure that the syntax is parsed correctly.

No assignee at the start of the project; to be completed by whoever is available after previous tasks are completed.

Web Service Interface

Add an interface to interact with the web service.

Analysis & Design

  • 1. Design the interface of the web service.

Coding

  • 1. Create the interface.

Testing

  • 1. Test to ensure the interface works properly.
  • 2. Test to ensure the style of the interface is correct.

Assigned to: Liji Philip.

Web Service Functionality

Add the functionality for the web service access to the software.

Analysis & Design

  • 1. Determine the request format.

Coding

  • 1. Add interface to receive POST requests.
  • 2. Define parsing of received commands into variables for use within the software.

Testing

  • 1. Test for the proper parsing of the POST requests.

Assigned to: Liji Philip.

Email Recurrence

Add the ability to send emails at set intervals (hourly, daily, weekly, monthly).

Analysis & Design

  • 1. Determine how to schedule recurring reminders, and how to separate it from one-time reminders.

Coding

  • 1. Add functionality.

Testing

  • 1. Test whether recurrence works properly.
  • 2. Test to ensure that non-recurring reminders still don’t recur.

Assigned to: Trystyn Coté.

Email Acknowledgement

Allow a receiving user to reply to an email to “acknowledge” it, to demonstrate completion.

Analysis & Design

  • 1. Define how a user “acknowledges” a reminder (what to say, etc).

Coding

  • 1. Allow the software to check its email.
  • 2. Allow the software to parse response emails and ensure acknowledgement.

Testing

  • 1. Test to ensure if acknowledgement happens correctly.

No assignee at the start of the project; to be completed by whoever is available after previous tasks are completed.

Email Sending

Add the ability for the software to send emails to a user.

Analysis & Design

  • 1. Determine which libraries to use, or which functionality to use.

Coding

  • 1. Add the ability for an email to be sent to a user.
  • 2. Update the sending of an email to be a provided string.

Testing

  • 1. Test for whether an email is successfully sent.
  • 2. Test for whether the body of the email matches when changed.

Assigned to: Trystyn Coté.

Opt-Out Compatibility

Add the ability for a user to “opt-out”.

Analysis & Design

  • 1. Define method to opt-out.
  • 2. Define method to track opted-out users.

Coding

  • 1. Add functionality to opt-out.

Testing

  • 1. Test for whether a 403 error is received if a user is opted-out.

Assigned to: Trystyn Coté.

Email Scheduling

Add the ability for the software to send emails at allotted times.

Analysis & Design

  • 1. Determine what methodology to “wait” to send emails.

Coding

  • 1. Add the ability to “wait” to send emails.
  • 2. Add the ability to schedule work.

Testing

  • 1. Test for the timing that is expected.

Assigned to: Trystyn Coté.

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.