Bulletin Board
Serverless bulletin board on AWS.
Summary
A serverless bulletin board where users can post, edit, and view messages. Backend validation that messages exist before edits, sorting by date, and per-user filtering (filtering happens in the backend, not the frontend). AWS course project.
Stack
Highlights
- Fully serverless - no servers to maintain
- Filtering and sorting in the backend, not the frontend
- Validation at the Lambda layer before any database write
Background
AWS course project. Build a serverless bulletin board - users can post, edit, and view messages, all without maintaining a server.
The architecture
React (S3) → API Gateway → Lambda → DynamoDB
Fully event-driven, no always-on backend.
Technical choices
- React frontend hosted statically on AWS S3
- API Gateway as the routing layer to Lambda
- Lambda for business logic and database calls
- DynamoDB for data - fits this use case (key-value, no relational join logic needed)
- Serverless Framework for deployment - the entire stack defined in
serverless.ymland deployed with one command
Implementation details
Validation at the Lambda layer. When a user tries to edit a message, the Lambda first checks that the message actually exists in DynamoDB before writing. Returns 404 if it doesn't, instead of silently creating a new one.
Per-user filtering in the backend. The alternative - fetch everything and filter in the frontend - would be simpler but bad for data integrity and performance. Filtering happens in the Lambda against a DynamoDB index, so the frontend gets only what should actually be shown.
Sort by date. Same logic - sorting happens before the response leaves the Lambda.
What I took away
Serverless isn't free - every Lambda call has a cold start, and DynamoDB's query language is limited compared to SQL. But for an app this size the trade-off is worth it: zero maintenance, automatic scaling, pay only for actual usage.