Feroz's Portfolio Projects - ferozfaiz.com
Welcome to my portfolio, showcased at ferozfaiz.com. It has different segments, each demonstrating a distinct feature of my work in web and software development.
-
- I developed this Spring Boot API, relying on PostgreSQL as the primary database. It is secured through OpenID Connect, leverages Hashicorp Vault for secret management, and is deployed on a self-managed Kubernetes cluster. Additionally, I designed and implemented a materialized path data hierarchy for use with Spring Data JPA. I also implemented an Entity-Attribute-Value (EAV) model for a product catalog (see EAV implementation). A live version is available at spring-boot-api.ferozfaiz.com
-
- This is a modern Next.js UI application designed to interface with a Spring Boot API for product data, utilizing the Entity-Attribute-Value (EAV) model. The UI is built with TypeScript, Tailwind CSS, and leverages a modular monorepo structure. Authentication and authorization are implemented using a custom solution, and several in-house packages are integrated for enhanced security, CSRF protection, middleware chaining, and form building. The application is deployed on a self-managed Kubernetes cluster for scalability and reliability. A live version is available at nextjs.ferozfaiz.com
-
- I developed ferozfaiz.com using Django, focusing on a fully server-side rendered architecture. To enhance interactivity and reactivity, I integrated HTMX and AlpineJS. Additionally, I implemented OAuth 2.0 authentication, supporting both Google and Microsoft. I used RabbitMQ/Celery to send emails. Kakfa was used to ship logs to ElasticSearch/Grafana. I also used Hashicorp Vault to store secrets. The application is deployed on Kubernetes. A live version is available at ferozfaiz.com
-
- This repository highlights my work with ReactJS 18.2 and Redux. This ReactJS project is a web application that allows users to create, read, update, delete, sort, and search data. A live version is available at reactjs.ferozfaiz.com
-
- This directory contains the developement codes of Angular 16.2, a structural framework for dynamic web apps. This Angular project is a web application that allows users to perform the same CRUD operations as the ReactJS app. A live version is available at angular.ferozfaiz.com
-
@nartix/tiptap-inline-code-highlight:
- This npm package I created is a port of @tiptap/extension-code-block-lowlight, but it's for highlighting inline codes in the TipTap editor. It uses Lowlight to highlight codes.
-
- A lightweight CSRF protection middleware for Next.js on the Edge Runtime. It performs a double check on the CSRF token by comparing the token from the request body or headers with the token stored in the cookie.
-
- A simple and secure token utility for generating and verifying tokens with optional data and timing. Edge Runtime compatible, making it ideal for use in serverless environments like Vercel Edge Functions, Cloudflare Workers, and other edge computing platforms.
-
- This ExpressJS project is an API that ReactJS and Angular use to enable users to perform CRUD operations. A live version is available at expressjs.ferozfaiz.com
-
- I also learned Django and developed an API backend with Django Rest Framework. This was designed to parallel the functionality of the existing ExpressJS API backend of ferozfaiz.com. A live version is available at django-rest-framework.ferozfaiz.com
-
- I use Ansible for automation and orchestration, along with Kubernetes for container orchestration. I deployed my portfolio projects using the RKE2 kubernetes engine.
-
- This section is dedicated to HAProxy, a high-availability load balancer and proxy server for TCP and HTTP applications. I used HAProxy to load balance traffic between Kubernetes nodes.
-
- Within this directory, you'll find the Kubernetes deployment manifests that I utilized for deploying ferozfaiz.com.
-
- This section features shell scripts I developed for backing up and restoring a PostgreSQL cluster from an AWS S3 bucket
-
- I've utilized GitHub Actions to streamline the automation of my deployment containers' build process, as well as the subsequent pushing of the built containers to AWS ECR
-
Development
- For my portfolio projects, I employed Docker containers in conjunction with Docker Compose for development and testing. Utilizing Docker containers simplifies the process of experimenting with various technology versions seamlessly. Additionally, I leveraged Git for efficient version control