ShiftCrypto project:
- Description: Ecommerce project based on Saleor.
- Implement new features and provide bug fixes in Django.
- The project has VPS and GitlabCI setup ready in place.
Used technologies: Django, Saleor
RONIN project:
- Description: The project is for blockchain traders to mimic the super trader actions and replay the trade action by regular users, who have less experience in this field.
- Prepare Django backend and admin panel for showing user data, the trader’s data, amount of money, etc. Based on the user type show the related fields in the admin panel.
- The project requirement asks to make this project Serverless - each endpoint should be handled by AWS Lambdas and the API Gateway. The necessary IAM user privileges were provided and all necessary setup was done.
- I have prepared Serverless Framework configurations to create resources - Cognito pools, API Gateway, and Lambdas as well
- Metamask extension was integrated to the Django auth to store a nonce (random number) and addresses synchronized with AWS DynamoDB.
- Sample React frontend app was deployed to the EC2 instances
Used technologies: Django, AWS Serverless stack, Serverless Framework, Reactjs, AWS EC2 instances, AWS ECS/ECR for Fargate setup, Docker, docker-compose for dev environment.
IMLA project:
- Description: The project is for collecting Azerbaijani Voice datasets from the Telegram bot by creating the contests and receiving voices as Telegram voice recordings.
- Collecting, crawling data from Azerbaijani internet space and from the books. Creating sentences from the grabbed data and storing them in the database.
- A telegram bot, statistics part was written in Golang and user authentication and sending the unique sentences part was in Python/Django
- During the contests in peak hours, users encountered some delays between showing the sentences, accepting the voices, and validating the voice data through ML API. We have solved it by caching the sentences to eliminate the duplicates and grab the sentences from the cache without the database hit
- Voice validation API was rewritten to be in an asynchronous way to not wait for the I/O cycle.
- During the high-load, we have migrated from a simple Docker environment to use auto-scaling with Kubernetes on Google Cloud(of course with the help of the DevOps guy)
- CI/CD pipeline was on GitlabCI and ArgoCD
- Optimized the data serialization part of Django REST Framework by eliminating redundant model serializers - manual serialization gave a performance boost.
- Optimized the Django ORM queries - spotted unindexed tables, heavy redundant database calls.
Used technologies: Django, Django REST Framework, Celery, Redis, PostgreSQL, Golang, AWS, Docker and VueJS
MILDA project:
- Description: The dating app for collecting extra real-life dating messages/sentences, preparing more real-life datasets.
- User authentication, APIs for managing photos, and all features were in Python/Django.
- The statistics part and CPU-intensive calculations were in Golang.
- Used AWS Lambda to crop, compress uploaded photos in the AWS S3.
- The photos and the user profiles were cached to get them fast and to eliminate duplication. The cache syncing was achieved by the background tasks.
- CI/CD part on GitlabCI again shifted to Kubernetes for auto-scaling features.
- Frontend pagination was used with prefetch feature up to 20 profiles not to send requests in each request.
Used technologies: Django, Django REST Framework, Celery, Redis, PostgreSQL, AWS, Docker, Golang.
Face Detection/CV project:
- Description: The project aim is to create a simple, lightweight FD API and also streaming which will be used with any kind of CCTV camera.
- The requirements were: not to change any hardware in the already installed places and also to do FD inference through CPU not using GPU.
- With the ML engineer, we did a quick research and found the Intel OpenVino library which is suitable for CPU inference and designed in that manner.
- We have started from pre-trained state of art DL models and did the experimentations.
- The legacy code that we have found was written in Python and it was synchronous - so when you increase the connected camera count and try to read the frame - it was lagging.
- The biggest part is to rewrite the whole project to be asynchronous using asyncio. It was redesigned from scratch. I have learned a lot about asyncio during this process.
- Up to 50 cameras we have nearly eliminated the lag between reading, inference, and showing the frames to the user.
- The whole app was Dockerized to be easily installable to all platforms.
Used technologies: Intel OpenVino, Python/asyncio, Flask, Docker, docker-compose