the things we say
learn more about this project
Overview
a minimal message wall where users can drop a username and a message. once submitted, it instantly shows up on the homepage with a timestamp. no auth, no filters, just raw input from whoever visits. I made this app to experiment with user-submitted data, input handling, and a classic Express + Mongo setup. the vibe is old-school, but the backend is clean and safe. it’s lightweight, persistent, and actually kind of fun to read through.
Insights
built entirely with vanilla JavaScript on the frontend and Express.js on the backend. rate limiting is applied. used EJS for server-side rendering, keeping the frontend plain but dynamic. MongoDB handles storage, with each message saved along with its username and time of creation. inputs are sanitized, and I added basic validation so people don’t send empty messages. everything’s structured to be readable and extendable.
you can view the source here.
Build Notes
- timestamps needed a bit of tinkering to be shown in local time. the server sends UTC time to the client, which then gets converted.
- all messages are shown in reverse chronological order so new ones show up instantly at the top.
- EJS syntax felt like cold water at first, but you get used to it once you’re in.
- I sometimes visit it just to reread what people (or I) wrote.
TL;DR
- JavaScript, Express.js backend, EJS templating, and MongoDB.
- user-submitted messages with input sanitization and timestamping.
- minimalist UI, server-rendered, MVC architecture.
