HUFEED — Campus Social Hub

Full-stack campus social platform with a Node.js/Express/MongoDB backend, a React 19 web frontend, and a React Native (Expo) mobile app. Features JWT auth with httpOnly cookie rotation, RBAC (student/org_admin/admin), real-time notifications via Socket.io, image uploads to Cloudinary, email verification, and auto-generated OpenAPI docs. Primary role was backend lead; also contributed to both frontends.

Role
Backend Lead & Full-Stack Contributor
Timeline
4 months
Status
MVP

Result Built a production-ready three-tier platform with ~65 API endpoints, RBAC with three roles, real-time updates, CI/CD pipelines for all three repos, and Docker deployment.

Overview

HUFEED is a campus news and events platform connecting students with clubs, events, and announcements at Haramaya University. The backend handles authentication with JWT cookie rotation, role-based access control, MongoDB models for users/posts/events/comments, Socket.io real-time events, and Cloudinary image management. The web frontend is a React 19 SPA with a three-column layout (navigation, feed, profile panel), sticky search, and dark mode. The mobile app is built with React Native/Expo featuring 20+ screens, drawer navigation, and native image picking.

The problem

Building a consistent cross-platform experience with secure auth, real-time updates, and role-based access while keeping the codebase maintainable across three separate repositories.

The solution

Express 5 backend with TypeScript strict mode, Zod validation, and dual API mount paths. Shared JWT auth strategy across all clients. Socket.io piggybacking on the HTTP server for real-time push after DB writes. Three CI/CD GitHub Actions workflows — one per repo.

Process

1. Designed MongoDB schemas for 7 entities, built Express 5 REST API (~65 endpoints) with JWT cookie rotation and Zod validation, wired Socket.io real-time events.

2. Built React 19 web SPA with three-column responsive layout, sticky search, post feed, events, clubs, admin dashboard, and dark mode.

3. Developed React Native (Expo) mobile app with 20+ screens, drawer + tab navigation, image picker, and platform-aware API config.

4. Set up GitHub Actions CI/CD for all three repos, Docker multi-stage backend build, and docker-compose for local deployment.

5. Wrote Jest + supertest tests with mongodb-memory-server, auto-generated OpenAPI 3.0 docs from Zod schemas.

What I learned

Dual API mount paths enable gradual version migration. Promise.allSettled for parallel uploads prevents one failure from aborting a batch. Email failures during registration should be non-fatal. Mongoose connection pooling needs special handling for test isolation with mongodb-memory-server.

Features

  • JWT auth with httpOnly cookie rotation (access 15m + refresh 7d)
  • Three-role RBAC: student, org_admin, admin
  • Post feed with image carousels, likes, saves, comments
  • Event listings with RSVP management
  • Club directory and management
  • Real-time notifications via Socket.io
  • Admin dashboard with analytics
  • Email verification and password reset
  • Cloudinary image uploads
  • Dark mode across all platforms
  • Swagger/OpenAPI docs auto-generated from Zod schemas
  • Responsive web layout (desktop three-column, mobile bottom-nav)
  • Docker deployment with docker-compose

Results

  • Fully functional backend serving all three clients from a single API
  • Responsive React 19 web app with desktop and mobile layouts
  • Cross-platform React Native mobile app (Android + iOS)
  • CI/CD pipelines with automated linting, building, and testing
  • Docker containerization with one-command local deployment
  • Auto-generated API documentation served via Swagger UI

My contribution

  • - Designed and built the entire REST API with Express 5 + TypeScript
  • - Implemented JWT auth with cookie rotation and RBAC
  • - Designed MongoDB schemas for 7 entity types
  • - Built Socket.io real-time event system
  • - Contributed to both web and mobile frontend development
  • - Set up CI/CD, Docker, and automated testing