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 authenticationThe 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 boardThe 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 APIEach 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 DynamoDBTasks 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 taskEach 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 ActionsInfrastructure 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 GatewayHTTP layer exposing the endpoints and validating Cognito tokens
- DynamoDBSingle on-demand table for tasks and comments
- CognitoUser authentication with Google OAuth2, PKCE flow
- S3Hosting for the static React frontend build
- CloudFrontCDN serving the frontend with HTTPS and caching
- Route53DNS and resolution for the custom domain
- ACMManaged TLS certificate for CloudFront
- CloudFormation / CDK v2Infrastructure as code in TypeScript
Stack