COMMUNITY APPLICATION

ANQ Blog

A small social blog with member publishing, replies, following, search, and a separate moderation workflow.

  • React
  • TypeScript
  • Fastify
  • PostgreSQL

Live community demo

Browse freely. Publishing is limited to provisioned members.

ANQ Blog community feed with fictional members and posts
Interface shown with fictional sample data. View full screenshot

A small community, with clear boundaries

This remake brings the original social-blog idea into a bounded application: members publish posts, reply, follow other members, and search public writing. React and TypeScript provide the interface; Fastify and PostgreSQL own validation, sessions, and durable state.

The following feed is chronological. Authors can edit or delete their writing, with version checks to reject stale edits. Deleted posts leave a placeholder so replies keep their context. Hiding a post is a personal preference; reporting it starts a separate moderation process.

Moderation is an explicit decision

Reports retain a snapshot of the original text. Moderators review a private queue and record a decision note, reviewer, and time. Dismissing a report leaves the post intact; removal redacts it publicly and prevents further edits or replies. Concurrent decisions on the same report cannot both succeed. This history is not an immutable audit log against database administrators.

Accounts are provisioned by an administrator. Passwords use scrypt; opaque sessions are stored as hashes and use HttpOnly cookies. Mutations check the request origin, with rate limits for login and writing. There is no public registration or password-reset workflow in v1.

What was checked

The local v1 passed PostgreSQL integration tests, three browser workflows covering member activity, search, and moderation, type and build checks, and automated accessibility scans. A production Node 24 container was exercised with a read-only filesystem, migrations, account provisioning, login, and publishing.

The app also passed a disposable Ubuntu deployment through anq-publish, including HTTPS member workflows, ownership checks, following and moderation. An encrypted backup was exported to the workstation and restored into a fresh database; data counts, a restored account login and a new isolated write passed. The current demo is publicly available over HTTPS. Encrypted off-host backups are scheduled, and a fresh restore of the deployed database passed file verification, PostgreSQL restoration and table-count comparison.

The live demo and screenshot use fictional members and posts. Visitors can browse without an account; publishing and moderation require administrator-provisioned credentials. Automated checks do not replace an independent security review or a full manual accessibility audit.

Keeping the scope useful

Uploads, notifications, real-time updates, likes, and ranked feeds are outside this release. Shared CSS token names keep the interface consistent with the other web projects without introducing a component framework.

This is an AI-assisted remake of my earlier project. The verification above describes the implementation checks, not independent review.