NGOC1712 commited on
Commit
20fd7c0
·
verified ·
1 Parent(s): 7c40da9

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +167 -0
  2. requirements.txt +4 -0
app.py ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI, Request
2
+ from fastapi.responses import HTMLResponse
3
+ from fastapi.staticfiles import StaticFiles
4
+ from fastapi.templating import Jinja2Templates
5
+ import uvicorn
6
+ import os
7
+
8
+ app = FastAPI()
9
+
10
+ # Mount static files
11
+ app.mount("/static", StaticFiles(directory="static"), name="static")
12
+
13
+ # Templates
14
+ templates = Jinja2Templates(directory="templates")
15
+
16
+ # Portfolio Data
17
+ portfolio_data = {
18
+ "name": "Tran Bao Ngoc",
19
+ "tagline": "Passionate about AI, Machine Learning, and Building Scalable Solutions",
20
+ "location": "Hanoi, Vietnam",
21
+ "email": "trbaongoc17@gmail.com",
22
+ "github": "https://github.com/TrBn17",
23
+ "huggingface": "https://huggingface.co/NGOC1712",
24
+
25
+ "about": (
26
+ "I have almost 2 years of learning, research, and development in the AI industry. "
27
+ "I've joined many AI projects across different domains: Healthcare, Banking, Technical Operations. "
28
+ "I'm looking for an environment where I can grow my technical and soft skills, "
29
+ "while committing long-term and contributing to the company in this AI era."
30
+ ),
31
+
32
+ "tech_stack": {
33
+ "ai_engines": [
34
+ {"name": "TensorFlow", "level": 85, "icon": "devicon-tensorflow-original colored"},
35
+ {"name": "PyTorch", "level": 90, "icon": "devicon-pytorch-original colored"},
36
+ {"name": "Hugging Face", "level": 75, "icon": "custom-icon", "icon_src": "/static/icons/huggingface.png"},
37
+ {"name": "OpenAI", "level": 80, "icon": "custom-icon", "icon_src": "/static/icons/openai.png"},
38
+ {"name": "Langchain", "level": 85, "icon": "custom-icon", "icon_src": "/static/icons/langchain.png"}
39
+ ],
40
+ "programming_languages": [
41
+ { "name": "Python", "level": 95, "icon": "devicon-python-plain colored" },
42
+ {"name": "JavaScript", "level": 65, "icon": "devicon-javascript-plain colored"},
43
+ {"name": "HTML/CSS", "level": 70, "icon": "devicon-html5-plain colored"}
44
+ ],
45
+ "databases": [
46
+ {"name": "PostgreSQL", "level": 95, "icon": "devicon-postgresql-plain colored"},
47
+ {"name": "Redis", "level": 60, "icon": "devicon-redis-plain colored"},
48
+ {"name": "SQL", "level": 75, "icon": "devicon-sqldeveloper-plain colored"},
49
+ {"name": "MinIO", "level": 85, "icon": "custom-icon", "icon_src": "/static/icons/minio.png"},
50
+ {"name": "MongoDB", "level": 50, "icon": "devicon-mongodb-plain colored"}
51
+ ],
52
+ "devops_tools": [
53
+ {"name": "Docker", "level": 95, "icon": "devicon-docker-plain colored"},
54
+ {"name": "Grafana", "level": 65, "icon": "devicon-grafana-plain colored"},
55
+ {"name": "Prometheus", "level": 55, "icon": "fas fa-fire"},
56
+ {"name": "Loki", "level": 50, "icon": "custom-icon", "icon_src": "/static/icons/Loki.png"},
57
+ {"name": "Kubernetes", "level": 45, "icon": "devicon-kubernetes-plain colored"}
58
+ ],
59
+ "frameworks": [
60
+ {"name": "FastAPI", "level": 90, "icon": "devicon-fastapi-plain colored"},
61
+ {"name": "Flask", "level": 70, "icon": "devicon-flask-original colored"},
62
+ {"name": "Django", "level": 60, "icon": "devicon-django-plain colored"}
63
+ ]
64
+ },
65
+
66
+ "experience": [
67
+ {
68
+ "title": "AI Engineer",
69
+ "company": "FOXAi Joint Stock Company",
70
+ "period": "May 2024 - Present",
71
+ "description": [
72
+ "Developed scalable backend services using Python, FastAPI",
73
+ "Collaborated with business analysts and product managers",
74
+ "Built demo services with Hugging Face for clients/internal showcases",
75
+ "Created technical documentation and system architecture diagrams",
76
+ "Worked on low-resource languages (e.g., Lao) with limited training data"
77
+ ]
78
+ },
79
+ {
80
+ "title": "AI Intern",
81
+ "company": "Wisdom Brain",
82
+ "period": "Sep 2023 - Feb 2024",
83
+ "description": [
84
+ "Researched layered architectures in reinforcement learning",
85
+ "Gained hands-on experience with deep learning models"
86
+ ]
87
+ }
88
+ ],
89
+
90
+ "projects": [
91
+ {
92
+ "name": "AI-Powered Chatbot System",
93
+ "description": "Developed chatbot integrating OpenAI, Deepseek, Gemini APIs",
94
+ "languages": ["Python"],
95
+ "technologies": ["FastAPI", "OpenAI API", "Deepseek", "Gemini", "Langchain", "PostgreSQL", "Redis", "Docker", "MinIO"],
96
+ "role": "Core Developer",
97
+ "highlights": [
98
+ "Multi-model integration",
99
+ "Scalable architecture",
100
+ "Real-time responses",
101
+ "Streaming support"
102
+ ]
103
+ },
104
+ {
105
+ "name": "eKYC Identity Verification",
106
+ "description": "Built eKYC system for ID/passport verification",
107
+ "languages": ["Python", "JavaScript", "HTML", "CSS"],
108
+ "technologies": ["Computer Vision", "OCR", "Deep Learning", "FastAPI", "Docker", "PostgreSQL", "Redis", "MinIO", "Gemini API"],
109
+ "role": "Core Developer",
110
+ "highlights": [
111
+ "High accuracy OCR",
112
+ "Real-time processing",
113
+ "Security compliance"
114
+ ]
115
+ },
116
+ {
117
+ "name": "Document Processing System",
118
+ "description": "Developed RAG system for various document types",
119
+ "languages": ["Python"],
120
+ "technologies": ["Qdrant", "Docling", "FastAPI", "Docker", "PostgreSQL", "Pymupdf", "Langchain", "OpenAI", "Hugging Face"],
121
+ "role": "Core Developer",
122
+ "highlights": [
123
+ "Multi-language support",
124
+ "High accuracy",
125
+ "Fast processing"
126
+ ]
127
+ },
128
+ {
129
+ "name": "Banking ML Solution",
130
+ "description": "Applied ML algorithms to banking challenges",
131
+ "languages": ["Python"],
132
+ "technologies": ["Scikit-learn", "Pandas", "NumPy", "Docker"],
133
+ "role": "Technical Support",
134
+ "highlights": [
135
+ "Risk assessment",
136
+ "Fraud detection",
137
+ "Customer segmentation"
138
+ ]
139
+ }
140
+ ],
141
+
142
+ "education": {
143
+ "degree": "Bachelor of Business Data Analytics",
144
+ "school": "International School - VNU",
145
+ "coursework": ["Business Analysis", "Data Analysis", "Machine Learning", "Deep Learning"]
146
+ },
147
+
148
+ "certifications": [
149
+ "AI Ethics Certificate",
150
+ "Google Data Analytics Professional Certificate",
151
+ "B2 VSTEP Certificate"
152
+ ]
153
+ }
154
+
155
+
156
+ @app.get("/", response_class=HTMLResponse)
157
+ async def index(request: Request):
158
+ return templates.TemplateResponse("index.html", {"request": request, "data": portfolio_data})
159
+
160
+
161
+ @app.get("/api/data")
162
+ async def get_data():
163
+ return portfolio_data
164
+
165
+
166
+ if __name__ == "__main__":
167
+ uvicorn.run("app:app", host="0.0.0.0", port=8000, reload=True)
requirements.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ fastapi>=0.104.0
2
+ uvicorn[standard]>=0.24.0
3
+ jinja2>=3.1.0
4
+ python-multipart>=0.0.6