Mini Yektanet is an imitation of an online advertising platform that suggests and shows ads in publishers websites and keeps tracks of clicks/impressions. The project was done as a part of Yektanet's Yellow Bloom workshop, in two weeks. The app is made of several components:
- Ad Server: Responsible for giving ads to publishers, whenever wanted.
- Event Server: Handles click and impression events.
- Panel: Has dashboards for customers and is the interface to the database.
- Publishers Website: A few number of hard-coded web pages.
You can use docker to build and run the project. However if you prefer to run it locally, here are the instructions:
You'll need to have these tools installed and running on your system:
- Kafka
- PostgreSQL
- Redis (with Bloom Filter module)
The configuration on how to connect to external components are in the environment variables.
And of course, you'll need Golang and the Golang packages used in the project (can be installed using go
)
Copy the contents of .env.example
to .env
in the same directory.
Note: Some values are secrets and not included in the .env.example
. Like database password and private keys.
Navigate to each service's directory and run each one of them:
cd adserver
go run .
The list of services you need to run:
- Ad Server (
./adserver/
) - Event Server (
./eventserver/
) - Panel (
./panel/
) - Publishers Websites (
./publisherwebsite/
)
Now go to localhost:8084/varzesh3 Sorry if there is no fancy UI (or no UI at all), we did not have time for that.
Developers:
Mentor:
By the way, the name of our team was knapsack. Can you tell why?