Skip to content

Olx clone, with Golang, PostgreSQL, Redis, docker, AWS S3, AWS SES, AWS SQS to achieve blazing performance, with features like product, user, seller, review, report-product, favorite. Monitoring using Prometheus & Grafana, local development using air and many more

License

Notifications You must be signed in to change notification settings

swarajkumarsingh/olx-clone

Repository files navigation

Olx clone(Backend)


Java BSD Clause 3


Overview

Olx clone, with Golang, PostgreSQL, Redis, docker, AWS S3, AWS SES, AWS SQS to achieve blazing performance, with features like product, user, seller, review, report-product, favorite and many more, this product compress of 25+ working APIs, also health API.

Table of Contents

Technologies

Prerequisites

Features

  • Olx clone with 25+ working APIs
  • For scale we used AWS SES for email service
  • For scale we used AWS S3 for file storage
  • Performance DB we used PostgresQL
  • Dockerized for easy deployment

Environment Variables

Table bellow shows the obligatory environment variables for mariadb container. You should set them based on what was also set for backend container.

Environment variable Default value Optional
STAGE "" YES
DB_HOST http://127.0.0.1 YES
DB_PORT 5432 YES
DB_USER user YES
DB_PASSWORD postgres YES
DB_NAME olx-clone YES
REDIS_HOST NO
REDIS_PORT NO
REDIS_USER NO
REDIS_PASSWORD NO
SENTRY_DSN NO
DD_AGENT_HOST NO
S3_BUCKET NO

Getting started

First of all, correctly configure the Golang development environment on your machine, see https://go.dev/doc/install

- Clone this repository:
$ git clone https://github.com/swarajkumarsingh/olx-clone

- Enter in directory:
$ cd olx-clone

- For install dependencies(optional):
$ make install

- Run the app: 
$ ./run.sh

DataBase Design

User Table

Column Name Data Type Description
id INT (Primary Key) Unique identifier for each user
username VARCHAR(255) Unique identifier for each user
fullname VARCHAR(255) User's fullname
avatar TEXT User's profile picture
email VARCHAR(255) User's email address
password VARCHAR(255) Securely hashed password
location TEXT User's profile picture
coordinates TEXT User's profile picture
otp TEXT User's profile picture
otp_expiration TIMESTAMP OTP timestamp
created_at TIMESTAMP Timestamp of account creation
updated_at TIMESTAMP Timestamp of account modification

Seller Table

Column Name Data Type Description
id INT (Primary Key) Unique identifier for each seller
username VARCHAR(255) Unique identifier for each seller
fullname VARCHAR(255) Seller's fullname
description TEXT Seller description
is_verified BOOLEAN Checks if the seller is verified
avatar TEXT Seller's profile picture
phone VARCHAR(12) Seller's phone
email VARCHAR(100) Seller's email address
password VARCHAR(255) Securely hashed password
city VARCHAR(50) Seller's city
state VARCHAR(50) Seller's state
country VARCHAR(50) Seller's country
zip_code VARCHAR(50) Seller's zip-code
location TEXT Seller's location
coordinates TEXT Seller's coordinates
rating TEXT Seller's rating
account_status TEXT Seller's account_status
otp TEXT Seller's otp
otp_expiration TIMESTAMP OTP timestamp
created_at TIMESTAMP Timestamp of account creation

Product Table

Column Name Data Type Description
id INT (Primary Key) Unique identifier for each seller
title VARCHAR(255) Title's for the product
description TEXT Seller description
location TEXT Seller's location
coordinates TEXT Seller's coordinates
views BIGINT Views count
price VARCHAR(100) Views count
seller_id ID Seller's ID
created_at TIMESTAMP Timestamp of account creation

Review Table

Column Name Data Type Description
id ID (Primary Key) Unique identifier for each seller
user_id ID User's ID
product_id ID Products's ID
rating TEXT Products's rating
comment TEXT Products's comment
created_at TIMESTAMP Timestamp of account creation

Seller Reports Table

Column Name Data Type Description
id ID (Primary Key) Unique identifier for each seller
user_id ID User's ID
product_id ID Products's ID
message VARCHAR(100) Report message
created_at TIMESTAMP Timestamp of account creation

Favorites Table

Column Name Data Type Description
id ID (Primary Key) Unique identifier for each seller
user_id ID User's ID
product_id ID Products's ID
created_at TIMESTAMP Timestamp of account creation

Product Views Table

Column Name Data Type Description
id ID (Primary Key) Unique identifier for each seller
user_id ID User's ID
product_id ID Products's ID
created_at TIMESTAMP Timestamp of account creation

Contributing

Contributions are welcome! If you'd like to contribute to this project, please follow these guidelines:

1. Fork the repository.
2. Create a new branch for your feature or bug fix.
3. Make your changes and test thoroughly.
4. Commit your changes with clear commit messages.
5. Create a pull request against the main branch.

Disclaimer

This application is a personal project built with educational and learning purposes in mind. It is neither affiliated nor endorsed by Amazon in any way. While the app features product details and images inspired by Amazon, these are solely for demonstration purposes and may not represent actual products. All rights to these elements belong to their respective owners. We are using them for educational purposes only and have no intention of commercial exploitation.

Additionally, be aware that any attempts to place orders within this prototype are purely for testing purposes and will not result in actual product deliveries or charges in the real-world. This environment is designated exclusively for simulation and development purposes

Contact

  • Swaraj Singh

    LinkedIn Gmail

    feel free to contact me!

License

You can check out the full license here

This project is licensed under the terms of the MIT license

About

Olx clone, with Golang, PostgreSQL, Redis, docker, AWS S3, AWS SES, AWS SQS to achieve blazing performance, with features like product, user, seller, review, report-product, favorite. Monitoring using Prometheus & Grafana, local development using air and many more

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published