Projects
Published Projects
Go Module
- Seamless Huma integration: register a repository and get CRUD routes generated for your model
- Endpoints out of the box: GET list/by-id, POST, PUT, DELETE for any model
- Strong input validation via Go struct tags (required/min/max/maxLength, examples, docs)
- Customizable before/after hooks per method to enforce business rules and side effects
- Flexible config per method (Get/Put/Post/Delete modes) to enable bulk/single behaviors
- Relation filtering: query parents by child fields via declared relations
- Custom field operations: add type-safe operators (e.g., _regexp, _iregexp) on selected fields
Ravand BPMS
Personal Project
- UI platform built on Camunda 8 (Zeebe) with advanced forms renderer and DMS integrations
- BPMN viewer/editor using BPMN.io with custom extensions
- Tech: Vite, React, BPMN.io, GitHub Actions, Semantic Release, Renovate, DevContainers
Ansible Roles
Open Source
- ansible-role-swarm: Installs Docker and bootstraps a Swarm with managers/workers, overlay network, and prune cron
- ansible-role-wireguard: Installs and configures WireGuard Site-to-Site VPN on multiple servers
Terraform Modules
Open Source
- terraform-google-cluster: General-purpose cluster provisioner for Google Cloud (Swarm/Kubernetes/Nomad) with server groups and load balancers
- terraform-google-network: Creates VPCs, subnets, routes, and firewall rules on Google Cloud
- terraform-hcloud-network: Creates networks, subnets, routes, and firewalls on Hetzner Cloud
- terraform-hcloud-cluster: General-purpose cluster provisioner for Hetzner Cloud (Swarm/Kubernetes/Nomad) with servers, volumes, and load balancers
- terraform-module-ansible: Generates dynamic inventory from SSH/WinRM connections and runs ansible-playbook from Terraform
- terraform-module-rke: Bootstraps K3s/RKE2 clusters over SSH/WinRM (an alternative to k3sup)
- terraform-hcloud-rke: Provisions K3s/RKE2 on Hetzner Cloud and installs CCM, CSI, and Cluster Autoscaler
- terraform-hcloud-wireguard: Creates a WireGuard VPN instance on Hetzner Cloud
- terraform-aws-wireguard: Creates a WireGuard VPN instance on AWS
- terraform-openstack-rke: Bootstraps HA K3s/RKE2 clusters on OpenStack
- terraform-openstack-network: Creates networks, subnets, and routers on OpenStack
- terraform-kubernetes-x509: Creates X.509 users and role bindings in Kubernetes
- terraform-kubernetes-environment: Provisions namespaced environments (quota, registry secret) in Kubernetes
- terraform-gitlab-application: Manages GitLab groups, projects, and default organization policies
- terraform-gitlab-environment: Manages per-project environments in GitLab (e.g., review/stage/prod)
- windows-cloud-image: Packer templates to build Windows Server images with Cloudbase-Init via VirtualBox/QEMU
Open Source
- loopback-component-crud: Generates CRUD endpoints from model configs; supports authentication, authorization, validation, nested create/update
- loopback-component-filter: Repository mixin to filter records based on user/context rules
- loopback-component-history: Adds temporal history to models via HistoryEntity/Repository, tracking create/update/delete
- loopback-component-cascade: Repository mixin for cascading create/update/delete across relations
- loopback-component-authorization: HRBAC authorization for LoopBack 4 with decorators, repositories, and mixins
ReactAdmin Data Providers
Open Source
- ra-data-lb4: React Admin data provider for LoopBack 4; supports includes and custom HTTP client
- ra-data-mixer: Mixes multiple data providers/resources into one React Admin provider with per-resource filters
- ra-data-processmaker3: React Admin data provider for ProcessMaker 3 APIs; supports custom HTTP client
Open Source
- Developed a custom messaging protocol over TCP/UDP using Erlang
- Implemented Hole Punching for P2P connections in audio/video calls with Erlang
- Created a resumable streaming protocol for file transfers using C
- Streamed audio/video frames using Android native APIs, FFMPEG, and raw sockets
- Built an Android messenger app with Java, C (JNI), and Android Studio
- Developed a desktop messenger app using Qt, C++, and QML
Course Projects
Natural Language Processing
Fall 2022
Prof. Bagher Babaali
- Training N-Gram Language Model on Hamshahri v2 dataset (Persian Newspaper) using NLTK
- Implementation of Hidden-Markov-Model from scratch in python (Baum Welch Algorithm, Viterbi Algorithm)
- Part-of-Speech Tagging using Hidden-Markov-Model
- Applying TF-IDF and LSA for Text Classification on Persica dataset
- Text Classification on Persica dataset using ParsBERT
- Part-of-Speech Tagging on Persian dataset using ParsBERT
Machine Learning
Fall 2022
Prof. Bagher Babaali & Prof. Hedieh Sajedi
- Implementation of perceptron from scratch using Python and NumPy and applying it on Polynomial Regression problem
- Training perceptron for Money Classification into Real and Fake classes
- Implementation of Linear-Discriminant-Analysis using Python and NumPy and applying it to reducing dimension and visualizing data
- Implementation of Principal-Component-Analysis using Python and NumPy and applying it to Face Image dataset compression and reconstruction
- Applying Logistic Regression for a binary classification task on Income dataset
- Applying K-Means clustering method on dataset and visualizing clusters
- Activity Recognition using Wearable Physiological Signal Features using Decision Tree, Random Forest, XGBoost, and SVM Classifiers
- Parkinson's Disease Detection using Speech Signal Features using Decision Tree, Random Forest, XGBoost, SVM, MLP, ELM, and Autoencoder
- Heart Disease Prediction from Health Indicators using Decision Tree, Random Forest, XGBoost, SVM, MLP, ELM, and Autoencoder