# Rúben Cipriano - Full-Stack Software Developer > Full-stack developer with 4+ years building scalable web apps for banking, public-sector and enterprise clients. React, Next.js and TypeScript on the front end; C#/.NET and Node.js on the back end. Owns payment and billing domains together with the concurrency and security work that protects them, and mentors junior developers. This file is generated from the same data that renders the website and both CV PDFs, so the three are always consistent. Source: cv/build.mjs. ## About - Name: Rúben Cipriano - Role: Full-Stack Software Developer - Location: Lisbon, Portugal - Email: rubencipriano13@gmail.com - Phone: +351 962 860 039 - Website: https://rubencipriano.top - LinkedIn: https://linkedin.com/in/ruben-cipriano - GitHub: https://github.com/RubenCipriano ## Summary Full-Stack Software Developer (React and .NET) with 4+ years building scalable web applications for banking, fintech, public-sector and enterprise clients. Front end in React, Next.js, Angular and TypeScript; back end in C#/.NET, ASP.NET Core and Node.js with REST and SOAP APIs and SQL Server. Owns payment and billing domains end to end, along with the concurrency, idempotency and security-remediation work that keeps them correct - from optimistic concurrency control to structured vulnerability remediation. Rescued a stalled banking integration to production and mentors interns and junior developers in Agile teams. ## Skills - Languages: TypeScript 5, JavaScript (ES2022), C# 12, Java, SQL, HTML5, CSS3 - Front-End: React 19, Next.js 15, Angular 20, Tailwind CSS 3.4, SCSS, Bootstrap 5.3 - Back-End: ASP.NET Core / .NET 8, Node.js 22, Express, REST, SOAP, Entity Framework Core 9, LINQ, Kafka, CQRS - Security & Auth: Keycloak, OAuth 2.0 / OpenID Connect (OIDC), next-auth 4, JWT, Vulnerability remediation (CVE / CWE), Session management, Optimistic concurrency & idempotency - Domain: Payment gateway integration, Billing & accounting documents, Multi-party workflows, Public-sector e-government - Databases: SQL Server, MySQL, PostgreSQL, Redis - DevOps & Cloud: Docker, Kubernetes, Jenkins, Azure DevOps, AWS, CI/CD (Continuous Integration/Continuous Delivery), Git, SVN - Testing & Practices: Jest 30, NUnit, Agile/Scrum, OOP, SOLID, Code Review ## Languages - Portuguese: Native - English: C1, professional working proficiency - Spanish: Basic to intermediate ## Experience - Full-Stack Developer - Growmate / Accenture (client: IRN), May 2025 - Present, Oriente, Lisbon, Portugal. Own the payment domain end to end - Multibanco reference, MB WAY, credit card, TPA, cheque and cash across both online and in-person registry-office channels - together with exemptions, urgency fees, cost-rule pricing and automatic rejection on non-payment. Carry the largest share of the platform's payment backlog of any engineer on the team. Built the accounting-document layer that payments depend on: billing data and receipt issuance, collection documents, debit and credit notes, request proofs, and the cash-sheet register - a recurring source of correctness bugs across every registry lifecycle. Delivered a tracked security-remediation backlog of 20+ findings spanning authentication and session handling, upload validation, error disclosure and access control, alongside CVE-driven runtime and dependency upgrades and a migration to next-auth. Implemented optimistic concurrency control across the request and payment flows - versioning, guarded state transitions and idempotency - eliminating duplicate submissions and double payments under concurrent use. Built and maintain the three front-office areas - public, reserved and collaborator - with their backend-for-frontend services, collaborator authentication and profile-based context switching, plus the shared React component libraries consumed across the platform, built on Portugal's official AMA Agora government design system. Shipped multi-party request flows (representative nomination, action blocking for represented parties, participant summaries) and composite requests across all three areas. Refactored the shared service-step flow - the component layer every registry service renders through - standardizing data fetching and state handling so the public, reserved and collaborator areas consume one consistent contract instead of three divergent ones. Integrated Keycloak (OAuth 2.0 / OIDC) with Portugal's Chave Móvel Digital (CMD) government identity and the payment gateway; Kafka and Redis on the C#/.NET back end; GDPR-compliant analytics and cookie consent; Docker to Kubernetes delivery with Jenkins CI/CD; mentor interns and junior developers in an Agile/Scrum team. - Full-Stack Developer - Neotalent Conclusion (client: VORTAL), Jun 2024 - May 2025, Lisbon, Portugal. On Operations Team II - the escalation tier that fixes the real underlying defects, not first-line unblocking - diagnosed, resolved and tested complex production incidents across C#/ASP.NET services and React UIs, minimizing downtime on a high-availability public-procurement platform. Shipped full-stack features spanning SQL Server data access through to the React interface, and refactored legacy modules for performance and maintainability. Built and optimised Azure DevOps CI/CD pipelines, and supported SLA compliance and incident-response efficiency alongside operations and infrastructure teams. - Back-End Developer - VIA Consulting S.A. (client: Ageas Seguros (Millennium BCP, ActivoBank, SIBS, VISA)), Jan 2023 - Jun 2024, Lisbon, Portugal. Single-handedly rescued a stalled, non-functional integration project - rebuilt the C#/Java service layer connecting Millennium BCP and Ageas (REST + SOAP), delivered it to production, and restored a blocked banking-insurance data pipeline. Built and shipped online pet insurance end to end for Millennium BCP - a product the bank previously lacked - integrating it into the existing MBCP mobile app architecture, now live for customers. Developed automated batch programs for VISA that removed manual effort from report generation, and file data-mining solutions for SIBS that extract and analyse large-scale financial files. Automated detection and processing of financial files (movements, transfers) with Rundeck jobs persisting to MySQL / SQL Server, wrote NUnit tests, and managed delivery through Git, SVN and Azure DevOps CI/CD under financial data-security standards. - Front-End Developer - Intern - Emvenci Business Services, Mar 2022 - Aug 2022, Lisbon, Portugal. Rebuilt UI components in Angular + TypeScript + SCSS following Atomic Design for reuse and visual consistency. Fixed bugs and improved front-end maintainability and scalability through a structured component architecture. Collaborated with the development team in a Git + CI/CD workflow to ship UI improvements. - Software Developer - Intern - Arquiconsult, Mar 2020 - Aug 2020, Odivelas, Lisbon, Portugal. Built a back-office application with C#, ASP.NET Core and Entity Framework, including Razor Pages UI. Developed APIs consumed by a Xamarin mobile client and supported the mobile team on the cross-platform app. Integrated the Google Maps API (with jQuery) to map parks and trees, persisting to a SQL Server database. ## Projects - OpenHours - Team Time Tracking (https://horas.zerodown.top/) A multi-user, self-hosted time-logging app built on top of OpenProject. Teams log hours against projects and tasks; entries are drafted locally and synced to OpenProject, with a policy-aware calendar, weekly targets and per-user stats. In production use at IRN. Stack: React 18, TypeScript 5.7, Vite 6, Tailwind CSS 3.4, Fastify 5, PostgreSQL, Redis, OpenProject API - Income Planner - Portugal (https://finances.zerodown.top/) A Portuguese income & tax planner that compares working as an employee, freelancer or company (Lda.) side by side with current tax rules - including Coverflex benefits, IRS Jovem, break-even, salary/dividend optimisation and investment projections. Exports to PDF and Excel. Stack: Svelte 5, Vite 6, PocketBase 0.27, Zod 4, Charts, Google OAuth - Our Weddings - Wedding Site Platform (https://wedding.zerodown.top/) A multi-tenant platform where each couple gets their own wedding site under its own slug: an invitation with a QR code, RSVP collection, a shared photo gallery with chunked uploads, and a live guest quiz. Admin panel per site, transactional email, scheduled backups and a maintenance mode, with hCaptcha on the public forms. Stack: Next.js 16, React 19, TypeScript 5, Tailwind CSS 4, Auth.js, Go 1.26, Gin, GORM, PostgreSQL, JWT, hCaptcha, Docker - Discord Music Bot + Dashboard (https://bot.zerodown.top/) A multi-guild, MEE6-style Discord bot: play and queue music from YouTube, set up Twitch live notifications and manage feature modules - all configured through a web dashboard with Discord sign-in. Stack: Next.js 15, React 19, TypeScript 5.7, discord.js 14, Node.js, SQLite, Docker - ZeroDown (https://zerodown.top/) A homepage for my personal brand and self-hosted homelab, with live service status. Built with Node.js, Express and TypeScript. Stack: Node.js, Express, TypeScript - Developer Portfolio (https://rubencipriano.top) This portfolio site - a server-rendered Angular 20 app with a light/dark theme, prerendering for SEO, and data-driven sections. Built with Bootstrap and custom SCSS. Stack: Angular 20, TypeScript 5.8, SCSS, Bootstrap 5.3, SSR ## Education - Licenciatura (BSc) coursework - Computer Software Engineering - ISEL - Instituto Superior de Engenharia de Lisboa (2023 - 2024) - CTeSP - Web & Mobile Application Development - ISTEC (2020 - 2022) - Technician in Management & Programming of Computer Systems - INETE - Instituto de Educação Técnica (2017 - 2020) ## Writing - Your CV parses worse than you think: building ATS-safe PDFs with headless Chrome (2026-08-31) https://rubencipriano.top/blog/ats-safe-pdf-headless-chrome Letter-spaced headings, wrapped URLs and two-column layouts quietly destroy a CV during text extraction. A generated pipeline with assertions catches all three. - Feed: https://rubencipriano.top/rss.xml ## CV downloads - ATS-optimised (single column): https://rubencipriano.top/assets/files/cv.pdf - Two-column design version: https://rubencipriano.top/assets/files/cv-2col.pdf