https://github.com/yusufaf/quizaroni
Flashcard & quiz study app — React frontend + serverless AWS backend (Lambda, DynamoDB, S3, Cognito) in a pnpm monorepo.
https://github.com/yusufaf/quizaroni
aws-cdk aws-lambda cognito dynamodb flashcards monorepo quiz react serverless study-app typescript vite
Last synced: about 5 hours ago
JSON representation
Flashcard & quiz study app — React frontend + serverless AWS backend (Lambda, DynamoDB, S3, Cognito) in a pnpm monorepo.
- Host: GitHub
- URL: https://github.com/yusufaf/quizaroni
- Owner: yusufaf
- License: mit
- Created: 2021-12-11T19:11:11.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2026-06-21T01:34:47.000Z (1 day ago)
- Last Synced: 2026-06-21T02:12:11.329Z (1 day ago)
- Topics: aws-cdk, aws-lambda, cognito, dynamodb, flashcards, monorepo, quiz, react, serverless, study-app, typescript, vite
- Language: TypeScript
- Homepage: https://quizaroni.netlify.app
- Size: 8.44 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# Quizaroni
A flashcard / quiz study application. Create study sets, attach notes and
files, and study them — backed by a fully serverless AWS backend.
This is a **pnpm monorepo**:
| Workspace | Path | Stack |
| ---------- | ----------- | ----------------------------------------------------------- |
| Frontend | `apps/web` | React 18 · TypeScript · Vite · Material UI · AWS Amplify |
| Backend | `apps/api` | AWS CDK · Lambda · API Gateway (HTTP) · DynamoDB · S3 · SES |
## Architecture
```
React (Amplify/Cognito auth)
│ HTTPS, Bearer token
▼
API Gateway (HTTP API) ── Lambda authorizer (verifies Cognito JWT)
│
▼
Lambda handlers ──► DynamoDB (study sets, users)
──► S3 (file uploads, profile pictures)
──► SES (feedback / notifications)
```
Everything in `apps/api` is defined as infrastructure-as-code with the AWS CDK
and deployed as a single CloudFormation stack.
## Quick start
```bash
pnpm install
# Frontend
cp apps/web/.env.example apps/web/.env
pnpm dev:web # http://localhost:3000
# Backend (requires AWS credentials + CDK bootstrap)
cp apps/api/.env.example apps/api/.env # fill in account, region, Cognito IDs
pnpm build:api
pnpm synth:api # validate the CloudFormation template
pnpm deploy:api # deploy to your AWS account
```
## Configuration
No account-specific identifiers or secrets are committed. Supply your own via
the untracked `.env` files:
- `apps/api/.env` — AWS account/region, Cognito pool IDs, allowed CORS origins,
optional Google OAuth credentials. See `apps/api/.env.example`.
- `apps/web/.env` — API base URL. See `apps/web/.env.example`.
## Repo scripts
Run from the root:
| Command | Description |
| ----------------- | ---------------------------------------- |
| `pnpm dev:web` | Start the frontend dev server |
| `pnpm build` | Build all workspaces |
| `pnpm synth:api` | Synthesize the CDK CloudFormation output |
| `pnpm deploy:api` | Deploy the backend to AWS |
| `pnpm test` | Run tests across workspaces |
## Contributing
See [CONTRIBUTING.md](./CONTRIBUTING.md). Commits follow
[Conventional Commits](https://www.conventionalcommits.org/); releases are
automated with release-please.
## Security
Found a vulnerability or a committed secret? See [SECURITY.md](./SECURITY.md).
## License
[MIT](./LICENSE) © 2026 Yusuf Afzal