mm.
Back to Portfolio
Enterprise PlatformMobileCross-PlatformConfidential

Piko Digital Platform

Complete admin infrastructure and cross-platform mobile app for a production social platform — 1,000+ daily active users, 300% analytics improvement, 60% reduction in admin overhead.

1,000+
Daily active users
300%
Analytics improvement
60%
Admin time saved
3
Platforms

Confidential internal system. Architecture, technical decisions, and measurable outcomes are documented below. Screenshots and source code are not publicly available due to enterprise security requirements.

01

Overview

PetoKingdom (Piko) is a social platform for pet owners — profiles, community, events, messaging. This case study covers two systems: the admin platform that made operating a 1,000+ user production platform manageable for a lean team, and the cross-platform mobile and web application that end users interact with.

System 1

Admin Platform & Analytics

02

Stack

Frontend

React 19 · TypeScript · Material-UI
Redux · Chart.js · Plotly.js

Backend

Java 21 · Spring Boot 3 · Spring Security
Spring Data JPA · JWT · BCrypt

Database

PostgreSQL · 15+ tables
CTEs · Window functions · Flyway migrations

Infrastructure

Docker · AWS · AWS SES
GitHub Actions CI/CD
03

Analytics Platform

Unified 15+ data sources into real-time dashboards tracking DAU/MAU, registration trends, user growth vs. churn, platform growth metrics, content analytics, and peak activity windows. Complex SQL using CTEs and window functions.

-- Monthly growth with MoM comparison
WITH monthly_stats AS (
  SELECT
    DATE_FORMAT(created_at, '%Y-%m') AS month,
    COUNT(DISTINCT user_id) AS active_users,
    COUNT(*) AS total_posts,
    LAG(COUNT(DISTINCT user_id))
      OVER (ORDER BY DATE_FORMAT(created_at, '%Y-%m')) AS prev_month_users
  FROM activities
  WHERE created_at >= :startDate
  GROUP BY month
)
SELECT
  month,
  active_users,
  ROUND(((active_users - prev_month_users) / prev_month_users) * 100, 2) AS growth_rate
FROM monthly_stats
ORDER BY month DESC
04

JWT Authentication + 4-Tier RBAC

Complete security infrastructure built foundational — stateless JWT with access + refresh token rotation, BCrypt password hashing, 4-tier role hierarchy (Super Admin → Viewer), granular permission system, account lockout after failed attempts, and comprehensive audit logging. Zero security incidents post-launch.

05

User Management System

Full CRUD with server-side pagination, Specification-based filtering (role, status, date range, full-text search), bulk operations, and role assignment with audit trails — managing 1,000+ users without performance degradation.

@Service
public class UserService {
  public Page<UserResponse> getUsers(
      String search, Role role, UserStatus status, Pageable pageable) {
    Specification<User> spec = Specification
      .where(UserSpecification.hasSearchTerm(search))
      .and(UserSpecification.hasRole(role))
      .and(UserSpecification.hasStatus(status));
    return userRepository.findAll(spec, pageable)
      .map(this::mapToUserResponse);
  }
}
06

Automated Content Moderation

Multi-tab report management (Posts, Messages, Users, Events) with bulk actions — ban user, delete content, dismiss report — plus confirmation dialogs, audit trails, and moderation trend analytics. 50% reduction in review cycle time.

System 2

Cross-Platform Mobile App

07

Stack

Core

React Native 0.76 · Expo 52 · TypeScript 5.3

State & Data

Redux Toolkit · Apollo Client · GraphQL subscriptions

Media

Vision Camera 4 · FFmpegKit · FastImage

Auth & i18n

Firebase Auth · Google Sign-In · Apple Auth
LinguiJS 5 — English + Mandarin Chinese
08

50+ Component Library

Platform file-extension adapters (.native.tsx / .web.tsx) with shared imports — same import on every platform, different renderer. Every component documented in Storybook. Result: 40% faster development velocity for every subsequent feature.

09

Real-Time Social Features

GraphQL subscriptions over WebSocket — instant messaging, live notifications, feed updates. Apollo cache writes on subscription events (no refetch needed). Optimistic UI for likes and follows.

10

Media Pipeline

Image: HEIC→JPEG, 70% quality compression, chunked CDN upload. Video: FFmpeg H.264 compression achieving 60–80% size reduction with imperceptible quality loss at mobile viewing sizes.

const compressVideo = async (inputPath: string): Promise<string> => {
  const output = `${FileSystem.cacheDirectory}v_${Date.now()}.mp4`;
  // H.264 · CRF 28 · fast preset · AAC audio · web-optimised moov atom
  const cmd = `-i ${inputPath} -c:v libx264 -crf 28 -preset fast `
    + `-c:a aac -b:a 128k -movflags +faststart ${output}`;
  const session = await FFmpegKit.execute(cmd);
  if (ReturnCode.isSuccess(await session.getReturnCode())) return output;
  throw new Error(await session.getOutput());
};
11

Quantitative Results

MetricResult
Platform scale1,000+ daily active users
Analytics improvement300% — 15+ data sources unified
Admin time saved60% via automated RBAC workflows
Development velocity40% faster via 50+ component library
Moderation efficiency50% faster review cycles
Developer onboarding40% faster via 20+ technical SOPs
Video compression60–80% size reduction via FFmpeg
Platform coverageiOS · Android · Web from single codebase

Full Stack

React 19React Native 0.76Expo 52TypeScriptMaterial-UIRedux ToolkitJava Spring Boot 3Spring SecurityPostgreSQLGraphQLApollo ClientFirebase AuthLinguiJS 5FFmpegKitDockerAWS SESGitHub Actions