An educational web application for ASU W.P. Carey's MRED program — instructors author real-estate development phase exercises, students complete drag-and-drop sorting with weighted scoring, per-card feedback, and a one-time correct-and-resubmit flow.
Live App: <YOUR_AMPLIFY_URL>
| Document | Description |
|---|---|
| Deployment Guide | Full deploy instructions + one-click CloudShell script |
| Architecture | System design, data model, API overview |
| User Guide | How-to for instructors and students |
| Role | Capabilities |
|---|---|
| Instructor | Create exercises (drag activities into phase mappings with weights), manage student roster via email invite or join code, view class results and history |
| Student | Complete drag-and-drop activity sorting exercises, receive per-card scored feedback, view attempt history and scores |
┌─────────────────────────────────────────────┐
│ AWS Amplify Hosting │
│ Next.js 14 Static Export │
│ (Instructor UI + Student UI + Tutorial) │
└────────────────────┬────────────────────────┘
│ HTTPS
│
┌──────────▼──────────┐
│ REST API │
│ Gateway │
│ (Cognito │
│ Authorizer) │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Lambda │
│ (REST API) │
│ Python 3.12 │
└──────────┬──────────┘
│
┌─────────────────┼──────────────────┐
│ │ │
┌──▼───────┐ ┌──────▼──────┐ ┌───────▼───┐
│ DynamoDB │ │ Cognito │ │ S3 │
│(12 tables)│ │ User Pool │ │ Assets │
└──────────┘ └─────────────┘ └───────────┘
| Layer | Technology |
|---|---|
| Frontend | Next.js 14 (React/TypeScript), AWS Amplify Hosting |
| Backend | Python 3.12 Lambda, modular monolith |
| REST API | Amazon API Gateway (REST) + Cognito authorizer |
| Data | Amazon DynamoDB — 12 tables, on-demand |
| Auth | Amazon Cognito User Pool (Instructor / Student groups) |
| Storage | Amazon S3 (asset uploads) |
| IaC | AWS CDK v2 (TypeScript, single stack) |
├── frontend/ Next.js SPA
│ ├── app/
│ │ ├── page.tsx Login / Register
│ │ ├── layout.tsx Root layout (NavBar + footer)
│ │ ├── instructor/ Dashboard, Exercises, Roster, Results
│ │ ├── student/ Dashboard, Exercise board, History, Scores
│ │ └── tutorial/ Help Center (role-tabbed guides)
│ ├── src/shared/ NavBar, Sidebars, InfoIcon, apiClient, session
│ └── deploy_amplify.sh Manual Amplify deploy script
│
├── backend/ Python modular monolith
│ ├── src/
│ │ ├── api/ Lambda handler + dispatcher + router
│ │ ├── identity/ U1 — Auth & access
│ │ ├── authoring/ U2 — Exercise authoring
│ │ ├── exercise/scoring/ U3 — Pure scoring engine
│ │ ├── results/ U4 — History & results
│ │ └── live_session/ U5 — WebSocket live session
│ ├── tests/ 22 unit tests (all passing)
│ └── scripts/ smoke_test.sh, probe.sh
│
├── infrastructure/ AWS CDK (TypeScript)
│ ├── lib/processcanvas-stack.ts Single stack — all resources
│ └── bin/processcanvas.ts
│
├── docs/ Documentation
│ ├── DEPLOYMENT.md Full deployment guide
│ ├── ARCHITECTURE.md Architecture & design
│ └── USER-GUIDE.md Instructor & student guides
│
├── deploy.sh One-click full deployment script
└── README.md This file
Open AWS CloudShell in your target account and run:
git clone https://github.com/ASUCICREPO/Development-Process-Navigator.git
cd Development-Process-Navigator
chmod +x deploy.sh
./deploy.shThat's it. The script installs all dependencies, deploys the CDK stack (backend + all AWS resources), builds the frontend, and deploys it to Amplify. See docs/DEPLOYMENT.md for full details.
- Node.js 18+ and npm
- Python 3.12+
- AWS CLI + CDK CLI (
npm install -g aws-cdk)
cd frontend
npm install
npm run dev # http://localhost:3000cd backend
pip install -r requirements.txt
pytest -q # 22 tests, all passcd infrastructure
npm install
cdk synth # validate (no deploy)
cdk deploy --profile <your-profile>| Table | Partition Key | Sort Key | Purpose |
|---|---|---|---|
| Users | userId | — | User profiles |
| Enrollments | instructorId | studentId | Class enrollment |
| JoinCodes | code | — | Self-enrollment codes |
| Configurations | configId | — | Exercise configurations |
| ConfigurationVersions | configId | versionNumber | Config versioning |
| Templates | templateId | — | Reusable templates |
| Exercises | exerciseId | — | Published exercises |
| StudentExerciseState | exerciseId | studentId | Student progress / drafts |
| Attempts | studentId | attemptId | Submission history |
| Sessions | sessionId | — | Live session records |
| SessionParticipants | sessionId | studentId | Live session roster |
| WsConnections | sessionId | connectionId | Active WebSocket connections |
Instructors register with a private access code to prevent unauthorized accounts.
The code is set as a Lambda environment variable (INSTRUCTOR_ACCESS_CODE) in the CDK stack.
To rotate:
- Update
INSTRUCTOR_ACCESS_CODEininfrastructure/lib/processcanvas-stack.ts - Update the fallback in
backend/src/api/app.py - Run
cdk deploy --profile <your-profile>frominfrastructure/ - Share the new code privately with faculty
This application was developed by :
Arizona State University · W.P. Carey School of Business · ASU AI Cloud Innovation Center