Recently completed a contract and currently open to .NET development, full-stack development, software engineering, and hybrid technical/instructional roles (contract or full-time).
.NET Developer • Full-Stack Developer • Instructor

Building practical, reliable software with clean and maintainable code.

I am a software developer focused on .NET development and full-stack web applications. I build responsive, production-ready systems and also work in instructional roles, helping others understand and apply real-world development practices.

.NET Backend & API Development
Full-Stack Web Applications (Frontend + Backend)
Software Engineering Clean, maintainable system design
AJ

Anmar Jarjees

Software developer and instructor focused on .NET development and full-stack web applications. I build practical, maintainable systems and contribute to technical learning environments through instruction and mentorship.

.NET C# ASP.NET Core Web APIs JavaScript Typescript Java Python PHP HTML5 CSS3 SQL Responsive Design Teaching / Instruction
About

.NET development and computer programming instruction with a focus on practical learning.

I am a Technical Instructor and .NET developer with experience in teaching and applying core software development concepts. I work with C#, ASP.NET Core, databases, and front-end technologies, focusing on building practical applications and supporting learners through structured instruction and hands-on guidance.

Developer Profile

I am a Technical Instructor and software developer with experience applying and teaching core programming concepts in web and software development environments.

My focus includes .NET development, C#, ASP.NET Core, databases, and front-end technologies, with an emphasis on practical, project-based learning and real-world application.

What I Can Help With

I support both learning environments and development work involving full-stack applications, backend systems, and web development fundamentals.

  • Build and maintain .NET / ASP.NET Core web applications
  • Develop RESTful APIs and backend services
  • Work with HTML, CSS, and JavaScript for responsive interfaces
  • Support SQL database design and integration
  • Teach and explain software development concepts in structured learning environments
Core Skills

Software Development & Full-Stack Engineering

A practical skill set covering backend development, web applications, databases, and software engineering fundamentals used in real-world projects and instruction.

01

Backend Development

Development of server-side applications, APIs, and application logic using modern frameworks.

  • C# / .NET / ASP.NET Core
  • Node.js / Express
  • Django (Python)
  • RESTful APIs
02

Frontend Development

Building responsive and interactive user interfaces for modern web applications.

  • HTML5 / CSS3
  • JavaScript / TypeScript
  • Vue.js
  • Responsive Design
03

Databases & Tools

Working with relational and NoSQL databases, development tools, and version control systems.

  • SQL Server / MySQL
  • MongoDB
  • Entity Framework Core
  • Git / GitHub / Visual Studio
Technology

Tools & Development Environment

Technologies and tools used for software development, web applications, and teaching environments.

HTML5
CSS3
Vue.js
Bootstrap
JavaScript
TypeScript
C#
.NET / ASP.NET Core
PHP
Python
Node.js
Express.js
Django
SQL Server
MongoDB
Git/GitHub
Visual Studio
VS Code
Projects & Work

Software Projects & Learning Materials

A collection of development projects and instructional materials demonstrating applied experience in software development and teaching.

.NET / Web Apps

ASP.NET Core Applications

Web applications built using C# and ASP.NET Core, focusing on backend logic, APIs, and full-stack development practices.

Full-Stack Projects

Full-Stack Web Development

Projects using frontend and backend technologies such as JavaScript, Node.js, Django, and database integration.

Teaching Materials

GitHub Programming Lectures

Structured coding examples, lecture materials, and demonstrations covering programming fundamentals, frameworks, and real-world development concepts.

Looking for a .NET or full-stack developer with instructional experience?

I am currently open to opportunities in .NET development, full-stack development, software engineering, and technical instructor roles involving programming education and applied software development.

Start a Conversation

Case Studies

Case 1: Secure Contact Form Using JavaScript, Node.js, and Express

Introduction

In this case study, we will build a modern and secure contact form using JavaScript, Node.js, and Express. The project also demonstrates how modern web applications separate frontend and backend responsibilities when handling sensitive operations such as sending emails.

  • Why traditional mailto: forms are problematic
  • Why backend processing is required
  • Common security considerations for contact forms
  • How to build a secure Contact Us form using Node.js and Express
JavaScript Code

Why This Case Study Matters

In this case study, we will cover the following key areas:

  • Real-world forms are security-sensitive
  • Frontend validation is insufficient alone
  • SMTP credentials must remain server-side
  • Backend APIs are essential in modern web applications

Technologies Used

  • HTML5
  • CSS3
  • JavaScript
  • Fetch API
  • Node.js
  • Express
  • Nodemailer

Request Flow (Architecture Overview)

The following steps describe the lifecycle of a contact form request, from the browser frontend to the backend server and email delivery process:

  1. Browser Form
  2. JavaScript fetch()
  3. HTTP Request
  4. Express Route
  5. Server-Side Validation
  6. Nodemailer
  7. SMTP Server
  8. Email Sent
  9. HTTP Response Back
  10. Frontend Success Message

Development Process

  1. Frontend Integration
    • Build HTML Form
    • Add JavaScript Validation
  2. Create Express Server
  3. Create API Endpoint
  4. Server Validation
  5. Integrate Nodemailer (Email Sending)
  6. Add reCAPTCHA
  7. Add Security Layers
  8. Deploy Application

Security Considerations

Security is a key part of this project. A contact form is often a target for spam and abuse, so we need to handle both frontend and backend security properly.

  • Frontend validation is only for user experience, not security
  • Backend must validate all incoming data again
  • Never expose SMTP credentials in the frontend code
  • Use environment variables to protect sensitive data
  • Input should always be sanitized before processing
  • Rate limiting helps reduce spam and automated abuse

Lessons Learned

  • Frontend JavaScript alone is not enough for secure applications
  • Backend APIs are required to handle sensitive operations
  • Understanding request flow helps debug real-world applications
  • Separation of frontend and backend improves security and structure
  • Environment variables are important for protecting secrets

Task Milestone

  • Express server running
  • Health check route
  • Static website served from Express
  • Contact form HTML
  • JavaScript event listener
  • Fetch API request
  • POST /api/contact endpoint
  • JSON request/response handling
  • Postman testing
  • Browser testing

Why We Need Nodemailer

To send emails from a Node.js application, we use Nodemailer, the industry-standard email library for Node.js. It is one of the most widely used email libraries in the Node.js ecosystem.

Sending email is much more complex than making a normal HTTP request. It requires:

  • SMTP handshake
  • Authentication (username/password or OAuth)
  • Email formatting (plain text or HTML)
  • Attachment support
  • Error handling and retries

Node.js does not provide these email features as built-in functionality, which is why libraries such as Nodemailer are commonly used.

Install and Configure Nodemailer

Nodemailer requires a transporter configuration:

Contact Form => Express API => Nodemailer => Transporter => SMTP Server => Email Sent

Professional Workflow (Real Industry Pattern)

Before connecting the contact form to real email delivery, it is common to test each layer independently.

  1. Test SMTP independently using /test-email
  2. Test API structure using /api/contact
  3. Connect email sending to the real contact form
  4. Remove temporary test routes (optional cleanup)

Rate Limiting (anti-spam bots)

When working with Express, we may have an endpoint such as: "POST /api/items.

By default, the endpoint can accept unlimited requests. Without protection, a spam bot could repeatedly submit requests such as:

        POST /api/contact
        POST /api/contact
        POST /api/contact
        POST /api/contact
        ...
        

This could be repeated thousands of times, which may lead to:

  • Email inbox gets flooded
  • SMTP server works harder
  • Hosting resources are wasted
  • Contact form becomes unusable

To reduce spam, we can add rate limiting. Rate limiting allows only a specific number of requests from the same IP address within a defined time window.

For example, a visitor may be allowed to submit the contact form 5 times every 15 minutes. If the limit is exceeded, the visitor must wait until the time window resets.

One of the most common solutions is to install the express-rate-limit package"express-rate-limit" using "npm install express-rate-limit". You can read more about "Understanding Express rate limit middleware".

If the user exceeded the limit, the server returns "429 Too Many Requests". We can format the result as JSON:

        {
            "success": false,
            "message": "Too many contact form submissions. Please try again later."
        }
        

Quick Review

A secure contact form should include:

  • Contact form validation
  • Email validation
  • Header injection protection
  • Rate limiting
  • SMTP credentials stored in .env

Conclusion

This case study shows how a simple contact form becomes a full-stack application when security and backend processing are included. It demonstrates the importance of handling requests properly, validating data on the server, and protecting sensitive information.

The final result is a secure and scalable contact form solution built using modern JavaScript, Node.js, Express, Nodemailer, and industry-standard security practices.

Contact

Get In Touch

I am open to opportunities in .NET development, full-stack development, software engineering, and technical instructor roles in programming and software education.

Contact Details

Location Toronto, Ontario
Availability Recently completed a contract and currently open to opportunities in .NET development, full-stack development, software engineering, or hybrid technical and instructional roles. Open to both contract and full-time positions.

Secure Contact Form Project

Secure Contact Form Illustration

Full-stack contact form implementation demonstrating secure form handling and email delivery.

  • JavaScript Fetch API for asynchronous submission
  • Node.js + Express backend
  • Input validation and sanitization
  • Nodemailer email integration
  • Rate limiting for spam protection
  • Environment variables for secure configuration

Note: This implementation requires server-side support (Node.js), which is not available on all shared cPanel hosting environments.

GitHub / Source Code