Company Portfolio CMS (React)

Case Study

Introduction

"Company Portfolio CMS" is a web app for creating websites.
It's a content management system: users can create pages for projects, update those projects, and upload images.

Admin dashboard

Objective

The aim of the project was to build a web application using full-stack JavaScript technologies to showcase for my portfolio.
The problem to be solved was building the complete frontend and the admin environment from scratch. I wanted to understand: how and where can I addtext and images and how can I get the data and display it?
I wanted to understand: how and where can I add text and images and how can I get the data and display it?

Start screen of portfolio

Context

The application was part of my practise to build skills in React, connecting to a database and implement the UI.
A content management system is what I have been using for my work so far so it was something I can relate to and I was curious how it could be built.

Project detail page

Approach

To build an app that enables website creators to add information, there had to be the server-side, that stores all the data, and the client-side, that has the user interface to enable the user to interact with all the information.

List of all projects

1. Step: Create the Client Side

In the first part of building the app, I created the components with React.
The main view component contained the app routing.
The main view displays a dashboard with linked elements to the parts of the CMS and the actions the user can take.

2. Step: Connect to database

The second step will be to create a database. For this I will use Firebase again as it has built-in services that saves time and lets me concentrate more on the frontend.

App.js with component structure

All media

All pages

Project overview

Project editing

References page

Reflection

It was challenging to understand the general structure of React and the use of props and state, how things are connected, how data is passed between components and how it can be accessed in the database to be used in the functions.

Duration + Next Steps

Both parts of the application together, the server side and the client side, took me about 2 months.