EG
Resume

Kalla Property Management is where I got my first real full-stack role. frontend AND backend. both at the same time. scary but exciting. 🚀

The Project

Kalla Group owns properties across Indonesia - commercial spaces, residential, retail. managing them was a mess of spreadsheets, emails, and lost information. they needed a centralized system.

What I Built

Property Listings Module

  • CRUD operations for property listings
  • Photo gallery management
  • Location mapping integration
  • Availability status tracking
  • Search and filter functionality

Tenant Management

  • Tenant profiles and history
  • Lease agreement tracking
  • Document storage
  • Communication log
  • Maintenance request submission

Financial Module

  • Rent payment tracking
  • Invoice generation
  • Payment reminder system
  • Financial reports
  • Integration with payment gateways

Admin Dashboard

  • Overview of all properties
  • Occupancy rates
  • Revenue analytics
  • Maintenance scheduling
  • User role management

Technical Deep Dive

Frontend:

// property listing component example
async function PropertyList({ filters }: PropertyFilters) {
  const properties = await getProperties(filters);
  
  return (
    <div className="grid grid-cols-3 gap-4">
      {properties.map(property => (
        <PropertyCard key={property.id} {...property} />
      ))}
    </div>
  );
}

Backend (NestJS):

// property module structure
@Module({
  imports: [PrismaModule],
  controllers: [PropertyController],
  providers: [PropertyService],
})
export class PropertyModule {}

Challenges

Full-stack scope First time owning both frontend and backend. had to think about:

  • API design from frontend perspective
  • Database queries optimization
  • Authentication flow across both
  • Error handling consistency

Real estate domain knowledge Had to learn industry terms: CAP rate, NLA, CAM, lease types. spent time with stakeholders to understand workflows.

Complex queries Property search with multiple filters + availability + price range = interesting SQL challenges.

Features I'm Proud Of

  1. Dynamic pricing calculator - based on lease type, duration, property type
  2. Maintenance request workflow - submit → assign → track → resolve
  3. Document generator - lease agreements from templates
  4. Dashboard analytics - visual representation of portfolio performance

Tech Decisions

Why NestJS?

  • Structured architecture (modules, services, controllers)
  • Dependency injection out of the box
  • Great TypeScript support
  • CLI tools for code generation

Why Prisma?

  • Type-safe queries
  • Great migration system
  • Intuitive API
  • Works great with Next.js

Results

  • ✅ 50+ properties managed in system
  • ✅ 70% reduction in manual data entry
  • ✅ Integrated payment tracking
  • ✅ Tenant self-service portal launched

Lessons Learned

  1. Full-stack means understanding both sides deeply
  2. Domain knowledge is as important as technical skills
  3. API design matters - think before you code
  4. Testing would have saved me hours (writing tests now, promise)

being full-stack is a superpower. you see the whole picture, not just your side of the fence.

Related Articles