Skip to content
Xenia Kadar
← Back to the archive

ArchiveMembers-only message board

Mojo Dojo Casa Clubhouse

mojo-casa

A members-only clubhouse where anyone can read the posts, but only members who know the secret password can see who wrote each message and when. A server-rendered Node and Express app with authentication and role-based access.

Node.js · Express · EJS · MongoDB · Mongoose · Passport.js · bcrypt

Type
Members-only message board
Build
Personal project
Repos
Single repository
Package
mojo-casa
Demo
Archived

Overview

Mojo Dojo Casa Clubhouse is a members-only message board. Everyone can read the posts, but the details (who wrote each message and when) stay hidden until a visitor joins the club with the secret password. It is a server-rendered application: each page is assembled on the server and sent to the browser ready to display.

The Mojo Dojo Casa Clubhouse message board, with posts shown to every visitor.
The clubhouse board. Posts are public; author details are members-only.

What I built

A full server-rendered app in Node.js and Express, using EJS templates to build each page on the server. Accounts and sessions run through Passport, passwords are hashed with bcrypt, and posts and profiles are stored in MongoDB through Mongoose, organised across a models, controllers, routes, and views structure.

Key features

  • User registration and secure login
  • Posting messages and reading everyone's posts
  • A members-only view that reveals each post's author and timestamp
  • An admin role that can delete posts
  • Profile management for username, email, password, and avatar
  • A personal dashboard listing your own posts

Technical approach

  • Server-rendered pages assembled with EJS templates
  • Authentication and session management with Passport.js
  • Password hashing with bcrypt
  • Data modelled in MongoDB with Mongoose across models / controllers / routes / views
  • Server-side validation and sanitisation with Express Validator
  • Role-based access control gating the member and admin features

What I learned

  • Setting up and configuring a Node.js application with Express
  • Handling authentication and session management with Passport.js
  • Managing data with MongoDB and Mongoose
  • Rendering dynamic pages server-side with EJS templates
  • Validating and sanitising user input with Express Validator