A shoutbox that does not become a spam channel
Rate limited, length capped, link stripped, moderatable, and cheap to poll. The five constraints that keep a chat box usable.
9 entries
Rate limited, length capped, link stripped, moderatable, and cheap to poll. The five constraints that keep a chat box usable.
Every manual adjustment writes a ledger row and an audit row, inside one transaction. An admin panel that edits a balance directly is how books stop balancing.
A non-blocking file lock in three lines, and why a database flag is the wrong tool for this particular job.
A status column, one check in the session guard, and a shadow-banned tier that keeps working while earning nothing.
Send N, receive M, and keep the difference as the house margin. The one transaction that moves credits between two members without leaking any.
A key-gated HTTP entry point plus a lock file, so an external pinger can drive your scheduled work without letting anyone else drive it.
Numbered SQL files, a table of what has run, and a splitter that does not break on semicolons inside strings.
Faucet software already knows how to talk to shortlink providers. Match the contract they expect and operators can point their existing config at you without writing anything.
Everything an operator might want to change belongs in the database, not in code. This is the small layer that makes that painless.