Project
Personal Tasks Manager
Personal fullstack Kanban with OAuth2 authentication, AWS serverless backend, and automated CDK deployment.
View on GitHub →Objective
Fullstack serverless application for managing personal tasks through a Kanban board. The project serves as a sandbox to explore modern cloud architecture: OAuth2 authentication with AWS Cognito, serverless API with Lambda and API Gateway, single-table DynamoDB persistence, and a React frontend deployed on S3 + CloudFront. The entire infrastructure lifecycle is automated with AWS CDK v2 and GitHub Actions.
How it works
- Google authentication The user signs in with their Google account through AWS Cognito using the OAuth2 PKCE flow. Cognito issues JWT tokens that the frontend uses to authorize every API request.
- Task management on the Kanban board The React frontend displays tasks organized in columns: Backlog → Planning → Execution → Validation → Done, plus Paused and Cancelled states. Cards can be created, edited, and moved between columns.
- CRUD operations via API Each user action (create, update, move task) triggers a call to API Gateway, which routes the request to the corresponding Lambda function. JWT tokens are validated on every request.
- Persistence in DynamoDB Tasks and comments are stored in DynamoDB using a single-table design. Tasks support one-time or recurring types, with optional deadline and recurrence date fields.
- Comments per task Each task has its own comment section for notes or progress logs, stored as related items in the same DynamoDB table.
- Deployment with CDK and GitHub Actions Infrastructure is defined as code with AWS CDK v2. GitHub Actions automates the frontend build (S3 + CloudFront) and Lambda deployment on every push to main.
Task types
Tasks can be one-time (with an optional deadline) or recurring (with a recurrence date). The system includes database import/export utilities for manual backups.
AWS services
- Lambda (Node.js 24) TypeScript backend functions for CRUD operations on tasks and comments
- API Gateway HTTP layer exposing the endpoints and validating Cognito tokens
- DynamoDB Single on-demand table for tasks and comments
- Cognito User authentication with Google OAuth2, PKCE flow
- S3 Hosting for the static React frontend build
- CloudFront CDN serving the frontend with HTTPS and caching
- Route53 DNS and resolution for the custom domain
- ACM Managed TLS certificate for CloudFront
- CloudFormation / CDK v2 Infrastructure as code in TypeScript
Stack