API_portfolio / app.py
NGOC1712's picture
Upload 2 files
20fd7c0 verified
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import uvicorn
import os
app = FastAPI()
# Mount static files
app.mount("/static", StaticFiles(directory="static"), name="static")
# Templates
templates = Jinja2Templates(directory="templates")
# Portfolio Data
portfolio_data = {
"name": "Tran Bao Ngoc",
"tagline": "Passionate about AI, Machine Learning, and Building Scalable Solutions",
"location": "Hanoi, Vietnam",
"email": "trbaongoc17@gmail.com",
"github": "https://github.com/TrBn17",
"huggingface": "https://huggingface.co/NGOC1712",
"about": (
"I have almost 2 years of learning, research, and development in the AI industry. "
"I've joined many AI projects across different domains: Healthcare, Banking, Technical Operations. "
"I'm looking for an environment where I can grow my technical and soft skills, "
"while committing long-term and contributing to the company in this AI era."
),
"tech_stack": {
"ai_engines": [
{"name": "TensorFlow", "level": 85, "icon": "devicon-tensorflow-original colored"},
{"name": "PyTorch", "level": 90, "icon": "devicon-pytorch-original colored"},
{"name": "Hugging Face", "level": 75, "icon": "custom-icon", "icon_src": "/static/icons/huggingface.png"},
{"name": "OpenAI", "level": 80, "icon": "custom-icon", "icon_src": "/static/icons/openai.png"},
{"name": "Langchain", "level": 85, "icon": "custom-icon", "icon_src": "/static/icons/langchain.png"}
],
"programming_languages": [
{ "name": "Python", "level": 95, "icon": "devicon-python-plain colored" },
{"name": "JavaScript", "level": 65, "icon": "devicon-javascript-plain colored"},
{"name": "HTML/CSS", "level": 70, "icon": "devicon-html5-plain colored"}
],
"databases": [
{"name": "PostgreSQL", "level": 95, "icon": "devicon-postgresql-plain colored"},
{"name": "Redis", "level": 60, "icon": "devicon-redis-plain colored"},
{"name": "SQL", "level": 75, "icon": "devicon-sqldeveloper-plain colored"},
{"name": "MinIO", "level": 85, "icon": "custom-icon", "icon_src": "/static/icons/minio.png"},
{"name": "MongoDB", "level": 50, "icon": "devicon-mongodb-plain colored"}
],
"devops_tools": [
{"name": "Docker", "level": 95, "icon": "devicon-docker-plain colored"},
{"name": "Grafana", "level": 65, "icon": "devicon-grafana-plain colored"},
{"name": "Prometheus", "level": 55, "icon": "fas fa-fire"},
{"name": "Loki", "level": 50, "icon": "custom-icon", "icon_src": "/static/icons/Loki.png"},
{"name": "Kubernetes", "level": 45, "icon": "devicon-kubernetes-plain colored"}
],
"frameworks": [
{"name": "FastAPI", "level": 90, "icon": "devicon-fastapi-plain colored"},
{"name": "Flask", "level": 70, "icon": "devicon-flask-original colored"},
{"name": "Django", "level": 60, "icon": "devicon-django-plain colored"}
]
},
"experience": [
{
"title": "AI Engineer",
"company": "FOXAi Joint Stock Company",
"period": "May 2024 - Present",
"description": [
"Developed scalable backend services using Python, FastAPI",
"Collaborated with business analysts and product managers",
"Built demo services with Hugging Face for clients/internal showcases",
"Created technical documentation and system architecture diagrams",
"Worked on low-resource languages (e.g., Lao) with limited training data"
]
},
{
"title": "AI Intern",
"company": "Wisdom Brain",
"period": "Sep 2023 - Feb 2024",
"description": [
"Researched layered architectures in reinforcement learning",
"Gained hands-on experience with deep learning models"
]
}
],
"projects": [
{
"name": "AI-Powered Chatbot System",
"description": "Developed chatbot integrating OpenAI, Deepseek, Gemini APIs",
"languages": ["Python"],
"technologies": ["FastAPI", "OpenAI API", "Deepseek", "Gemini", "Langchain", "PostgreSQL", "Redis", "Docker", "MinIO"],
"role": "Core Developer",
"highlights": [
"Multi-model integration",
"Scalable architecture",
"Real-time responses",
"Streaming support"
]
},
{
"name": "eKYC Identity Verification",
"description": "Built eKYC system for ID/passport verification",
"languages": ["Python", "JavaScript", "HTML", "CSS"],
"technologies": ["Computer Vision", "OCR", "Deep Learning", "FastAPI", "Docker", "PostgreSQL", "Redis", "MinIO", "Gemini API"],
"role": "Core Developer",
"highlights": [
"High accuracy OCR",
"Real-time processing",
"Security compliance"
]
},
{
"name": "Document Processing System",
"description": "Developed RAG system for various document types",
"languages": ["Python"],
"technologies": ["Qdrant", "Docling", "FastAPI", "Docker", "PostgreSQL", "Pymupdf", "Langchain", "OpenAI", "Hugging Face"],
"role": "Core Developer",
"highlights": [
"Multi-language support",
"High accuracy",
"Fast processing"
]
},
{
"name": "Banking ML Solution",
"description": "Applied ML algorithms to banking challenges",
"languages": ["Python"],
"technologies": ["Scikit-learn", "Pandas", "NumPy", "Docker"],
"role": "Technical Support",
"highlights": [
"Risk assessment",
"Fraud detection",
"Customer segmentation"
]
}
],
"education": {
"degree": "Bachelor of Business Data Analytics",
"school": "International School - VNU",
"coursework": ["Business Analysis", "Data Analysis", "Machine Learning", "Deep Learning"]
},
"certifications": [
"AI Ethics Certificate",
"Google Data Analytics Professional Certificate",
"B2 VSTEP Certificate"
]
}
@app.get("/", response_class=HTMLResponse)
async def index(request: Request):
return templates.TemplateResponse("index.html", {"request": request, "data": portfolio_data})
@app.get("/api/data")
async def get_data():
return portfolio_data
if __name__ == "__main__":
uvicorn.run("app:app", host="0.0.0.0", port=8000, reload=True)