My name is Damián and I am a software developer with a passion for learning new technologies and building innovative solutions. I have experience in both frontend and backend development, and I enjoy working on projects that challenge me to grow my skills. In my free time, I like to explore new programming languages, contribute to open-source projects, and stay up-to-date with the latest trends in the tech industry.
Working on a global Web application for a major US client in the medical field. The software supports clinical studies and clinical trial data collection worldwide. The project has an international development team and operates in a regulated environment.
Aug 2025 - PresentDesigning and implementing an application for interactive visualization of autonomous driving data, enhancing both user engagement and data clarity. Simultaneously developing an admin dashboard for Audi services to manage Azure user data and privileges across internal projects.
Dec 2024 - Aug 2025Began as an intern and advanced to a pivotal position with complete accountability for managing the company's internal web/desktop applications, which are utilized by software engineers for reporting and collecting ultrasound testing data.
Jun 2022 - Dec 2024Tech Stack: C# 100.0%
Last Commit: 2/19/2026
Commits: 23
A simple, educational implementation of the Advanced Encryption Standard (AES) algorithm in C#. This project demonstrates the core AES encryption and decryption processes with a focus on clarity and learning.
Educational Purpose Only: This implementation is intended for learning and educational purposes. Do NOT use this in production environments or for securing sensitive data.
Latest benchmark results on Ubuntu 24.04.3 LTS with Intel Core i5-12450H:
| Method | Mean | Error | StdDev | Ratio |
|---|---|---|---|---|
| Custom AES Encrypt | 4,048.8 ns | 74.34 ns | 62.07 ns | ~4.9x |
| Custom AES Decrypt | 7,394.6 ns | 31.49 ns | 29.46 ns | ~8.7x |
| .NET AES Encrypt | 832.0 ns | 3.82 ns | 3.58 ns | 1.0x |
| .NET AES Decrypt | 847.2 ns | 5.56 ns | 4.64 ns | 1.0x |
The implementation is thoroughly tested against NIST Special Publication 800-38A and FIPS 197 test vectors:
dotnet test --verbosity normal
All tests validate:
This project is for educational purposes only. Please refer to the license file for details.
This is an educational project. Feel free to fork and experiment, but remember this is not intended for production use.
Tech Stack: C# 100.0%
Last Commit: 2/17/2026
Commits: 10
This Azure Function project implements a Facebook Messenger bot that automatically sends cute cat photos to users who message your Facebook page. The bot uses Azure HTTP-triggered functions to handle Meta webhooks and respond with adorable cat images.
messages and messaging_postbacks eventsDeploy Function: Deploy this project to your Azure Function App
Environment Variables: Configure the following app settings:
META_PAT: Page access token from FacebookMETA_APP_SECRET: Your webhook verification token (the secret)HTTP Endpoint: Note your function's HTTP trigger URL for webhook configuration
Tech Stack: TypeScript 49.9%, C# 42.7%, HCL 4.7%, Dockerfile 1.2%, JavaScript 0.7%, CSS 0.4%, HTML 0.4%
Last Commit: 2/19/2026
Commits: 77
A Simple Household Task Management System
Transform your chaotic chore routine into an organized experience!
Start PostgreSQL database:
docker-compose up -d
Create environment file:
Create a .env file in the backend directory with your connection string:
DATABASE_CONNECTION_STRING=your_connection_string_here
Run Entity Framework migrations:
dotnet ef database update
Start the backend:
dotnet build
dotnet run
Install dependencies:
npm install
Start the development server:
npm run dev
The app automatically uses http://localhost:5272/api for the backend in development.
Before deploying to production, configure the following secrets in your GitHub repository (Settings → Secrets and variables → Actions):
| Secret Name | Description |
|---|---|
DOCKERHUB_USERNAME | Your Docker Hub username |
DOCKERHUB_TOKEN | Your Docker Hub access token |
AZURE_CREDENTIALS | Azure service principal credentials (JSON format) |
PRODUCTION_API_URL | Your production API URL (e.g., https://api.yourapp.com) |
Login to Azure:
az login
Navigate to the infrastructure directory:
cd infrastructure
Initialize Terraform:
terraform init
Review the deployment plan:
terraform plan
Apply the infrastructure:
terraform apply
Push to main branch:
Once the infrastructure is set up, pushing to the main branch will trigger the CI/CD pipeline that:
Tech Stack: TypeScript 89.9%, CSS 8.6%, JavaScript 1.4%
Last Commit: 3/9/2026
Commits: 37
A staff management and time-tracking web app for small businesses — built to track daily work inputs, cash flow, and shift schedules. Built for a small cafe in my home city.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) + React 19 + TypeScript |
| Auth | NextAuth v5 — Google OAuth |
| Database | MongoDB (Atlas) |
| UI | React Bootstrap 5 + Custom CSS Modules |
| Calendar | FullCalendar (day/week/month views) |
| Utilities | date-fns, react-spinners |
| Hosting | Vercel-ready (Next.js server actions) |
Access is controlled via environment-level email whitelists:
Authentication is handled through Google OAuth — only whitelisted emails can log in.
/walletTracks the business cash balance. Users can submit balance updates with a timestamp. Admins see the full history of all updates (shown in the História accordion); standard users see the current balance only.

/myinputsDaily work log table. Each entry records hours worked, start/end times (auto-calculates hours), cash and terminal turnover, day expenses, and start/end float amounts. Filterable by month. Admins can view entries for all staff. Older entries outside the edit window are masked with ****.

/timetableA color-coded shift calendar showing staff schedules. Powered by FullCalendar with day, week, and month views. Each employee is assigned a distinct color.

Tech Stack: TypeScript 91.0%, CSS 4.6%, JavaScript 4.2%, Shell 0.2%
Last Commit: 3/11/2026
Commits: 77
A personal productivity application built with Next.js 14, featuring task management, work reports, and workout tracking. The app uses Google OAuth for authentication and MongoDB for data persistence.
/)/tasks)
/workreports)
/workouts)
/notes)
Tech Stack: C# 100.0%
Last Commit: 2/17/2026
Commits: 8
A desktop application for rendering and exploring the Mandelbrot set, built with C# and Avalonia UI targeting .NET 9.

The Mandelbrot set is one of the most famous fractals in mathematics. A point in the complex plane belongs to the set if the sequence defined by:
remains bounded (does not diverge to infinity). This application renders the set on a 1000×1000 pixel canvas, coloring points that belong to the set in red.
Space to increase magnification| Key | Action |
|---|---|
Arrow Up | Pan up |
Arrow Down | Pan down |
Arrow Left | Pan left |
Arrow Right | Pan right |
Space | Zoom in |
You can scroll (zoom) into the set to explore its infinitely complex boundary, but be aware that performance degrades significantly after a few zoom levels. The rendering is not heavily optimized — each zoom step requires recalculating every pixel on the canvas, and as the iteration count increases with deeper zoom levels, the computation becomes substantially more expensive. This is a known limitation of the current implementation and would require significant optimization (e.g., multithreading, GPU acceleration, or perturbation theory) to handle deep zooms smoothly.
cd MandelBrot/MandelbrotApp
dotnet run
Tech Stack: C# 100.0%
Last Commit: 2/19/2026
Commits: 11
A .NET tool that monitors product prices on the web and notifies you by email when your target price is hit.
InputConfig.xml — each entry has a URL, a target price, and a regex to extract the current price.<root>
<Recipient>you@example.com</Recipient>
<ItemWebResource>
<url>https://example.com/product</url>
<priceGoal>49.99</priceGoal>
<regexPricePattern>price-regex</regexPricePattern>
</ItemWebResource>
</root>
Set your Mailjet SMTP keys as environment variables:
PUBLIC_KEY_PARSERTOOL=<your-public-key>
PRIVATE_KEY_PARSERTOOL=<your-private-key>
Then run:
dotnet run --project PriceChecker
Tech Stack: C# 96.6%, Shell 3.4%
Last Commit: 2/19/2026
Commits: 25
A C# implementation of a Retrieval-Augmented Generation (RAG) system that processes PDF documents and enables intelligent question-answering using local AI models.
This RAG implementation allows you to ask questions about PDF documents by combining semantic search with large language models. The system extracts text from PDFs, converts it into semantic vectors, stores them in a vector database, and retrieves relevant context to generate accurate answers.
The system uses the following components:
Ensure Docker has access to your GPU. You need:
--gpus=all flag supportTech Stack: JavaScript 57.7%, C# 40.5%, CSS 0.8%, Dockerfile 0.7%, HTML 0.3%
Last Commit: 2/18/2026
Commits: 162
RSTracker helps coaching staff make data-driven decisions about player load management. By tracking daily RPE (Rating of Perceived Exertion) and wellness scores across a squad, the application calculates key performance indicators such as training load volume, intensity, and the Acute:Chronic Workload Ratio (ACWR) -- a widely recognized metric for assessing injury risk.
The platform is designed around the concept of league weeks (7-day windows), allowing staff to review and compare data on a week-by-week basis aligned with the competitive schedule.
Player Management
RPE Tracking
Wellness Monitoring
ACWR Analysis
Data Visualization
Weekly Data Views
RPE Bar Chart -- daily training load visualization
RPE Norm Chart -- actual loads compared against daily reference norms
Wellness Chart -- daily wellness score overview
ACWR Analysis -- workload ratio trends across multiple weeks
Player Management -- squad roster administration
Player Data, RPE, Wellness and Management -- combined data entry view
RPE is a subjective measure of how hard a player perceives a training session to be. When combined with session duration, it produces the session RPE or total training load:
Players self-report four metrics daily, each on a 1-7 scale:
| Metric | Description |
|---|---|
| Muscle Status | Perceived muscle soreness and readiness |
| Recovery Status | General sense of physical recovery |
| Stress | Mental and emotional stress levels |
| Sleep | Sleep quality and duration |
The total wellness score ranges from 4 to 28. The platform also calculates a Wednesday-Thursday-Friday average, commonly used to assess recovery state heading into match day.
The ACWR compares the current week's training load against the rolling average of the previous four weeks:
| ACWR Range | Interpretation |
|---|---|
| Below 0.8 | Undertraining -- potential detraining risk |
| 0.8 - 1.3 | Safe zone -- optimal load management |
| 1.3 - 1.5 | Caution -- elevated injury risk |
| Above 1.5 | Danger zone -- high injury risk |
The system includes built-in daily RPE norms for a typical training week to compare against actual loads:
| Day | Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|---|
| Reference RPE | 300 | 600 | 580 | 110 | 220 | 760 | 0 |
| Technology | Purpose |
|---|---|
| React 19 | UI framework |
| Vite | Build tool and dev server |
| React Router DOM | Client-side routing |
| React Bootstrap / Bootstrap 5 | UI component library and styling |
| Chart.js + react-chartjs-2 | Data visualization and charting |
| chartjs-plugin-datalabels | Chart label overlays |
| MSAL React + MSAL Browser | Microsoft Entra ID authentication |
| date-fns | Date manipulation and formatting |
| react-datepicker | Date selection component |
| react-select | Enhanced dropdown selects |
| react-toastify | Toast notifications |
| react-spinners | Loading indicators |
| Technology | Purpose |
|---|---|
| .NET 9 / ASP.NET Core | Web API framework |
| Entity Framework Core 9 | ORM and database migrations |
| PostgreSQL (via Npgsql) | Relational database |
| JWT Bearer Authentication | API security |
| Swashbuckle / Swagger | API documentation |
| Newtonsoft.Json | JSON serialization |
| Azure Key Vault | Secrets management |
| Azure Blob Storage | Structured operation logging |
| In-Memory Cache | Response caching with TTL-based invalidation |
| Technology | Purpose |
|---|---|
| Docker | Containerization with multi-stage builds |
| Nginx | Frontend reverse proxy and SPA routing |
| Azure Container Apps | Cloud hosting |
| Azure Key Vault | Centralized secrets management |
| Azure Blob Storage | Append-style daily log files |
| Technology | Purpose |
|---|---|
| xUnit | Test framework |
| Testcontainers | Integration testing with real PostgreSQL instances |
The project uses GitHub Actions for continuous integration and deployment. A workflow is triggered on every push to the main branch and performs the following steps:
This ensures that every merge to main is automatically tested, containerized, and deployed to production.
RSTracker uses Microsoft Entra ID (formerly Azure Active Directory) for authentication.
Authorization: Bearer {token} headerThe test suite uses xUnit with Testcontainers to spin up real PostgreSQL instances during integration tests, ensuring database operations are tested against actual database behavior rather than mocks.
Test coverage includes:
| Test File | Coverage |
|---|---|
| PlayerHelperTests | Player CRUD operations and data retrieval |
| RPEManagerTests | RPE calculations, weekly aggregation, volume, and intensity |
| WelnessManagerTests | Wellness scoring, weekly summaries, and mid-week averages |
Azure Blob Storage logging is mocked during tests to isolate database-focused assertions.
All rights reserved.
Tech Stack: JavaScript 49.4%, Python 36.6%, Shell 6.7%, Dockerfile 4.7%, CSS 1.9%, HTML 0.8%
Last Commit: 2/22/2026
Commits: 71
Create your own Solana SPL token in under two minutes, directly from your browser.

Fill in your token details, connect your Phantom wallet, and pay 0.1 SOL. The app handles everything else — uploading your logo to IPFS, minting the token on Solana mainnet, and sending it straight to your wallet.
Payment & validation — after you sign the transaction, the backend verifies it on-chain via the Solana RPC. It checks that the transaction is confirmed, less than 5 minutes old, and that the payment went to the correct recipient address. If the RPC is slow, it retries up to 10 times before giving up.
IPFS upload — your logo and a metadata JSON file are uploaded to Pinata. The metadata URI is what gets attached to the token on-chain.
Token minting — the backend runs the Solana CLI and spl-token CLI to create the token with the Token-2022 program (TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb), initialize on-chain metadata, mint the supply, and transfer it to your wallet. Each CLI command is retried up to 5 times on failure.
Cleanup — temporary files are deleted after minting. IPFS pins and logs older than 1 hour are automatically purged by a background cleanup job.
| Layer | Tech |
|---|---|
| Frontend | React 19, Vite, React-Bootstrap |
| Wallet | @solana/wallet-adapter (Phantom only) |
| Blockchain | Solana mainnet via QuickNode RPC |
| Backend | FastAPI (Python), Uvicorn |
| IPFS | Pinata |
| Minting | Solana CLI + spl-token CLI (Token-2022) |
| Logging | Azure Files |
| Hosting | Azure Container Apps (backend) |