PortfolioWriting
Subscribe
Blog/Portfolio Projects
EAPrevious · Portfolio ProjectsEasyChess: A Domain-Specific Language for Chess NotationNext · Portfolio ProjectsAutomated Departmental Report GeneratorAD
Portfolio Projects28 April 2026

Full-Stack Blog Platform with EJS and PostgreSQL

A multi-role blog with owner, author, and reader access levels, built with server-side EJS templates and a PostgreSQL backend.

Full-Stack Blog Platform with EJS and PostgreSQL

A traditional server-rendered blog with multi-role access control — owner, author, and reader — built before I moved to Next.js.

Stack

  • Node.js + Express for routing and server logic

  • EJS for server-side HTML templating

  • PostgreSQL for persistent storage

  • bcrypt for password hashing

  • express-session for session management

Roles

RoleCan do
OwnerManage users, delete any post, full admin
AuthorCreate, edit, and delete their own posts
ReaderBrowse and read posts

Database Schema

Three main tables: users, posts, and sessions. Posts link to users via foreign key. Sessions use a server-side store backed by PostgreSQL.

What I Learned

Session management is trickier than it looks. Race conditions between session creation and database writes caused intermittent auth bugs early on. Moving to a proper session store fixed this.

EJS is simple and explicit — great for learning, but I quickly hit its limits for interactive UIs. This project was the reason I moved to React + Next.js.

Source: GitHub

In this series

Portfolio Projects

  1. Project 1Anagrams Architecture Notes
  2. Project 2Building a SQL Database Engine in C
  3. Project 3Anagrams Game (Original Browser Version)
  4. Project 4EasyChess: A Domain-Specific Language for Chess Notation
  5. Project 5Full-Stack Blog Platform with EJS and PostgreSQL
  6. Project 6Automated Departmental Report Generator
  7. Project 7AI-Powered Fitness Tracker
  8. Project 8Model Surveillance Satellite — Team Project
  9. Project 9LoopBridge, carrying a Figma system into a working platform
  10. Project 10Stitch Bloom, building a shop around how the owner takes orders
  11. Project 11DeRivian Care, from a business plan to a working supported living site
  12. Project 12Sunab Telecommunications, designing around an invisible service
  13. Project 13Pengana Concept, one group website with distinct business areas
More reading
  • Computer SystemsComputer Systems6 May 2026
  • SupplementalHow My C Database Stores Rows in a B+ Tree6 May 2026
  • ArticleTesting a new post in Prod1 May 2026
  • MiscellaneousWelcome to My Blog28 Apr 2026
  • ArticleBlog Platform — Features Demo24 Apr 2026
All articles →
EAPrevious · Portfolio ProjectsEasyChess: A Domain-Specific Language for Chess NotationNext · Portfolio ProjectsAutomated Departmental Report GeneratorAD
WorkAboutBlogContact
[email protected]+44 7881 177717London, UK
GitHub LinkedIn X / Twitter
Previous site (v1)
VICTOR NABASUVictor Nabasu
© 2026 Victor Nabasu. All rights reserved.Software Engineer · Full-Stack Developer