Event Registration & Ticketing System, created as the final capstone project for Azubi Africa's Cloud Computing training program.
# Event Registration & Ticketing System
A serverless event registration and ticketing system built on AWS.
**Live site →
d2m8y969cy7786.cloudfront.n…
| Environment | Site | API |
|---|---|---|
| prod |
d2m8y969cy7786.cloudfront.n… | `
fdq0y1zki2.execute-api.us-e…` |
| dev |
d1i0ffiqumue4p.cloudfront.n… | `
2ko2cdfmv4.execute-api.us-e…` |
## Architecture
CloudFront → S3 (static frontend) for the UI; API Gateway → Lambda (Python 3.12)
→ DynamoDB for the API. CloudWatch for logs, metrics and alarms, SNS for
notifications, AWS Budgets for cost control. All of it defined in one SAM
template and deployed by GitHub Actions.
## API
| Method | Path | Purpose |
|--------|----------------------------|-----------------------|
| GET | /health | Health check |
| POST | /register | Register for an event |
| GET | /events | List all events |
| GET | /registrations/{email} | View a user's regs |
| DELETE | /registration/{id} | Cancel a registration |
## Deploy
`samconfig.toml` is committed with a placeholder `AlarmEmail`. Supply a real address once, in a gitignored copy:
```bash
cp samconfig.toml samconfig.local.toml # then edit AlarmEmail in both blocks
sam build
sam deploy --config-file samconfig.local.toml --config-env dev
```
In CI the address comes from the `ALARM_EMAIL` repo secret instead. See
RUNBOOK §3 and §12 for the full picture.
## Local test
```bash
python -m pytest tests/ -q # unit tests, mocked with Moto. No AWS resources touched.
```
Smoke tests run against the deployed API with curl — see RUNBOOK §5. There is
also a `sam local` path in RUNBOOK §6, but it needs Docker and has not been used
on this project.
## Security posture
The endpoints are intentionally public, matching the project's public-API scope.
Protections in place …