A fully serverless backend application that provides CRUD APIs for managing to-do tasks.
This project uses AWS Lambda, API Gateway, and DynamoDB to build a scalable, cost-efficient, and maintenance-free backend service.
- β Add Task (POST)
- π Get All Tasks (GET)
- βοΈ Update Task (PUT)
- β Delete Task (DELETE)
Fully serverless backend built using AWS Lambda, API Gateway, and DynamoDB.
-
Four separate Lambda functions implementing full CRUD operations:
- Add Task (POST)
- Get Tasks (GET)
- Update Task (PUT)
- Delete Task (DELETE)
-
DynamoDB used as a fast, scalable, and cost-efficient NoSQL database
-
API Gateway endpoints created for each operation
-
Clean and well-structured project layout for easy understanding and contribution
-
No server management required β automatically scales with usage
-
Secure and isolated execution using AWS IAM roles and Lambda permissions
-
Lightweight, cost-efficient, and suitable for showcasing cloud and backend skills
The project follows a simple and clean folder structure to keep Lambda functions organized.
Serverless-ToDo-App/
β
βββ lambdas/
β βββ add_task.py
β βββ get_tasks.py
β βββ update_task.py
β βββ delete_task.py
β
βββ .gitignore
βββ README.md
Each Lambda function is separated for clarity and easier maintenance. The .gitignore file prevents unnecessary local files from being pushed to the repository.
Cloud Provider:
- AWS (Amazon Web Services)
Services Used:
- AWS Lambda β For running backend logic without servers
- Amazon API Gateway β For creating REST API endpoints
- Amazon DynamoDB β NoSQL database for storing tasks
- AWS IAM β For permissions and secure access control
Language:
- Python 3.12
Tools:
- Postman (for API testing)
- Git & GitHub (for version control and hosting the project)
The Serverless To-Do App uses a fully managed, event-driven architecture on AWS.
Each operation (Add, Get, Update, Delete) is handled by a separate Lambda function, and all requests flow through API Gateway.
- The client sends an HTTP request to an API Gateway endpoint.
- API Gateway triggers the corresponding AWS Lambda function.
- The Lambda function processes the request and interacts with DynamoDB.
- DynamoDB stores or retrieves the task data.
- The Lambda function returns a response back through API Gateway to the client.
-
Amazon API Gateway
Exposes REST API endpoints for all CRUD operations. -
AWS Lambda Functions
Individual functions foradd_task,get_tasks,update_task, anddelete_task. -
Amazon DynamoDB
NoSQL database used for storing all To-Do tasks. -
IAM Roles & Permissions
Secure access between Lambda and DynamoDB.
Below is the architecture diagram representing the flow of the Serverless To-Do App.
- POST
/add - Body:
{
"taskId": "task-1",
"title": "Buy groceries",
"status": "pending"
}- Response:
{
"message": "Task added successfully!"
}-
GET
/tasks -
Response:
{
"tasks": [
{
"taskId": "task-1",
"title": "Buy groceries",
"status": "pending",
"createdAt": "2025-12-05T10:00:00Z"
}
]
}-
PUT
/update -
Body:
{
"taskId": "task-2",
"title": "Pay electricity bill (updated)",
"status": "completed"
}- Response:
{
"message": "Task updated successfully!"
}-
DELETE
/delete -
Body:
{
"taskId": "task-1"
}- Response:
{
"message": "Task deleted successfully!"
}Replace the base URL with your API Gateway Invoke URL.
This project is fully serverless and hosted on AWS. To deploy or run it yourself, follow these steps:
git clone https://github.com/Nishika10/Serverless-ToDo-App.git
cd Serverless-ToDo-App-
Create four Lambda functions on AWS:
-
Add Task
-
Get Tasks
-
Update Task
-
Delete Task
-
-
Copy the respective .py file from the lambdas/ folder into each function.
-
Create a REST API
-
Add resources /add, /tasks, /update, /delete
-
Integrate each resource with its corresponding Lambda function
-
Deploy the API to a stage (e.g., dev) to get your Invoke URLs
- Use Postman or curl with the provided endpoints to ensure everything works correctly.
Once deployed, this setup automatically scales, requires no server management, and can be accessed from anywhere.
Example of adding a new task using the /add endpoint.

Example of retrieving all tasks using the /tasks endpoint.

Stored tasks visible in the DynamoDB table.

This project is licensed under the MIT License - see the LICENSE file for details.
Nishika Jaiswal
Aspiring Cloud & DevOps Engineer
