Projects
WebSockets Price Ticker
Tools: Rust (tokio-tungstenite), Javascript
- Implemented a WebSockets server in Rust that allows clients to receive product price updates on an interval
- Used Javascript WebSockets API to connect to the server and render updates
Rust Fullstack TODO Application
Tools: Rust (Leptos, Actix), TailwindCSS
- Used the SSR (Server-Side Rendering) capability of Leptos to create a full stack web application for managing a TODO list
- Compiled a native Rust binary to run the Actix server to store effects of CRUD operations
- Compiled a Wasm bundle to run in the browser
Polygot Microservices
Tools: Go, Rust, PostgreSQL, Valkey (Redis), Docker, Kubernetes (k3d)
- Implemented microservices for a games listing application
- gRPC microservices for metadata and reviews were written in Go
- A REST API for achievements was written in Rust (Actix-Web)
- Used Valkey for read-aside and write-through caching
- Used kustomize to templatize application, database, and cache services
- Wrote integration tests for communication between services
Go Web Forum
Tools: Go, PostgreSQL, htmx, Go’s html/template package, Bulma CSS
- Designed and implemented a web forum allowing users to create posts and comments for topics
- CRUD operations for topics, posts, and comments; like, dislike, and save posts and comments
- Users register via a signup form then submit an activation token sent by email (SMTP)
- Hierarchical data modeling of comment chains using PostgreSQL
- Integrated with OpenTelemetry; instrumented HTTP handler functions to collect traces, metrics, and logs
- Middleware: CSRF protection, secure HTTP response headers, CORS, user authentication and access control
Go Interpreter and Compiler
References: Writing an Interpreter in Go & Writing a Compiler in Go (Thorsten Ball)
Tools: Go
- Implemented a lexer and Pratt parser
- Implemented an evaluator for a tree-walking interpreter
- Implemented a stack-based VM and bytecode compiler
Go REST API
Reference: Let’s Go Further! (Alex Edwards)
Tools: Go, PostgreSQL, pq, golang-migrate
- Implemented a REST API using Go to handle JSON HTTP requests and responses
- CRUD operations: filter, sort, pagination, user registration, activation, and login
- Database: PostgreSQL (pq), database migrations (golang-migrate)
- Access control list for enforcing proper permissions for protecting routes
- Middleware: logging, rate limiting, authentication, and authorization
- Unit tests
Go Website
Reference: Let’s Go! (Alex Edwards)
Tools: Go, PostgreSQL, pq, golang-migrate
- Implemented a basic HTTPS website using Go to serve HTML, CSS, and Javascript,
- Utilized the repository pattern to separate application logic from data access
- Database: PostgresSQL, database migrations (golang-migrate)
- Middleware: logging, authentication, CSRF token handling, and setting secure headers
- Unit tests
Rust REST API
References: Rust Web Development (Bastian Gruber)
Tools: Rust, warp, PostgresSQL, sqlx
- Implemented a CRUD REST API using Rust and the warp framework
- Used PostgreSQL with the sqlx library and handled database migrations
- Rust unit testing for HTTP handlers
- Middleware: authentication with Paseto tokens and authorization
Python Data Science APIs
References: Building Data Science Applications with FastAPI (François Voron)
Tools: Python, FastAPI, sqlite3, SQLAlchemy, alembic, MongoDB, motor
- Implemented REST APIs using Python and FastAPI
- Running a ML model for inferences
- Storing posts and comments
- Relational database implementation: sqlite3, SQLAlchemy, alembic
- NoSQL database implementation: MongoDB, motor