import { AboutMe } from './dev-journey'

// A brief introduction to who I am and what I do

$whoami

I'm a passionate mobile developer specializing in creating responsive, intuitive applications for iOS and Android platforms. With a strong foundation in React Native and Swift, I build apps that deliver exceptional user experiences while maintaining clean, maintainable code architecture.

$ls -la ./mobile-skills

  • React Native
  • TypeScript
  • Expo

  • Swift/iOS
  • UIKit/SwiftUI
  • Native Modules
$cat ./passion.txt

I'm passionate about crafting mobile experiences that feel natural and intuitive to users. I believe in performance-first development, responsive design, and creating apps that work flawlessly across different devices and platforms.

dev-bio.js
1const developerBio = {
2 name: "Ngoc Le",
3 role: "Mobile App Developer",
4 experience: 5, // years
5 location: "Ho Chi Minh, Vietnam",
6 education: University of Information Technology",
7 specializations: [
8 "React Native",
9 "Swift",
10 "iOS Development",
11 "Android Development"
12 ],
13 currentlyLearning: "SwiftUI & React Native New Architecture",
14};
15
16// Development approach
17function createMobileApp(requirements) {
18 const architecture = planArchitecture(requirements);
19 const ui = designUserExperience(requirements);
20 const code = implementCleanCode(architecture, ui);
21 const testedApp = thoroughlyTest(code);
22 return optimizePerformance(testedApp);
23}

function mobileProjects() {

// A showcase of my mobile application development work

const MonokaiToolkit

All-in-one toolkit offering Facebook automation, tools, and system utilities, over 1 million users.

useStepCounter.ts
1// Facebook automation module
2import React, { useState, useEffect } from 'react';
3import { View, Text, TouchableOpacity, ActivityIndicator } from 'react-native';
4import { useDispatch, useSelector } from 'react-redux';
5import { startAutomation, stopAutomation, setConfig } from '../store/actions';
6import { RootState } from '../store/types';
7
8export const FacebookAutomation: React.FC = () => {
9 const dispatch = useDispatch();
10 const { isRunning, progress, error } = useSelector((state: RootState) => state.automation);
11 const [config, setLocalConfig] = useState({
12 postFrequency: 'daily',
13 targetGroups: [],
14 contentType: 'images'
15 });
16
17 useEffect(() => {
18 // Initialize automation configuration
19 dispatch(setConfig(config));
20
21 return () => {
22 // Clean up any running processes
23 if (isRunning) {
24 dispatch(stopAutomation());
25 }
26 };
27 }, []);
28
29 const handleStartAutomation = () => {
30 dispatch(startAutomation(config));
31 };
32
33 const handleStopAutomation = () => {
34 dispatch(stopAutomation());
35 };
36
37 return (
38 <View>
39 <Text>Facebook Automation</Text>
40 {isRunning ? (
41 <>
42 <ActivityIndicator size="small" color="#0000ff" />
43 <Text>Progress: {progress}%</Text>
44 <TouchableOpacity onPress={handleStopAutomation}>
45 <Text>Stop</Text>
46 </TouchableOpacity>
47 </>
48 ) : (
49 <TouchableOpacity onPress={handleStartAutomation}>
50 <Text>Start Automation</Text>
51 </TouchableOpacity>
52 )}
53 {error && <Text style={{ color: 'red' }}>{error}</Text>}
54 </View>
55 );
56};
React NativeReduxFirebaseREST APIFigmaXcode CloudFastlane

const SoundSpace / U2Music

Music streaming platform featuring audio playback, discovery, and user playlist management.

useStepCounter.ts
1// Synchronized lyrics player component
2import React, { useState, useEffect, useRef } from 'react';
3import { View, Text, ScrollView, StyleSheet } from 'react-native';
4import { useSelector } from 'react-redux';
5import { io, Socket } from 'socket.io-client';
6import { RootState } from '../store/types';
7import { LyricLine } from '../types';
8
9export const SynchronizedLyrics: React.FC = () => {
10 const scrollViewRef = useRef<ScrollView>(null);
11 const socketRef = useRef<Socket | null>(null);
12 const { currentTrack, isPlaying, currentPosition } = useSelector((state: RootState) => state.player);
13 const [lyrics, setLyrics] = useState<LyricLine[]>([]);
14 const [activeLine, setActiveLine] = useState<number>(0);
15
16 useEffect(() => {
17 // Connect to real-time socket server
18 socketRef.current = io('https://api.soundspace.com');
19
20 // Listen for synchronized lyrics updates
21 socketRef.current.on('lyrics_update', (data) => {
22 setLyrics(data.lines);
23 });
24
25 return () => {
26 socketRef.current?.disconnect();
27 };
28 }, []);
29
30 return (
31 <ScrollView ref={scrollViewRef} style={styles.container}>
32 {lyrics.map((line, index) => (
33 <Text
34 key={index}
35 style={[styles.line, index === activeLine && styles.activeLine]}
36 >
37 {line.text}
38 </Text>
39 ))}
40 </ScrollView>
41 );
42};
43
44const styles = StyleSheet.create({
45 container: {
46 flex: 1,
47 padding: 16
48 },
49 line: {
50 fontSize: 16,
51 color: '#888',
52 marginVertical: 8
53 },
54 activeLine: {
55 color: '#fff',
56 fontSize: 18,
57 fontWeight: 'bold'
58 }
59});
React NativeFirebaseReact NavigationRedux ToolkitSocketIOReactotron

}

class MobileSkills {

// Technical proficiencies in mobile app development

$ls -la ./mobile-skills

# React Native

React Native Core
TypeScript
React Navigation
Native Modules
Expo

# iOS Development(knowledge)

Swift
UIKit
SwiftUI
Xcode
App Store Connect

# Mobile UI/UX(knowledge)

Responsive Design
Animation
Gesture Handling
Accessibility
Design Systems

# Development Tools

Git
CI/CD (Fastlane)
Firebase
Jest/Testing
App Performance
$ _

}

async function contactMe() {

// Let's connect and create something amazing together

contact.sh
$
$
$

}