You are on page 1of 11

Reflective report

1. Introduction

This project's main aim is to develop a mobile application that capable of providing
promotional offers which are spread in the physical world as well as online. The application
will contain a virtual community that helps each other community members to share their
information on promotional offers through the community. The whole information shearing
motivation will be done through a sperate point awarding system. Apart from the shearing
promotional offers, there will be a separate mechanism to grab the promotional offers
information on websites (online) and provide those to the community when community
members need an extra attention to the online promotional offers.

Research for the project was carried out in different kinds of technologies as well as
theories. Reflective of the project will be present in a background context of the
technologies and theories behind the project.

1.1. Project Outline

This reflective report will represent the final stage of the project 'Offer finding
Application for Community-based Offers (OfferMe)' declaring that how the virtual
communities are handled in an application to share information on available/ongoing
offers to a community of people, that their goal is to find offers in a single place. The
main purpose of this document is to represent the various stages of the development
process and discuss the project management life cycle.

In this reflective report, I will be discussing about the things which I have done so far and
how the resources, time, and communication were handled. Moreover, this report will
include the thing which I must do to complete this project.

2. Analysis of initial Goals

This project idea was a part of the previous study that I have been performed. In this study, I
have focused on the offer sources and their behaviors. Moreover, I have experience when
searching on online offers, I had to switch site by site to get the offers information. For the
real world offers, consumers don't receive information if they are not an active member of
the website or the store itself. They will receive information either word of mouth from a
person or through SMS, Ad popups vice versa. Since the consumers are divide by the
interest, the retailers must provide the information through various kind of communication
mechanisms. To overcome this, I have built an application capable of providing offers.
However, the concept that I have been used is not much accurate.

This concept includes both a website and a mobile application. Retailers can create an
account on the website and can simply create product offers through the website (That I
have been provided. this was called OfferMe website).

1|Page
Whenever the retailer creates an offer it will display on the mobile application. So, then the
consumer can view and locate the store through the application. There were some success
factors in this concept. However, there were some drawbacks like, retailers must give extra
effort to add their promotional offer information to the website. When creating multiple
offer posts, they have to create one by one. this will consume the retailer's time.

In knowledge and resource-wise, retailers should be aware of the website and they should
have equipment /devices to connect with the website. When considering the consumer's
perspective this was not a much accurate solution. They did not have a reason to stays in
the application other than the promotions. Users didn't have any motivation to seek
promotional offers.

Considering all of these, I have recreated the idea with a better solution for this project.
Moreover, I have done a research recently on virtual communities and web 2.0 and online
marketing. In the research, I have mainly focused on two aspects which are object-based
virtual communities and web 2.0 concepts. These aspects have been intensely researched
and attached to the project to develop the application.

This project initial goals as followed,

1. Design and develop a mobile application to collect promotional offers.


2. Create a virtual community to find real-world promotional offers.
3. Develop a mechanism to collect promotional offers that are spread online.
4. Create mechanism to "keep the user in the community"

These goals are the main success factors to achieve this project. However, achieving these
goals was not easy. Each of these goals contained technical and theoretical concepts. These
goals are interconnected with one another.

3. Self-Management

This project was completely individual and there was no client involvement for this project.
Therefore, all the development and testing were carried out by myself. However, to get and
better performance for this application, I have created a separate UAT phrase for this
project. as mention above, achieving these goals were not an easy task. On the other hand,
each of these goals depends on each other. as a matter of fact, the success of all the goals
was a necessity. So, this was the main responsibility that I had when completing this project.
So, considering the goal number 4 (Create a mechanism to "keep the user in the
community"), this was done through several methods. One of the main things used to
achieve this is, the point awarding system. This gives the users to share offers that they
found and keep up the active membership in the community to get rewarded. Likewise,
there are several methods I have created to keep the user in the community. However,

2|Page
considering the responsibility that I had on this, if I was unable to achieve this goal there
was no point in having goal number 2 (Create a virtual community to find real-world
promotional offers). So, I had to take the responsibility of each task that needed to be a
success.

Since there was no team involved, the success of this project depends on the decisions that I
have made. Conceding the current progress of the project I assume I have handled the
relevant responsibilities properly.

This application idea was just a concept that I have created from the beginning of this
project. Due to that, there was no much confidence included in this. However, throughout
the research that I have done on virtual communities and web 2.0 concepts, I was able to
gain much knowledge about what I'm doing and what I suppose to do. In that way, I was
able to specify the work that I need to carry out with the whole development process. And
those works are again subdivided to reduce the weight and gain confidence by achieving
simple tasks at once. This reduced some of the analysis time and problem befalling factors.

Since I been working on my own, I was unable to see some of the mistakes that I have been
made. Those things were identified by the supervisor and correct me at the moment. This
gives a huge opportunity to reduce the time and the extra work that I have.

Up to the current phase, 55% of the project was completed along with the research and 25%
of the development tasks. However, there are certain thing needs to be carried out in this
project including another 25% of the development process.

4. Analysis of Progress Made

In this application, users will be able to take a snap from the mobile phone and post it in the
community offer feed. A relevant post could contain an image, description and location.
None of these things are mandatory. Therefore, users can post whatever they desired.
However, in a relevant post, other users can comment and discuss about the promotion
itself. On the other hand, if the other users confirm the post is legitimate the one who
posted will receive points. Those can be redeemed afterwards. Whenever the users aren't
active enough to post, there will be a sperate functionality to grab the online offers and
automatically create posts in the offer feed. The mobile application will be also capable of
providing offers on user interest. There will be a couple of other useful functionalities as
well. However, this is the basic idea of the application.

The application will be implementing as three main components. Which are DataCeneter,
OfferMeRESTApi, and the OfferMeClient. All these components have their unique
functionalities to support the completed OfferMe application. These components are
independent. Due to that the implementation was carried out in separate ways.

Table 1 - Green line will represents the current phrase of the project
The development process has been completed up to 3.2 (Refer the Table 1) and the current
development phase can be expanded as followed.
3|Page
4.1 Currently completed:

 Web Scarping scripts for the websites

To scrap the websites data, I have


selected two websites and created two
separate scripts for each website.
These scripts are referring as spiders.
Each of these scripts contains the class
provided by the Scrapy framework
which inherit the (scrapy.Spider) class.
This class capable of sending GET
requests to the specified website and
get the entire page source into CSS or
XML selectors. This will allow selecting
required offers information from the
selectors by calling the CSS or XML
class name. I have narrow down all the
attributes to common ones like
description, discount, imgurl, base
amount and all the other useful data
as metadata. Metadata can be use in
future enhancements for the
application.

The offer images are stored on website itself. Since, the script only taking the image
URL it creates a dependency on DataCeneter and the website. To avoid such a
scenario, I have created a separate script that handle all the image URLs and upload
those images to the Google Cloud bucket. This give the opportunity to release the
website once the data been fetched from it.

 Database pipeline & reactor script

Database pipeline scripts are created for store the data that have scraped from the
websites for future use. These pipelines are created within the Scrapy framework.
Due to that, all the data fetched from the websites are pipe to the MongoDB
database at the same time.

Furthermore, I have created a reactor script to execute all the web scraping scripts at
once. It contains all the web scraping scripts classes and those will be run inside of a
scrappy runner process. Scrapy framework build on top of a twisted asynchronous
networking library so I had to create a separate twisted reactor to handle all the web
scraping scripts. By default, Scrapy runs a single spider (Single web request) per
process. However, the framework also supports the multiple spiders per single run
using the Internal API. Using this internal API, I was able to run the spiders
sequentially.

4|Page
Sample fetched dataset can be represented as followed.

 Distributed cloud server

Since the offers information on the websites are changing rapidly, all the scripts need
to be executed frequently. To do such, this was handled in a Cloud Compute Service.
I have created a scheduler inside of the reactor to run the script each day at a
specified time. And to identify the process I have added a separate email sending
process for the service. Once all the data have been fetched from the websites, it will
give an alert email notifying the execution details. The scheduler was created using
the inbuild python scheduler module. The DataCenter component related scripts
have been deployed to the Commute service so that it can be run each day.

4.2 Pending to be done:

 User-related API functionalities

All the user functions will be implemented under this selection and gives the
possibility to, a user to create an offer post, comment on an existing post, share
locations on physical offers that they have found. These functions will be called from
the Mobile GUI whenever the user needs to do an action.

 Community-related API functionalities

This will contain more of an algorithm for "keep the user in the community". This
will be done by awarding points and later, these points can be redeemed by the user
itself. The algorithm will be more like counting the posts that they have shearing and
according to that, they will be awarded. This function also compatible with recording
user interest so then the user will get offer posts based on their interest.

 Community offer feed

This is a scrollable screen that contains all the posts. these posts can be created by
community members or it can be automatically created from the data which I have
fetched using the DataCenter. All the posts will contain the comment section.
community members (users) can click on the comment section and create
comments. This will be handled in real-time (without refreshing the screen).

5|Page
When users creating a post, they can specify the location if they needed. Moreover,
they can access the mobile camera and take a picture of the offer and post. if the
post useful other users can award points for the posted by awarding button. later,
the awardee can redeem these points. These functionalities need to be created for
the community offer feed.

 Community profile

The community profile will contain all member details. users can switch to the
screen and viewpoints that they have earned and can update user details. if they
willing to redeem the points that can be done on the community profile screen. This
needs to be created separately and connect with the backend API individually.

5. Time Management

This project was divided into separate tasks, in order to handle the time management. In
each task, I have estimated the time based on the general idea about the task and created a
fully populated schedule for the entire project. However, development and testing are some
of the major tasks when it comes to an application like this. So, this has been identified from
the beginning and allocated a reasonable time period.

To get a better picture, all the development tasks have been subdivided with separate time
slots and created a Kanban-board. This way I was able to achieve tasks one by one with a
given time period.

In development, most of the general tasks allocated a 5 to 7 days’ time period, considering
the complexity and the requirement weight (based on task dependencies and what task that
needs to be done first to continue the other task). However, the High priority tasks were
allocated 10 -15 days. this priority level was decided based on the required purpose. I have
identified some of the tasks which need more research factors to complete it. for example,
scheduled server deployments were altered due to configuration issues.

Up to the current phrase, all the tasks have been completed on the allocated time and I feel
confident that further time management will be align with the given time to complete the
project.

Chart 1 - Gantt chart will represent the time allocations and process up to the current
phrase.

6|Page
(Chart 1 – Gantt chart)

6. Resource Management

From the general research, most of the resource factors have been defined and some of the
resources have been include while the development process is commenced. Moreover,
there were some changes in gathered resources due to cost management and the
application requirement changes.

Current resources can be represented as below.

Resource Availability Comment Status


Google Computed Engine Pay-As-You-go This was proposed on the original N/A
Virtual Machine (VM) Subscription proposal. Since the cost for this service
is increased this has been removed.
Alibaba Elastic Compute 12 Months Alibaba Subscription is free for 12 A
Service months.
Google Storage Always 5GB month limitation available in A
cloud
Pusher Always Free subscription for 200000 messages A
per day.
MongoDB Always Free subscription for 512Mb data A
storage cluster
Mobile Device Always Personal device can be use A
Supervisor (Ms. Nideshia) 1- 7 Days Supervisor can be contact via email or A
opponents in office
Documentations Always Framework related documentations A
can be found in via internet

(Table 2 – Resource Availability)

7|Page
After the change of some of the resource factors, the current phrase is stable with the
available resources. If any issues come across with the server as server down or subscription
revoke. In such cases, I have backup all the related scripts to a separate server so it can be
run through the backup server without having an issue. To handle database risks, MongoDB
provides replicated data itself. So, in that way I can continue the process.

For the moment, there are no additional resources been planned for this project. Overall, I
feel that resource management is done efficiently, and the application development
continue as scheduled in the time management process.

7. Issues & Problem handling

In the current development phase, there are no major issues or problems that can be found.
However, there is a couple of issues identified while the development process is continuing.

MongoDB doesn't support Realtime data syncing. Due to that, I was unable to get the post
comments which are posted by the users. The original functionality is to get the comments
without reloading the application. This has a high impact on mobile applications, unlike web
applications. I have done a separate study on how to get Realtime data on Mongo DB and as
a result, I was able to include the pusher API to get the required outcomes. This issue has
been now solved. Furthermore, there is another issue found in python scheduler which
deployed in the server to run the web scraping scripts each day. The scheduler is kept failing
after 2-3 days run. Still, I was unable to find the root cause of this issue. This scheduler is
already built as a python library due to that the reliability is sort of low. However, I'm still
working on this issue. Apart from these two issues, all the other issues are minor ones that
can be found in every development process. All these issues have been fixed and tested for
the current development phase.

These issues were identified before causing a tremendous impact on the development
process. In that way, I was able to keep up the development process to align with the
scheduled time period and finish the relevant task without including extra time to the time
management plan.

8. Communication Management

Since this is an individual project there were no many people involved in this project hence
Top to bottom of this project was understandable and carried out by me. I had meetings
with my supervisor every month regarding the project progress. In the meeting, we were
discussing the progress that I have been made and the supervisor gave her suggestions
according to her perspective. This was much help when it comes to an application like this.

I have added some posts on dev forums like GitHub / StackOverflow regarding the issue that
I have unable to solve myself. As in return a couple of people helped me online with
solutions.

8|Page
we had a couple of back and forth communications about the solutions. Because of that, I
was able to reduce time by wandering around in the internet.

So far, the communication was managed regularly. However, most of the user-related
functionality developments, including UI/UX functions are scheduled for the upcoming
weeks. So, there will be several decisions and changes to make. I'm planning to increase the
meetings which I had with the supervisor to get a better understanding of these
functionalities.

9. Reflection on Progress made

Considering the overall progress for this project, I believe that I'm having a better
understanding of what I'm doing and what I must do in the upcoming weeks. As mentioned
in the report background, all the DataCenter related implementations are completed and
still in the phase of implementing the backend API and the client code. Resources are
properly allocated for these two components and I will be able to complete the
development on time. In this report, I have declared all the points that I have been done so
far. Once the application has been completed, I will be able to work on the application
testing phase which I have mentioned in the Gantt chart. Testing will be carried out in two
different sections. The first one will be conducting by the developer (myself) itself and the
user acceptance testing will be done by a group of selected peoples. This way I will be able
to get a better functioning application without having any defects. In conclusion, I think I
have started the application with a better understanding by researching from the beginning
and the technologies which I have selected will be helping me to get a value in the industry.
I have learned several things by looking back on the thing that I have been completed. These
things will help me to succeed the further developments and improve myself to work on a
project with confidence.

10. Thesis Table of Contents

This section will describe the thing that carried out in the final project report. This will be
more discus with sub-topics in the final project. Up to the current state of this project, this
can be discussed below.

Chapter 1 – Introduction

This section will be discussing the outline of the entire project including concepts
That are used for this project.

1.1 Project Objectives

This section will focus on the objectives that have been assign to this project from the
beginning. and each objective will be discussed separately along with how the objectives are
set and what purpose.

9|Page
1.2 Problem statement

In this section, the problem will be break down to each and discuss how those problems led
to building an application. This will also describe the structure of the project which is how
this project was started and what is the main reason for implementing an application like
this. Moreover, the section discusses the approaches that have been done according to
gather research factors for the application. Implementation work breaks down also included
in this section.

Chapter 2 – Background

In this section, project background will be discussed, how project carried out and
how the application functionalities working as a whole.

Chapter 3 - Methodology

3.1 Design

This section will be described, what are the theoretical, and technical methods that have
been included in this project. Moreover, this will discuss the analysis of data, and database
design, user interface designs. These points will be subcategorized and deeply explain how
the features are included and on what purpose.

3.2 Implementation

This section will be discussing the implementation process and how data collection and
analysis of data distribute to the application. Moreover, the section will be focusing on the
client-server architecture and explain how the divided component will contribute their
features to the application. Since this application contains three main components, those
functionalities and the technical factors will be discussed under this section. in addition to
database implementation and the time management for the implementation process will be
discussed.

Chapter 4 – Testing and Evaluation

4.1 Evaluation

The testing process will be discus under the evaluation section. in this, the purpose of testing
for the application and the process that has taken to test the application will be discussed.
Moreover, standards and environmental testing will give more value to this section. Basic
testing will be done by the developer itself so these things will be recorded under this. Since
the application contains a community, the UAT test process and approaches will be included
in this section.

Chapter 5 - Conclusion

This section will be used to discuss the OfferMe application achievements and the process
that I have made based on my own perspective. and it will also contain the summary of user
feedbacks and decisions that made. Moreover, this will also explain the next level of this
application based on the current approaches.

10 | P a g e
Reference

Appendix

11 | P a g e

You might also like