next.jsui-ux designweb developmentredux toolkit

Developing the BabyCheese Studio Website

By Samvel Avagyan
Picture of the author
Published on
Duration
3 Months
Role
Frontend Developer and UI/UX Designer
Atmosphere
Collaborative and Innovative
Technology
Next.js, React, Sass, Redux Toolkit, Bootstrap
BabyCheese Studio Homepage
BabyCheese Studio Homepage
BabyCheese Features Page
BabyCheese Features Page
BabyCheese Project Services
BabyCheese Project Services
+3

The BabyCheese Studio project presented an exciting challenge: to create a visually engaging and technically robust platform to showcase the company’s expertise in game development and interactive solutions.

Project Overview

BabyCheese Studio’s website needed to be a scalable, user-friendly solution that could evolve alongside the company’s growing portfolio. My responsibilities spanned UI/UX design, frontend development, and creating a foundation to support future advanced features.

Technologies and Tools Used

To manage the content effectively, Strapi was implemented as the CMS, streamlining project data organization and enhancing content delivery.

To ensure the website’s performance, scalability, and user engagement, I employed the following technologies:

Next.js and React

Next.js was chosen for its server-side rendering and static site generation capabilities, ensuring excellent SEO performance and fast load times. React facilitated the creation of dynamic, reusable components that enhanced interactivity.

Example: Server-Side Rendering (SSR) with Next.js

export async function getServerSideProps() {
  const res = await fetch('https://api.babycheese.studio/projects');
  const projects = await res.json();

  return {
    props: {
      projects,
    },
  };
}

const Projects = ({ projects }) => (
  <div>
    {projects.map((project) => (
      <div key={project.id}>{project.name}</div>
    ))}
  </div>
);

export default Projects;

Sass for Styling

Sass was utilized to manage styling efficiently with variables, mixins, and a structured approach.

Example: Advanced SCSS Variables and Mixins

$primary-color: #5a4ac7;
$secondary-color: #ff6b6b;

@mixin transition($property, $duration) {
  transition: $property $duration ease-in-out;
}

button {
  background-color: $primary-color;
  @include transition(all, 0.3s);

  &:hover {
    background-color: lighten($primary-color, 10%);
  }
}

Redux Toolkit for State Management

The Redux Toolkit simplified the management of global state, particularly for handling data like project details and user interactions.

Example: Redux Slice Implementation

import { createSlice } from '@reduxjs/toolkit';

const projectsSlice = createSlice({
  name: 'projects',
  initialState: [],
  reducers: {
    setProjects: (state, action) => action.payload,
  },
});

export const { setProjects } = projectsSlice.actions;
export default projectsSlice.reducer;

Development Process and Challenges

The development journey involved meticulous planning, iterative design, and technical problem-solving to deliver a product aligned with BabyCheese Studio’s vision.

Agile Methodology

An Agile approach allowed for continuous feedback integration and iteration, ensuring the project met evolving requirements.

User-Centric Design

The design process focused on creating an intuitive and visually engaging experience, supported by user testing and prototype feedback.

Example: Interactive Prototype Wireframe

import React from 'react';

const Prototype = () => (
  <div className="prototype">
    <header className="header">Header</header>
    <main className="main-content">Main Content</main>
    <footer className="footer">Footer</footer>
  </div>
);

export default Prototype;

Key Features Implemented

Several key features were developed to enhance functionality and ensure scalability:

Dynamic Project Gallery

A dynamic gallery displaying projects with interactive filters and animations.

Example: Dynamic Filtering Logic

const [filter, setFilter] = useState('all');

const filteredProjects = projects.filter((project) =>
  filter === 'all' ? true : project.category === filter
);

return (
  <div>
    <button onClick={() => setFilter('all')}>All</button>
    <button onClick={() => setFilter('games')}>Games</button>
    <div>
      {filteredProjects.map((project) => (
        <div key={project.id}>{project.name}</div>
      ))}
    </div>
  </div>
);

Responsive Design

Ensured seamless functionality across devices using Bootstrap’s grid system and custom media queries.

Real-Time Notifications

Integrated WebSocket for real-time updates on new projects and blog posts.

Example: WebSocket Integration

const socket = new WebSocket('wss://babycheese.studio/updates');

socket.onmessage = (event) => {
  const update = JSON.parse(event.data);
  console.log('New Update:', update);
};

Personal Experience and Conclusion

The BabyCheese Studio project allowed me to push my boundaries as a developer, combining technical expertise with a user-focused design philosophy. Building a scalable foundation for future features was a rewarding challenge, and the collaborative atmosphere enriched the overall experience.

This project stands as a testament to my ability to deliver high-quality, scalable web solutions tailored to client needs.