EN | IT

Group project

Cultura

EJS CSS Bootstrap JavaScript NodeJS Express MySQL

Summary

Cultura is an interactive platform designed not just to preserve, but to celebrate the art of our friends and communities who might not yet be known to the big world. In a time when the fast pace of modern life can easily overshadow local talent, Cultura creates a space where undiscovered artists can showcase their creativity, tell their stories, and connect with others who appreciate their work.

Purpose

To collaboratively develop a full-stack MVC data-driven application that handles personalization and real-time database interaction using MySQL.

Key features

  • Sign up, log in, and log out
  • Search and filter by categories
  • Like/unlike functionality for artworks, artists, and mediums/genres
  • Comment on artworks and delete comments
  • View personalized content
  • Post, update, and delete artworks
  • Manage profile settings, including password changes and account deletion
  • Remove artworks or favourites
  • Responsive design

My work

In this group project, I was responsible for the entire back-end development, including implementing the database structure for both local deployment and our shared Trinity College Dublin SCSS server. The database was designed to reflect the functional requirements collaboratively defined by the group. I also developed the front-end using EJS, CSS, Bootstrap, and JavaScript, basing the structure and layout on the design suggestions provided by my teammates.

Highlights

Designed a normalized MySQL schema with foreign key relationships.
Implemented secure authentication using JSON Web Tokens (JWTs).
Stored JWTs as HTTP-only cookies to protect them from client-side scripts and improve security.
Hashed passwords securely using Bcrypt.
Protected routes by verifying JWTs through middleware.
Used Express routers for clean and modular route handling.
Handled image uploads with Multer and used Sharp for resizing and compression.