An open API service indexing awesome lists of open source software.

https://github.com/enyineer/isaqb-exam

Free iSAQB CPSA-F mock exam with timed tests, instant scoring, keyboard navigation, and a community leaderboard.
https://github.com/enyineer/isaqb-exam

certification cpsa-f education exam-preparation isaqb isaqb-f mock-exam practice-test quiz react software-architecture tailwindcss typescript vite

Last synced: about 2 months ago
JSON representation

Free iSAQB CPSA-F mock exam with timed tests, instant scoring, keyboard navigation, and a community leaderboard.

Awesome Lists containing this project

README

          

# iSAQB CPSA-F Mock Exam

A web-based practice exam for the **iSAQB Certified Professional for Software Architecture โ€” Foundation Level (CPSA-F)**.

Questions are sourced from the [official iSAQB examination question catalog](https://github.com/isaqb-org/foundation-exam-questions).

## Take the exam

You can take the exam [here](https://enyineer.github.io/isaqb-exam/). Please report any issues in this repositories issue tracker.

## Features

- ๐ŸŽฏ Pick & category question types with iSAQB scoring rules
- ๐Ÿ”€ Shuffled answer order per attempt to prevent pattern memorization
- โฑ๏ธ Active time tracking (pauses when browser is closed)
- ๐Ÿ’พ Auto-saves progress to localStorage โ€” refresh without losing state
- ๐Ÿšฉ Flag questions for review โ€” confirmation prompt before finishing with flagged questions
- ๐Ÿ“ Per-question notes for your lecturer โ€” persisted and shown in results + print
- ๐Ÿ–จ๏ธ Print/export results for your lecturer (including notes)
- ๐Ÿ”ต Skipped vs wrong answer distinction in results (no penalty for skipped)
- ๐Ÿ† Leaderboard โ€” submit scores via OAuth, verified server-side by a Cloudflare Worker
- ๐Ÿ›ก๏ธ Admin panel โ€” manage leaderboard entries, block users, and add/remove administrators
- ๐ŸŽ“ Exam sessions โ€” lecturers create timed sessions, share via link/QR, view submissions and per-question statistics
- ๐ŸŒ German & English
- ๐ŸŽจ Multiple color themes + dark mode
- โŒจ๏ธ Full keyboard navigation
- ๐Ÿ”— Hash-based routing โ€” works on GitHub Pages without server config

## Architecture

- [Leaderboard Architecture](leaderboard-architecture.md) โ€” sequence diagrams, data model, authentication, and Worker secrets
- [Admin Interface](admin-interface.md) โ€” access control, features, API endpoints, and setup
- [Session Management](session-management.md) โ€” timed exam sessions, participant flow, statistics, and deployment

## Tech Stack

React 19 ยท Vite ยท Tailwind CSS v4 ยท Bun ยท TypeScript ยท Wouter

## Getting Started

```bash
bun install
bun run dev
```

This starts the frontend only. Questions and leaderboard data are served from the production Worker.

### Full-Stack Local Development

To run both the frontend and the Cloudflare Worker locally:

1. **Install dependencies** for both frontend and worker:
```bash
bun install
cd worker && bun install
```

2. **Configure worker secrets** โ€” copy the template and fill in your credentials:
```bash
cp worker/.dev.vars.example worker/.dev.vars
```
Edit `worker/.dev.vars` with your GitHub PAT, OAuth app credentials, JWT secret, and initial admin user IDs.

> **Admin access:** Set `ADMIN_USER_IDS` to a comma-separated list of user IDs (e.g. `google:123,github:456`) to grant initial admin privileges. See [admin-interface.md](admin-interface.md) for details.

3. **Set up OAuth apps for local testing** โ€” register these in your GitHub/Google OAuth apps:
- **Authorized JavaScript origins:** `http://localhost:8787`
- **Authorized redirect URIs:**
- `http://localhost:8787/auth/github/callback`
- `http://localhost:8787/auth/google/callback`

4. **Start both servers:**
```bash
bun run dev:all
```
- Frontend: `http://localhost:5173/isaqb-exam/`
- Worker: `http://localhost:8787`

The worker runs with local KV storage โ€” no data is written to production.

### Available Scripts

| Script | Description |
|--------|-------------|
| `bun run dev` | Start frontend only |
| `bun run dev:worker` | Start worker only (local KV) |
| `bun run dev:all` | Start both frontend + worker |
| `bun run build` | Production build |
| `bun test` | Run tests |

## Testing

```bash
bun test
```

## Disclaimer

This tool and its author are not affiliated with [iSAQB e.V.](https://www.isaqb.org/)
No guarantee is provided for the correctness of the questions or the test itself.

## License

[MIT](LICENSE.md)