Project Overview

WeLove is a community driven, location focused web and mobile app that allows citizens to discover and share new and interesting places in their city with other WeLove users.

The framework for WeLove centres on niched communities sharing activities. Communities are based around entities that reside in niches and whose features are configurable.

Home page

Content is aggregated via WeLove’s reputational scoring engine and filtered according to user preferences.

Community members determine the reputation of their peers. If you join a niche, everyone in that community is your friend and everyone’s activities are of interest to you.

WeLove started in 2009 and is fully bootstrapped by NML.

Project Goals

Build communities based around Entities that reside in niches and whose features are configurable. Community members determine the reputation of their peers

A configurable service layer

For example a surf spot has a very different data model to a coffee shop.

Entities (WeLove Assets) can reside across multiple interest groups

A place can be a coffee shop and a burger joint so it must be able to be a part of welove/burgers and welove/coffee.

Community aggregated at different geographic levels

Community associated with Province/City/Suburb as well as the actual place or thing the people are interested in.

A stream of activity

Much like Facebook but everyone in the interest layer is your friend so you see all activities happening within that interest group.

A reputational scoring engine

WeLove is about discovery of places and things (that have reputation) and of people that have reputation. WeLove is underpinned by a complex reputational scoring engine.

Notifications engine

When people comment on, love or rate and asset you’ve added the notifications engine alerts you to all activities on the platform that are of interest to you.

WeLove discovery

  • Discovery of places, things and interesting people who have a deep understanding of your interests.
  • Achieved by building a reputational scoring engine underpinned by a strong reputational algorithm. Driven off love points.
  • Love points accrue through the community loving your assets, be it places, or reviews. Love points contribute to growing your reputation to become recognised as an expert in a particular niche.
  • To facilitate geographic discovery all relevant assets are associated with a geospatial point. This allows us to position all points of interest on maps.

WeLove community

Community is facilitated and aggregated at many levels in WeLove:

  • You could join and leave a niche interest group.
  • Using your location, you can join a community based on country, city or neighbourhood.
  • By loving a place in WeLove you are associating yourself with the community of people that loves that place.
  • An activity feed of things happening on WeLove can be broken down at those different levels.

WeLove being notified of things that relate to us

Notification of interactions, comments, love/unlove actions, reviews are communicated according to user preferences via email through the WeLove notification engine.

WeLove seeing the same things but in different contexts

  • Community members can have different reputational scores within each of their communities.
  • Content on detail pages can be filtered to show only reviews related to a specific context (reviews on a place’s coffee in one context and reviews of the same place’s breakfast in the other.)
  • See activities for the same niche, but for entities in different cities.


  • Entity Framework
  • oAuth integration, allowing users to log in using Facebook and Twitter
  • Responsive UI, making use of CSS3 and media-queries
  • ASP.NET MVC v3
  • NUnit and  TeamCity for automated testing and continuous integration
  • SQL Server for data storage. SQL stored procedures returning XML
  • SOAP web services integration points to mobile app
  • Microsoft Unity for dependency injection
  • Automapper to translate models into view models
  • Hosted on an Azure webserver
  • Built on the Lenticular platform


WeLove features the latest in responsive CSS and Media Queries.

Responsive design

Home Page

Displays the most recent activities on assets via a series of activity cards with customised view options via filter bar



Niche Home Screen

Displays a geo-located representation of the assets as pins on a map and activity feeds with filter options for most recent, most loved, top rated content


Detail Page

View an asset in detail. Displaying a description, features, reviews, directions, image gallery and a Twitter feed for the selected asset

Profile Complete

See details for a user’s profile, including activities for that user

Profile Niche

Filters out activity for the user in a specific niche

Profile Niche

Profile Edit

See and edit personal details, notification settings, link external networks and change profile image

Profile Edit

Add Location

Select niches, complete details and features, pin to map and add images

Add Location

Admin: Locations List

Filter locations by niche, status or keyword. Reject or approve locations

Locations List

Admin: Location Detail

Admin edit for location details

 location detail

Admin: Niches

Enable and disable niches

Admin: Niche Edit

Update map pin icons, regions, location names and moderators

Admin: Users

Delete, lock and assign roles

Responsive Design 

WeLove makes use of responsive CSS media queries to control the way content is displayed across various platforms.

The site is coded to make use of percentage widths as well as specific width breakpoints at which content rendering changes appearance and layouts shift for optimal user experience and legibility.


Flexible Data Model and Service Layer


Presentation Layers

  • For Web Applicaton : Model-View-Controller based on Asp.Net MVC3
  • For Mobile Applications : Expose Soap Services via API

Logic Layers

  • Business Logic Layer uses Managers and Services to handle CRUD (Create, Update, Delete) operations
  • Web Services Logic Layer sits between the Business Logic Layer and the Webservices. This allows for Webservice specific behaviours & models and facilitates Separation of Concerns between Web- and Mobile Applications

Data Layer

  • Repository Layer. Serves data from NML Data Cache Provider, with Delegates assigned to retrieve invalidated Cache content
  • ORM Mapping. Linq2Sql used as framework
  • Stored Procedures. Return XML formatted data

Domain Models

Users, Assets, Features, Regions and Niches.

Domain Models


  • Authentication. A WeLove user account can have multiple external network accounts linked to it. In this way one user can sign in, to the same account, by using any of Facebook, Twitter, Email or WeLove username
  • Activities. A user’s interactions with assets get recorded as activities
  • Niches. Users can belong to several niches


  • Type: Assets are differentiated by type. Photos, reviews and regions all have different characteristics
  • Niches: Assets may reside across multiple niches. You can review a location’s coffee and breakfast separately (or together)
  • Features: As part of the flexible data model construct, different types of assets can have different features

Feature Type

  • Asset Type: Features only apply to certain types of assets. The date of birth feature type would associate to profiles, whereas the has wireless feature type would apply to a location
  • Asset Feature Value: This is a string representation for the recorded value of a feature type. Stored on a per asset basis
  • Value Type: Defines the primitive type of the feature value, this is used when casting the asset feature value


  • Assets can reside in multiple niches and users can belong to multiple niches, the interactions between them can be recorded as activities (which may also reside across multiple niches)
  • The collection of users associated with a specific niche would form its community
  • It is possible to see activities which only pertain to a subsection (niche) of the web application.
  • Users can identify content (users, reviews, locations, etc.) which interests them specifically, i.e. knitting enthusiasts in the southern suburbs of Cape Town can see the best wool shops nearby


Polygon: Regions are defined with geospatial data. Location-type assets have latitudes and longitudes assigned to them. Queries can be made to find the locations that intersect each region.

Level: Hierarchical definition of polygon grain. Country, city, province etc.

Niches: As regions are assets, they can reside across multiple niches.

Need a software development partner?

Fill in this form and we will get back to you as soon as possible.