About Me
Hello! I'm João, a full stack senior software engineer with 8+ years in analysis, design, development, testing and implementation of various web applications. Well versed in the .NET/C# framework and experienced in multiple JavaScript frameworks.
I follow SOLID Architecture Principles.
I'm currently on the engineering team at Ludopoli where I work on a wide variety of interesting and meaningful projects on a daily basis.
Here are a few technologies I've been working with recently:
- C#
- .NET Core
- ASP.NET MVC
- HTML & (S)CSS
- JavaScript
- TypeScript
- Angular
- BackboneJS
- MarionetteJS
- React
- WPF
- SQL
- MongoDB
- Elastic Search
- PowerShell
- TeamCity
- Octopus Deploy
Where I've Worked
Senior Software Developer @ Ludopoli
Feb 2016 - Present
- Refactored a legacy CMS application into a modular architecture, composed by a .NET Core WebAPI, a Core backend (implemented using a Domain-Driven Design (DDD) architecture, with dependency injection via AutoFac and a MongoDB Repository) and a web app using BackboneJS, MarionetteJS, React and TypeScript.
- Created a client website that uses the above CMS, implemented with a distributed data cache system. Used Razor views, custom tag helpers, view components and TypeScript.
Tech Lead @ Celfinet
Aug 2011 - Feb 2016
- Led a team of developers to implement an ETL pipeline that extracted, transformed and aggregated mobile network raw data. Used the pipes & filters pattern in a micro services architecture, implemented with RabbitMQ, .NET Framework and MongoDB. Deployed in Azure Cloud.
- Developed and maintained a variety of web and desktop apps using .NET C#, Entity Framework, MSSQL, JavaScript and WPF.
- Communicated and collaborated with multi-disciplinary teams of engineers, designers, clients, and stakeholders on a daily basis.
Some Things I've Built
Featured Project
Project Syndicate Website
Website with over 350k unique visitors a month, implemented with a distributed data cache system using MongoDB.
Has an online store where you can buy magazines and subscribe to premium content, when not subscribed you'll see a paywall. It accepts payments via credit card (using stripe) and paypal.
It also has an archive search area where you can perform simple and advanced searches (using query operators), this is implemented with Elastic Search.
- ASP.NET Core MVC
- Razor
- Typescript
- Distributed Cache
- Elastic Search
- MongoDB
- SignalR
Featured Project
Flowli CMS
Flowli is a CMS platform, besides being used to publish new content in a website and engage with an audience, it also allows for complex tracking, content analysis and subscription based content monetization.
I was part of the development team that rebuilt it from a monolithic app to an all new modular and component based architecture using Backobone.js with Marionette.js, Typescript and most recently React.js
- BackboneJS
- MarioneteJS
- ReactJS
- Typescript
Featured Project
Flowli WebAPI
Core Web API consumed by Flowli CMS and Project Syndicate Website.
Has a Core Backend implemented using a Domain-Driven Design (DDD) architecture, with dependency injection via AutoFac and a MongoDB Repository.
Contains .NET and Typescript WebApi clients to be consumed as NuGet packages from other applications.
Has Integration Tests and Unit Tests, implemented using Xunit(.Net) and Jasmine(Typescript).
- .NET Core Web API
- MongoDB
- Elastic Search
- AutoFac
- Xunit
- Jasmine
Featured Project
Vismon Observer Engine
I was the tech leader responsible for the implementation of an ETL pipeline that extracted, transformed and aggregated mobile network raw data, so it could be in a more meaningful format for visual representation.
The pipeline was implemented using the pipes & filters pattern in a micro services architecture, the technologies used to achieve this were RabbitMQ, .NET Framework and MongoDB.
Elastic Search and Kibana were used to monitor the whole system, using custom made dashboards in Kibana.
- Big Data
- .NET API
- MicroServices
- RabbitMQ
- MongoDB
- Elastic Search
- Kibana
Other Noteworthy Projects
view the archiveNetwork Report APP
CRM application that uses smartphones for clients to report network issues.
Involved in all areas of the project, from gathering customer requirements, to create specifications with the Product Owner, to develop new features and maintaining the application Backoffice.
Online Store
Configured an online store based on WordPress and developed PHP scripts to integrate it with a BackOffice developed from scratch in Angular 2.
This app communicates with an ASP.NET web API to process the payments and store the orders in an MSSQL database.
Implemented a payment processor using Unicre and SIBS APIs (Portuguese payment companies) and developed a solution to integrate orders data into the client’s BackOffice.
Strapi .NET SDK
Strapi is a Headless CMS. I've implemented an SDK in .NET C# to facilitate usage in .NET apps. This project is available as open source on github.
TVCine Website
Website to visualize all the movies to be played in TVCine TV Channel.
Implemented an Excel parser service to import all movie content, and a box (cloud provider) api client to download images and upload them to Strapi CMS.
Created a .NET Web API for more complex queries and aggregations.
Event Planner Web App
Worked with a team of developers to create a single page app using Angular 2. This app was created to replace an MS ACCESS process.
It enables staff members of a company to create Events and then invite users based on their preferences. The app communicates with an ASP.NET Core web API that uses a MongoDB database.
It also uses Amazon API to send SMS to its users.
Book Reservations Web App
Web app to allow parents to reserve school books.
Implemented an Angular single page application that communicates with a .Net Web API to obtain the books data and to perform the reservations.
Also implemented an Excel import service to extract books from excel files and store them in an MSSQL database.
What's Next?
Get In Touch
Although I'm not currently looking for freelance opportunities, my inbox is always open. Whether for a potential project or just to say hi, I'll try my best to answer your email!