Full Stack Project
A university-wide platform that helps students access and share study materials in an organized, scalable way. Built with Node.js backend and modern frontend technologies to solve real campus challenges.
As a student at the University of Ibadan, I experienced firsthand the challenges of accessing and sharing study materials. Traditional methods like scattered Google Drive links and WhatsApp groups were inefficient and disorganized. Some departments had useful materials that weren't accessible to other departments. I wanted to create a centralized platform that would help students access and share essential course-related resources in an organized, scalable way, like github for students
UniNav has transformed how students at University of Ibadan access and share study materials. The platform has created a community-driven approach where students actively contribute to a growing knowledge base, making academic resources more accessible and organized than ever before. Most of all uninav vission is to be more than just a study material plateform, we hope to expand it accommodate all activities that makes up a student life, Simplifying Students Academic journey
UniNav follows a modern full-stack architecture with a Next.js frontend and NestJS backend. The system is designed for scalability and performance, using PostgreSQL for data persistence and Docker for containerization
The application follows a three-tier architecture: Presentation Layer (Next.js), Business Logic Layer (NestJS API), and Data Layer (PostgreSQL). User requests flow through the Next.js frontend to the NestJS API, which processes business logic and interacts with the PostgreSQL database.
Selected for its non-blocking I/O model, efficiency, and ability to handle concurrent requests, making it suitable for a scalable API
For its modular architecture, scalability, and type safety, making it a great fit for a microservices architecture
For containerizing the application, ensuring consistent environments from development to production and simplifying deployment
For seamless deployment of the Next.js frontend with automatic scaling and CI/CD integration
Chosen for its excellent SEO capabilities, server-side rendering, and built-in optimization features that are crucial for a content-heavy platform
For type safety, improved code quality, and better maintainability, especially in a growing codebase
For its reliability, feature richness, and strong support for complex queries and data integrity, used it for more optimized searches using pgvector
The database design focuses on scalability and performance, with carefully designed relationships between users, materials, and interactions. The schema supports complex queries for the recommendation system while maintaining data integrity.

The database schema includes tables for users, materials, departments, faculties, interactions, and monetization features. Each table is optimized for specific query patterns and includes proper indexing for performance.
Student accounts with auth, profile, matric number, role (student/mod/admin)
Moderator assignments per department/faculty with approval status
University faculties directory with moderation status
Departments linked to faculties with descriptions
Course catalog with unique course codes and descriptions
Junction table mapping courses offered by each department
Junction table of students enrolled in courses
Study materials metadata (type, tags, address), counts, status, visibility
User-created material collections with contributors, tags, visibility, restriction
User saves for materials or collections for quick access
Advertisements linked to materials/collections with pricing and metrics
Editorial content (articles/guidelines/schemes) with body, likes, clicks
User comments on blog posts
Building UniNav presented several complex challenges that required innovative solutions and deep technical expertise. From handling massive file uploads to implementing real-time features, each challenge pushed the boundaries of what was possible with the chosen technology stack.
Implementing a complex permission system where different user types (students, moderators, admins) have varying levels of access to materials and features.
These challenges taught me the importance of scalable architecture, performance optimization, and user experience design.