Task Scheduler

A simple task scheduler implemented with a C# .NET backend, AWS services, and React frontend.

Spring 2025

About the Project

In this project, I created a task scheduler web application using a combination of AWS services, a C# .NET backend, and a React Vite frontend. This system allows users to create tasks, store them in DynamoDB, and interact with the application via a clean, user-friendly interface. Scheduled task reminders are automatically sent via email to the user.

This project was a great way to explore cloud-native technologies and how they can be used together to build scalable applications. AWS Lambda allowed for serverless execution, and DynamoDB provided a cost-effective, highly available database solution. The combination of React and Vite for the frontend enabled a fast and responsive user interface, while the EmailService kept users informed in real time.

With this architecture, I was able to build a task scheduler that’s highly scalable, serverless, and can easily handle increasing traffic as users add tasks to their schedules.

GitHub Repository: github.com/holdencasey7/TaskScheduler

Technologies Used

    • DynamoDB: A fully managed NoSQL database that provides fast and predictable performance with seamless scalability. I used DynamoDB to store tasks and their related data, such as name, description, execution time, and completion status.

    • Lambda: An event-driven compute service that automatically runs the backend functions in response to HTTP requests. I created a Lambda function to handle incoming API requests, such as adding a task to the database, as well as to run the email notification service on a set schedule.

    • API Gateway: Used to expose the Lambda functions as HTTP endpoints, enabling interaction between the frontend and the backend.

    • AWS Secrets Manager: Used to store email credentials for use in the EmailService.

    • I used Amazon.Lambda.Core and Amazon.DynamoDBv2 libraries to interact with AWS services in my backend.

    • The backend handles API requests using APIGatewayProxyRequest and APIGatewayProxyResponse, connecting to DynamoDB to manage task data. The Lambda function is triggered via API Gateway and writes data to DynamoDB, while also managing user input validation and error handling.

    • I integrated an EmailService into the application to send email notifications to users about task-related events. For example, when a task is scheduled to be reminded, an email reminder is sent.

    • The frontend was built using React with Vite using TypeScript for fast and optimized development.

    • The user can select a date/time for the task, which is then sent to the backend in the correct format for DynamoDB.

    • React handles the dynamic state of the UI, and Axios is used to send POST requests to the Lambda-backed API

Challenges and Learning

Integrating AWS services like DynamoDB and Lambda required careful configuration of IAM roles and permissions to ensure secure interactions between the frontend, API Gateway, Lambda, and DynamoDB.

Debugging AWS Lambda functions and managing data flow between the frontend and backend involved troubleshooting API Gateway mappings and JSON formatting.

Previous
Previous

Diabetes Likelihood ML Model

Next
Next

CRC Tracker