Challenge Overview
We have updated requirements in this thread post. Please make sure to read it carefully.
Project Overview
This project, the CSFV Community Gaming website project will provide the web site infrastructure and integration of the games (called http://www.verigames.com). This will be a web site that is available on the Internet, and also will be delivered in a form where the server and the games can be installed and used behind a firewall.
We are planning to send newsletters campaign monthly, we are going to use MailChimp for that purpose, and this challenge is to implement the outlined requirements for integration with MailChimp.
Challenge Requirements
- Create a cron job that run periodically to syncing MailChimp compaign subscribers list with current CSFV backend :
- Cron job should be added to csfv_cms_module
- Add new item under "Others" tab in csfv_cms_module, call it "MailChimp Management" link, clicking on this link it opens up a page that contains single button "Sync Subscribers", this button force running the sync between MailChimp and CSFV backend.
- Use MailChimp api version 2.0 to implement the requirement, it's up to you to use any open source node module available or build a custom node.js class for this.
- Syncing involves the following steps :
- Retrieve all subscribers of the configured list (it is preferred that the list ID is dyanamically configured in csfv_cms_module as a cms post with metadata)
- From the retrieved subscribers list from configured list, if any subscriber's status is soft unsubscribe and that subscriber's email exist in verigames DB then do hard unsubscribe from MailChimp and set "NEWSLETTER" flag to false.
- Retrieve current CSFV users who have NEWSLETTER notification flag enabled, filter the list to remove already subscribed users from the retrieved list (first step above)
- Send new batch of subscribers retrieved in the first step of this flow.
- You need to take into account that there will be some cases where the configured list is empty (has no subscribers).
- Add a checkbox to the registration form of csfv_frontend_module to asking whether or not users want to opt-in/out of receving verigames emails newsletters. This will update user preferences in backend to disable this email notificaiton. The text can be "I want to receive verigames.com newsletter".
- There are two ways for a user to unsubscribe from the newsletter (both are done in csfv_frontend_module):
- From user private profile > Email Notifications > Disable "NEWSLETTER" option.
- When receiving the newsletter email, there will be a link that redirects the user the website to unsubscribe the user (http://www.verigames.com/newsletter/unsubscribe)
- If user used any of these methods to unsubscribe, MailChimp API unsubscribe method must be called to remove that subscriber (it should be hard delete set delete flag when executing the api), and if the email belongs to existing verigames user then the "NEWSLETTER" email notification flag should be disabled in database.
- There are two ways for user to subscribe to the newsletter :
- From user private profile > email Notifications > Enable "NEWSLETTER" option.
- Newsletter form (this is new requirement in this challenge).
- If user used any of these methods to subscribe, MailChimp API subscribe method must be called to add that subscriber. If the email belongs to existing verigames user then the "NEWSLETTER" email notification flag should be enabled in database.
- We want to leverage the webhooks in MailChimp whenever a user unsubscribed or an address was cleaned :
- Add new api method to csfv_frontend_module to handle the web hook, in both cases, if user exists in CSFV, then his/her "NEWSLETTER" email notification preference must be disabled.
- Configuration/Logging/Error handling must be used properly in all the new code or updated code in this challenge.
- Subscribe form :
- UI Prototype provided in challenge forum
- Implement it for all the 6 websites (the main site exist in csfv_frontend_module, and minisites exist in csfv_minisite_frontend_module under branches minisite1, minisite2, minisite3, minisite4, and minisite5)
- Implement new controller in backend to handle subscriptions call. The controller will be placed in csfv_frontend_module
- When user click subscribe a call to the controller a new page should open in new window to execute the request and on successful subscriptions, it should show a message similar to registration successful message page ("You have succssffully subscribed to Verigames newsletter!").
- In case the "NEWSLETTER" DataNotification entry does not exist in DataNotification collection in db then use the following to insert it :
{ "eventName" : "Newsletter", "notificationDataType" : "NEWSLETTER", "emailFormat" : "HTML", "deleted" : false, "sendNotification" : true }
Github Repository
We have the source code in private gihub repository http://www.github.com/topcoderinc if you don't have access please post in challenge forum to request access.
csfv_cms_module : http://github.com/topcoderinc/csfv_cms_module
csfv_frontend_module : http://github.com/topcoderinc/csfv_frontend_module
csfv_minisite_frontend_module : http://github.com/topcoderinc/csfv_minisite_frontend_module
Follow readme file in each repoistory to deploy the requirements above.
Documents Provided
Attached subscribe form ui prototype in challenge forums.
Support
Standard 30 days.
Final Submission Guidelines
We have updated requirements in this thread post. Please make sure to read it carefully.
Submission Deliverables
- New/Changed files of each module.
- Updated readme for each module.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.