Code Monkey home page Code Monkey logo

sticky's Introduction

Sticky

She is a clean, high performance and completely open source retargeting platform which was created over 5 years ago and was actively working for almost 2 years. She is now retired and wants to share her experience with other ad-networks.

Dictionary

Retargeting:Retargeting is to show dynamic Ads to user based on their activity in sites and online shops.
Host: A verified address which can inject Sticky script(track.js) to record their user's data into sticky.
Activity: All the things a user can do in a website. For example : visiting a page, visiting a product, adding a product to his/her cart, removing it, like or dislike an item and purchase.
Segment: a group of users who has done some specific activity.
Product Template: a way of showing to a user more interesting dynamic ads to increase the chance of him/her clicking on the ad.
Host Admin: a user who owns the host and can create and modify its segment and ad templates.
Membership: All the segments from one or multiple hosts which a single user is a member of.
Sticky Id: a Cookie for all the hosts in sticky.
Partner: the network who is using sticky to view dynamic ad to a user.
Cookie Matching: a way for a network to match their user with Sticky Id.

Requirements

'*' means not changable to other provider or framework.

  • .*NET Core 5.
  • A non-relational database for saving cookie matching data. (Currently MongoDb has been implemented).
  • *Druid for recording all the user activities in a host.
  • A Messaging provider (Currently Kafka has been implemented).
  • *Aerospike (For Key-Value Persistence)
  • A relational-Database that works with Entity Framework to save all host admins customizations ,segments and product templates. (MSSQL has been implemented).
  • A Cache provider (Redis has been Implemented)\

Note!

Sticky is a retargeting focused solution and it is not a complete advertising platform. it relies on Advertising networks and RTB (Real Time Biding System) to work.

Why use this?

  • This project has passed its test for more than 40M records per day with a medium linux server and it can easily be tuned for more than this.
  • It is clean and the code base is pretty SOLID (ihh ihh :D ).
  • It is free.
  • It is based on .NET Core so you can host it in either windows server or linux-based server.
  • It can be a good template for ad network projects because it can be modified with ease.

Usage

1- Sticky.Application.Dashboard

this project is responsible for saving segments, hosts, partners and text-templates and customizing the way host admins can show to users the dynamic ad.
It does not have much of a dependency, Installing MSSQL ( or any other Entity Framework supported relational database) is enough. Change the connection string (and other configuration if needed) inside the appsetting.json then run the migration and the dashboard is ready.

2- Sticky.Application.Script

this project is responsible for recording all user activities in verified hosts.
For this project to work the minimum dependency is Kafka and Redis.

3- Sticky.Application.Advertising

this project is responsible for grouping all the membership from different databases and returning the result with products and interesting ad templates in one object.
The dependency for this project is only Redis, Redis is used for its cache functionality and some memory repository for high performance query result.

4- Sticky.Application.CookieMatching

if you are not using other partners for your advertisement, you can ignore deploying this project. If you are, This project should be provided with a Not-Relational Database and Also Redis for providing cache.
This project has no controller and just a middleware to load some iframes into each other.

5- Sticky.Application.CacheUpdater

a scheduler for updating the data from the relational database into our cache system. It depends on a relational database that entity framework supports and a cache provider It can be run as a service inside Linux-based systems and can be modified to a service for windows based systems.

6- Sticky.Application.ResponseUpdater

a scheduler for updating the handling the ad requests from partners and creating a response based on the data received by different databases or our data cube. It should be connected to Druid, Aeorspike, Redis and MongoDb. It can be run as a service inside Linux-based systems and can be modified to a service for windows based systems.
you can even run multiple services of this project for faster response generation and you can even configure it to be run just for a specific segment.

7- Sticky.Application.Consumer

a scheduler for getting the messages from Messaging provider and save it to a key-value persistence. It depends on Aerospike client (as a key-value persistence) and Kafka consumer. It can be run as a service inside Linux-based systems and can be modified to a service for windows based systems.

Notes:

Any questions that can bootstrap you into deployment, feel free to contact and ask at : [email protected].
Happy coding ;)

sticky's People

Contributors

ghaagh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

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.