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)