A cloud-native task tracker built with:
- Asgardeo — Identity & authentication (WSO2)
- Choreo — Cloud deployment platform (WSO2)
- Ballerina — Backend REST API (WSO2's own language)
- React + Vite — Frontend SPA
wso2-task-tracker/
├── backend/
│ ├── Ballerina.toml # Ballerina package config
│ └── service.bal # REST API (8 endpoints)
├── frontend/
│ ├── src/
│ │ ├── App.jsx
│ │ ├── authConfig.js # Asgardeo config
│ │ ├── hooks/
│ │ │ ├── useApi.js # API calls with JWT auth
│ │ │ └── useTasks.js
│ │ ├── pages/
│ │ │ ├── LandingPage.jsx
│ │ │ ├── Dashboard.jsx
│ │ │ └── TasksPage.jsx
│ │ └── components/
│ │ └── Layout.jsx
│ ├── .env.example
│ └── package.json
└── .choreo/
├── backend-component.yaml
└── frontend-component.yaml
- Go to https://asgardeo.io and sign up
- Create an Organization (e.g.
taskflow-org) - Go to Applications → New Application → Single Page Application
- Name:
TaskFlow - Allowed redirect URL:
http://localhost:5173 - Copy the Client ID
- In User Attributes, enable
emailanddisplayName
cd frontend
cp .env.example .env.localEdit .env.local:
VITE_ASGARDEO_ORG_NAME=your-org-name
VITE_ASGARDEO_CLIENT_ID=your-client-id
VITE_APP_URL=http://localhost:5173
# Install Ballerina: https://ballerina.io/downloads/
cd backend
bal run
# API running at http://localhost:8090cd frontend
npm install
npm run dev
# App running at http://localhost:5173- Push this repo to GitHub
- Go to https://console.choreo.dev
- Create a Project → Add Component
- Type: Service
- Build pack: Ballerina
- Build context:
backend/ - After deploy, copy the Service URL
- Type: Web Application
- Build pack: Node.js
- Build context:
frontend/ - Build command:
npm run build - Output directory:
dist - Add environment variables in Choreo dashboard:
VITE_ASGARDEO_ORG_NAMEVITE_ASGARDEO_CLIENT_IDVITE_API_URL→ paste the backend service URLVITE_APP_URL→ the Choreo web app URL
In Choreo dashboard → your web app → Security → select your Asgardeo org
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/health |
Health check |
| GET | /api/v1/tasks |
List user's tasks |
| GET | /api/v1/tasks/stats |
Task statistics |
| POST | /api/v1/tasks |
Create a task |
| PUT | /api/v1/tasks/{id} |
Update a task |
| DELETE | /api/v1/tasks/{id} |
Delete a task |
All endpoints (except health) require a valid Asgardeo JWT.
- 🔐 Secure login via Asgardeo (SSO, Google, username/password)
- 📊 Dashboard with real-time stats and completion tracking
- ✅ Full CRUD — create, edit, delete tasks
- 🎯 Priority levels (High / Medium / Low)
- 📅 Due dates with overdue detection
- 🔍 Filter and search tasks
- ☁️ Deployed entirely on WSO2 Choreo
| Layer | Technology |
|---|---|
| Identity | WSO2 Asgardeo |
| Deployment | WSO2 Choreo |
| Backend | Ballerina 2201.8.x |
| Frontend | React 18 + Vite 5 |
| Auth SDK | @asgardeo/auth-react |
| Styling | CSS Modules |