Project Overview

This project is a Facebook-inspired web application designed as a case study to demonstrate the complete workflow of a full-stack system using modern web technologies. The main focus of the project is to create and manage users, display them in a structured listing, and allow users to create posts that are visible on their individual profile pages.

The application allows users to be created through a form that includes profile and cover photo uploads. These images are uploaded directly from the frontend to a cloud-based image hosting service, and only the generated image URLs are stored in the backend database. This approach keeps the backend lightweight and focused on data management rather than file handling.

Users are displayed in a listing section similar to the Facebook friends list. When a specific user is selected, a detailed profile page is shown, including profile information, images, and all posts created by that user. Additionally, a separate post creation feature is implemented where a user can be selected from an existing list to associate posts with the correct profile.

Overall, this project emphasizes clean architecture, clear separation of frontend and backend responsibilities, and real-world development practices suitable for academic and professional learning purposes.

Project Objectives / Goals

The primary objective of this project is to design and implement a simplified social media–style application that follows real-world software development practices. The project aims to bridge theoretical knowledge with practical implementation by focusing on clean architecture, proper data flow, and separation of concerns between frontend and backend systems.

The key goals of this project are:

Through these objectives, the project aims to provide hands-on experience in building a complete application workflow while maintaining simplicity and clarity suitable for an academic case study.

Technology Stack

This project uses a modern and widely adopted technology stack to ensure scalability, maintainability, and real-world relevance. Each technology was chosen based on its specific role in the system architecture and its suitability for the project requirements.

Frontend