Team Project · Full-stack Web App · 2024

Golden Key

A full-stack real estate management platform built to streamline property uploads, edits, filtering, and bulk listing management.

Role

Frontend & Backend Development

Timeline

2024

Node.js

Node.js

React

React

Tailwind

Tailwind

MySQL

MySQL

Express

Express

JWT

JWT

Golden Key hero image

The Problem

Managing property listings manually can become repetitive and difficult to organize, especially when handling multiple records, image uploads, and frequent updates. The goal was to build a system that made listing workflows more structured, editable, and scalable.

The Solution

To solve this, we developed a full-stack CRUD platform with secure authentication, listing upload and edit flows, filtering tools, image support, and Excel import for bulk operations. The platform was designed to centralize property management into one streamlined workflow.

My Contributions

Authentication Flow

Implemented secure login/logout and session handling to support protected account-based access.

Property CRUD

Built property upload, detail, edit, and delete flows for managing listings more efficiently.

Bulk Data Management

Integrated Excel upload and AG Grid editing to reduce repetitive manual entry and support larger datasets.

Backend Integration

Connected frontend workflows with Node.js, Express, and MySQL for persistent data handling.

Key Workflows

Authentication

  • Secure login and logout flow
  • Session-based access management

Property Management

  • Create, edit, and delete property listings
  • View and update property detail pages
  • Upload listing-related data and images

Bulk Operations

  • Import listing data through Excel
  • Edit table data using AG Grid
  • Support more efficient bulk record management

Technical Decisions

AG Grid for bulk editing

AG Grid was chosen because the project needed spreadsheet-like interaction for bulk property management, making large listing datasets easier to edit and review.

MySQL for structured listing data

MySQL supported the relational nature of property records, helping keep listing information organized and queryable.

React for UI workflow clarity

React helped structure reusable UI components for forms, listing tables, and detail views across the application.

Challenges & Solutions

Managing bulk listing data

Problem

Handling many property records manually was repetitive and inefficient.

Approach

Integrated Excel upload and AG Grid editing to support bulk operations in a more manageable interface.

Result

This made larger datasets easier to review, edit, and maintain.

Keeping listing workflows organized

Problem

Property data, edits, and detail views needed a more connected flow.

Approach

Built CRUD-based upload and detail pages that centralized listing actions into one consistent system.

Result

This improved organization and made day-to-day listing management more streamlined.

Impacts

Workflow Efficiency

Made listing upload, editing, and filtering more organized in one system.

Reduced Manual Work

Bulk Excel import and grid editing reduced repetitive manual entry.

Scalable Management

Supported handling larger sets of property data more effectively.

Product Walkthrough

1. Property Upload

Built a property upload workflow that helps business owners add and organize listing information more efficiently.

  • Save property details into the database
  • Auto-generate addresses during upload
  • Upload and associate property images

What I Learned

  • Learned how to structure CRUD workflows more clearly across frontend and backend.
  • Improved understanding of relational data handling with MySQL.
  • Gained experience designing data-heavy interfaces that still feel manageable for users.

Next Steps

  • Add role-based access permissions
  • Improve validation and error states in forms
  • Enhance advanced filtering and search options
  • Optimize image upload and management flow

Yooran Kim

© 2025 Yooran Kim. All right reserved.

Built using Next.js, Typescript, Tailwind CSS and Framer Motion :)