/* @component-map * App — Main container, tab navigation [app.jsx] * StandupForm — Form for submitting daily standup [components/StandupForm.jsx] * DigestView — Daily digest of all team standups [components/DigestView.jsx] * HistoryView — Browse past days' standups [components/HistoryView.jsx] * @end-component-map */ // DEPLOY_CONFIG: {"cron": [{"name": "daily-standup-reminder", "schedule": "0 9 * * *", "action": "event", "config": {"event_type": "standup.reminder.daily"}}, {"name": "weekly-standup-summary", "schedule": "0 9 * * 1", "action": "event", "config": {"event_type": "standup.summary.weekly"}}], "triggers": [{"name": "send-standup-reminder-email", "on": "event", "event": "standup.reminder.daily", "actions": [{"type": "email", "to": "team_members_without_standup", "subject": "Reminder: Please submit your standup", "body": "Hi team, this is a reminder to submit your standup for today if you haven't done so yet."}]}, {"name": "send-weekly-standup-summary-email", "on": "event", "event": "standup.summary.weekly", "actions": [{"type": "ai", "provider": "openai", "api_key_secret": "OPENAI_API_KEY", "prompt": "Aggregate all standup submissions for the past week and analyze team progress. Produce a concise team summary with: overall progress, notable patterns, recurring blockers, and any velocity changes compared to the previous week. Return a polished email-ready report addressed to the team lead."}, {"type": "email", "to": "team_lead", "subject": "Weekly Standup Summary: Team Progress & Blockers", "body": "{{$ai.output}}"}]}], "collections": [{"name": "standup_submissions", "description": "Stores daily standup submissions for history, digest views, and reminder checks.", "schema": {"type": "object", "properties": {"id": {"type": "string"}, "user_id": {"type": "string"}, "submitted_at": {"type": "string", "format": "date-time"}, "standup_date": {"type": "string", "format": "date"}, "yesterday": {"type": "string"}, "today": {"type": "string"}, "blockers": {"type": "string"}, "created_at": {"type": "string", "format": "date-time"}, "updated_at": {"type": "string", "format": "date-time"}}, "required": ["user_id", "submitted_at", "standup_date"]}}]} import { useState } from 'react'; import { useAuth } from '@deplixo/sdk'; import { StandupForm } from './components/StandupForm.jsx'; import { DigestView } from './components/DigestView.jsx'; import { HistoryView } from './components/HistoryView.jsx'; function App() { const [activeTab, setActiveTab] = useState('digest'); const { user, loading, logout } = useAuth(); if (loading) { return (

Loading standup...

); } if (!user) { return (
🔄

Async Standup

Sign in with Google to access team standups, digests, history, and team management.

e.preventDefault()}> Sign in with Google

Google OAuth is handled by Deplixo auth. Use the login flow to continue.

); } const tabs = [ { id: 'digest', label: "Today's Digest", icon: '📋' }, { id: 'submit', label: 'My Standup', icon: '✍️' }, { id: 'history', label: 'History', icon: '📅' }, ]; return (
🔄

Async Standup

{user?.name}
{activeTab === 'digest' && } {activeTab === 'submit' && setActiveTab('digest')} />} {activeTab === 'history' && }
); } // PROGRESS:sc_001:complete:Setting up the async standup shell ReactDOM.createRoot(document.getElementById("root")).render();