Build a Express Social Network

Build Copperline Commons, a neighborhood social network with Express, EJS, Tailwind, PostgreSQL, Passport local, HTMX, Node, Nginx, VPS.

  • Difficulty Intermediate
  • Parts 12
  • Stack Express, EJS, Tailwind, PostgreSQL, Passport local, HTMX, Node, Nginx, VPS

How this project works

Copperline Commons is the Express remake of Westloop: a neighborhood social network with accounts, profiles, follows, likes, comments, a following timeline, search, notices, and a real Ubuntu VPS deploy. Each numbered folder in fcc-express-social is a working snapshot.

The stack, and why these tools

JobChoiceWhy
Language / frameworkJavaScript, ExpressExpress is thin on purpose. You will see every middleware. Use PostgreSQL — not Mongo — because follows and likes need unique pairs and foreign keys.
DatabasePostgreSQLFollows, likes, and comments need foreign keys and unique pairs. SQLite is only for the first laptop boot.
CSSTailwind CSSFeeds, avatars, and a sticky nav are layout-heavy. Utilities stay in the templates you already edit.
JavaScriptHTMX + Alpine.jsEJS + HTMX keeps writes on the server. A React client would invent an API Express does not need.
AuthenticationPassport local + express-sessionPassport local + a session cookie. bcrypt the password. Same-site cookies plus CSRF on HTMX posts.
Process / proxyNode + PM2, Nginx, Let’s EncryptSame VPS shape as Westloop: one app process, Postgres on localhost, Nginx for TLS and static/media files.
Hosting / DNSHetzner Cloud CX22 (or Contabo / DigitalOcean), Cloudflare Registrar + DNSYou own the box. PaaS is easier and teaches less.
EmailConsole locally, Postmark in productionPassword reset must leave the laptop.

If you already finished the Express blog, keep going — this project adds a social graph and a VPS ship, not another CRUD journal.

Open GitHub repo →

Parts in order

Work through the parts in sequence. Each lesson explains the ideas, then points you to a runnable GitHub snapshot.