DayWeave turns a messy task list into a realistic daily schedule. It considers available time, energy, priorities, task duration, and fixed constraints, then returns a structured plan with a north-star task, time blocks, visible trade-offs, and immediate next actions.
Built for the AWS Builder Center Build a Productivity App Weekend Challenge.
Deployment status: Offline by owner request. The complete AWS deployment configuration remains available below.
flowchart LR
U[User] --> A[Static web app\nAWS Amplify Hosting]
A -->|POST /plan| G[Amazon API Gateway\nHTTP API]
G --> L[AWS Lambda\nvalidation + prompt]
L --> Q[Amazon DynamoDB\ndaily usage quota]
L -->|Converse API| B[Amazon Bedrock\nAmazon Nova Lite]
B --> L --> G --> A
The browser never receives AWS credentials. Lambda validates and bounds input, atomically checks a DynamoDB daily quota, invokes Amazon Nova Lite through Bedrock, validates the model response, and returns only the structured plan. API Gateway applies request throttling. DynamoDB stores only a date-keyed request count—not task content.
The reusable diagram source is in docs/architecture.mmd, with a publication-ready SVG export.
- Tasks with optional duration and priority:
Prepare demo | 60 | high - Configurable start time, finish time, and energy level
- Fixed commitments and personal constraints
- Structured schedule rather than generic chat
- Explicit deferred-work and conflict warnings
- Concrete “start now” actions
- Copyable plan
- Responsive, keyboard-accessible interface
- Local deterministic demo mode when no API URL is configured
- Hard cap of 250 valid Bedrock requests per day
- Loading, validation, rate-limit, network, and service-failure states
Prerequisites: Node.js 22+ and npm 10+.
npm install
cp .env.example .env
npm run devOpen http://localhost:5173. With VITE_API_URL blank, DayWeave uses its deterministic local planner. This is intentionally labeled “Demo intelligence”; it makes UI development and judging evidence possible without pretending that the local algorithm is Amazon Bedrock.
Run all checks:
npm run checkProduction preview:
npm run build
npm run previewPrerequisites:
- An AWS account and credentials configured locally
- AWS CLI and AWS SAM CLI
- Amazon Bedrock model access in the selected region
- A region that supports
amazon.nova-lite-v1:0(for exampleus-east-1)
AWS now automatically enables access to many serverless models on first invocation, but account and region behavior can change. Confirm model availability in the Bedrock console before deploying.
sam build
sam deploy --guidedSuggested first-deployment answers:
- Stack name:
dayweave-api - Region:
us-east-1 - Parameter
AllowedOrigin:*for the first test only - Parameter
BedrockModelId:amazon.nova-lite-v1:0 - Allow SAM to create IAM roles: yes
- Save arguments to
samconfig.toml: yes
Copy the ApiUrl stack output into .env.production:
VITE_API_URL=https://YOUR_API_ID.execute-api.us-east-1.amazonaws.com
Rebuild the frontend. After Amplify provides the final public URL, redeploy the backend with AllowedOrigin set to that exact origin instead of *.
- Push this repository to a public GitHub repository.
- In AWS Amplify, choose Deploy an app → GitHub and select the repository.
- Amplify will detect
amplify.yml. - Add
VITE_API_URLas a build environment variable using the API output above. - Deploy and test the generated Amplify URL in a private browser window.
- Restrict the backend
AllowedOriginto the Amplify origin and test again.
The deployed frontend itself satisfies the “at least one AWS service” requirement through Amplify Hosting; the production AI flow additionally uses API Gateway, Lambda, DynamoDB, and Bedrock.
POST /plan
{
"tasks": "Finish launch brief | 75 | high\nReply to email | 20 | low",
"startTime": "09:00",
"endTime": "17:30",
"energy": "steady",
"constraints": "Team call from 2:00–2:30 PM"
}Input limits: 3,000 task characters, 1,000 constraint characters, 20 parsed tasks in demo mode, and a planning window between 30 minutes and 16 hours. The Lambda response uses Cache-Control: no-store.
Vitest covers task parsing and prioritization, empty input, invalid time windows, overflow/deferred work, backend validation, fenced model output, and malformed model output. ESLint, TypeScript, Prettier, tests, and the production build are combined in npm run check.
Manual checks before submission are listed in docs/submission-checklist.md.
The stack uses consumption-based services. Amplify Hosting, API Gateway, Lambda, DynamoDB, and Bedrock may be covered partly by AWS Free Tier or promotional credits depending on account age, region, and current AWS terms. Bedrock model inference is usage-priced. The production stack caps valid model calls at 250 per UTC day, caps model output at 1,200 tokens, and throttles the public API. An AWS Budget alert is still recommended because AWS does not offer a universal hard dollar spending cap. Remove resources after judging. Do not enter secrets, regulated data, or confidential employer information into the demo.
The application does not create a database or intentionally persist tasks. AWS service logs and telemetry may still contain request metadata. The Lambda deliberately logs only error type—not task content.
Delete the Amplify app in the Amplify console, then remove the backend:
sam delete --stack-name dayweave-api --region us-east-1Confirm in CloudFormation that the stack is gone. Check CloudWatch log groups and delete retained logs if necessary. Remove any related AWS Budget only if it is no longer useful.
- Bedrock
AccessDeniedException: confirm the model is available in the selected region and that the deployed Lambda role containsbedrock:InvokeModelfor the selected model. - Browser CORS error: make
AllowedOriginexactly match the frontend origin, includinghttps://and without a trailing slash, then redeploy. - 502 response: inspect the Lambda log stream for the error type. Common causes are model availability or a malformed model response.
- Amplify builds demo mode: confirm
VITE_API_URLis configured in Amplify and redeploy; Vite embeds it at build time. - Request throttled: wait briefly. The low initial throttle protects a public challenge demo from unexpected cost.
- Builder Center article
- Architecture diagram
- Demo and screenshot guide
- Submission checklist
- Launch copy
MIT