diff --git a/.gitignore b/.gitignore index 4d29575de..8692cf66d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ # misc .DS_Store +.env .env.local .env.development.local .env.test.local diff --git a/GEMINI.md b/GEMINI.md new file mode 100644 index 000000000..9bdc322fc --- /dev/null +++ b/GEMINI.md @@ -0,0 +1,69 @@ +# Project Overview + +This project is a responsive developer portfolio template built with React, TypeScript, and SCSS. It aims to provide a customizable layout for showcasing past projects, career history, and skill sets. + +**Key Technologies:** + +- **Frontend Framework:** React +- **Language:** TypeScript +- **Styling:** SCSS (Sass) +- **UI Components:** Material-UI (`@mui/material`), Emotion (`@emotion/react`, `@emotion/styled`) +- **Icons:** Font Awesome (`@fortawesome/react-fontawesome`) +- **Animations/Effects:** `react-vertical-timeline-component` +- **Build Tool:** Create React App (`react-scripts`) + +**Features:** + +- Open source and free to use. +- Responsive design and mobile-friendly. +- Supports both dark and light modes. +- Highly customizable multi-component layout. + +# Building and Running + +This project uses `npm` for package management and script execution. + +## Installation + +To install the project dependencies, run: + +```bash +npm install +``` + +
Got a project waiting to be realized? Let's collaborate and make it happen!
++ Got a project waiting to be realized? Let's collaborate and make it + happen! +
I have built a diverse array of web applications from scratch using modern technologies such as React and Flask. I have a strong proficiency in the SDLC process and frontend + backend development.
-Once the application is built, I help clients set up DevOps testing, CI/CD pipelines, and deployment automation to support the successful Go-Live.
-Stay relevant in the market by leveraging the latest AI models in your projects. I have professional experience building enterprise grade GenAI-enabled solutions to empower intelligent decision making.
-{description}
+A portfolio designed & built by Yuji Sato with 💜
++ A portfolio designed & built by{" "} + + Anne Mahamadou + {" "} + with 💜 +
); } -export default Footer; \ No newline at end of file +export default Footer; diff --git a/src/components/Main.tsx b/src/components/Main.tsx index 72a808243..f324c8d68 100644 --- a/src/components/Main.tsx +++ b/src/components/Main.tsx @@ -1,27 +1,55 @@ -import React from "react"; -import GitHubIcon from '@mui/icons-material/GitHub'; -import LinkedInIcon from '@mui/icons-material/LinkedIn'; -import '../assets/styles/Main.scss'; +import GitHubIcon from "@mui/icons-material/GitHub"; +import LinkedInIcon from "@mui/icons-material/LinkedIn"; +import avatar from "../assets/images/temp.jpeg"; +import "../assets/styles/Main.scss"; function Main() { - return (AI & Software Engineer
++ Welcome to my personal portfolio! I am a passionate AI & Software + Engineer specializing in building robust backend systems and + innovative GenAI-enabled solutions. My experience ranges from + developing e-commerce platforms to creating advanced RAG-based + chatbots. +
Full Stack Engineer
Developed movie finder app with semantic search and sentiment analysis using OpenAI GPT-3.5 Turbo, Qdrant, React, and Flask.
-Designed, developed, and launched a 3D multiplayer racing game with C# and Unity. This is available on Itch.io for gamers worldwide to enjoy.
-Developed and released a 2D shooting game with C# and Unity. This project is hosted on the Itch.io public marketplace.
-This is an online educational platform that provides high-quality, data science-focused learning resources in the Japanese language. I created the entire platform from scratch using Ruby on Rails.
-This mobile application allows realtors in Japan to securely manage their property information and view future income predictions. This app is built with Ruby on Rails and JavaScript.
-Built official charts for COVID/vaccination tracking for an educational institution using JavaScript and the Google Sheets API v4. The dashboard served the university's leadership in their decision-making processes.
-Analyzed the real estate market in Japan and predicted property prices by implementing statistical methods such as OLS and multi-regression analysis. This project leveraged Python and various libraries such as Pandas, NumPy, Matplotlib, and Scikit-Learn.
-Designed and developed a custom component for a CMS-based platform (e.g., 'Brightspot') using Java, Handlebars, and LESS. University students can find their majors of interest through this module.
-Created an interactive CSV table generator with Java, Handlebars, and LESS. This project helps transfer students to quickly identify eligible credits.
-Developed and released an Android mobile application using Java and Android Studio that runs a 2D shooting game.
-{description}
+- Full-stack Web Development, GenAI/LLM, Project Management, Business Development -
- -- Frontend Development, Backend Development, User Experience, Team Leading -
- -- Full-stack Development, API Development, User Experience -
- -- Automation, Data Governance, Statistical Analysis -
- +{description}
+ + ); +} + +export default TimelineItem; diff --git a/src/components/index.js b/src/components/index.ts similarity index 100% rename from src/components/index.js rename to src/components/index.ts diff --git a/src/index.scss b/src/index.scss index 86bb84659..79a93173a 100644 --- a/src/index.scss +++ b/src/index.scss @@ -1,22 +1,22 @@ body { margin: 0; - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", - "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", - sans-serif; + font-family: + -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", + "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-size: 1.1rem !important; } code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace !important; + font-family: + source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace !important; font-size: 1rem !important; } .main-container { position: relative; background-color: #0d1116; - } a { @@ -25,10 +25,21 @@ a { a:hover { color: #5000ca; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out; } -p, a, h1, h2, h3, h4, h5, label, button { +p, +a, +h1, +h2, +h3, +h4, +h5, +label, +button { color: white; font-family: "Lato", sans-serif; } @@ -50,7 +61,8 @@ p, a, h1, h2, h3, h4, h5, label, button { } .navigation-bar-responsive { - span, p { + span, + p { color: #0d1116; font-family: "Lato", sans-serif; } @@ -99,13 +111,24 @@ p, a, h1, h2, h3, h4, h5, label, button { background-color: #f8f9fa; } - p, a, h1, h2, h3, h4, h5, label, button { + p, + a, + h1, + h2, + h3, + h4, + h5, + label, + button { color: #0d1116; } a:hover { color: #5000ca; - transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out; + transition: + color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out; } .navigation-bar svg { @@ -120,20 +143,20 @@ p, a, h1, h2, h3, h4, h5, label, button { color: #0d1116; } - .chip { - background-color: rgba(0, 0, 0, 0.08); - box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); - } - .vertical-timeline::before { background-color: rgba(0, 0, 0, 0.08); } .vertical-timeline--animate .vertical-timeline-element-content.bounce-in { - box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12); + box-shadow: + 0px 3px 1px -2px rgba(0, 0, 0, 0.2), + 0px 2px 2px 0px rgba(0, 0, 0, 0.14), + 0px 1px 5px 0px rgba(0, 0, 0, 0.12); } - .vertical-timeline--two-columns .vertical-timeline-element-content .vertical-timeline-element-date { + .vertical-timeline--two-columns + .vertical-timeline-element-content + .vertical-timeline-element-date { color: gray; } @@ -144,12 +167,77 @@ p, a, h1, h2, h3, h4, h5, label, button { .flex-chips .chip-title { color: #0d1116; } + + .MuiInputBase-root { + color: #0d1116 !important; + background-color: white !important; + } + + .MuiInputBase-input { + color: #0d1116 !important; + background-color: transparent !important; + } + + .MuiFormLabel-root { + color: #0d1116 !important; + } + + .MuiFormHelperText-root { + color: #0d1116 !important; + } +} + +.dark-mode { + .MuiInputBase-root { + color: white !important; + background-color: #0d1116 !important; + } + + .MuiInputBase-input { + color: white !important; + background-color: transparent !important; + } + + .MuiFormLabel-root { + color: white !important; + } + + .MuiFormHelperText-root { + color: white !important; + } +} + +.chip-dark { + background-color: rgba(255, 255, 255, 0.1) !important; + color: white !important; + box-shadow: + 0px 3px 1px -2px rgba(193, 182, 182, 0.2), + 0px 2px 2px 0px rgba(193, 182, 182, 0.2), + 0px 1px 5px 0px rgba(193, 182, 182, 0.2); + + .MuiChip-label { + color: white !important; + } +} + +.chip-light { + background-color: #f0f0f0 !important; + color: #0d1116 !important; + box-shadow: + 0px 3px 1px -2px rgba(0, 0, 0, 0.2), + 0px 2px 2px 0px rgba(0, 0, 0, 0.2), + 0px 1px 5px 0px rgba(0, 0, 0, 0.2); + + .MuiChip-label { + color: #0d1116 !important; + } } + @media screen { @media (max-width: 768px) { .items-container { padding: 5% 5%; } } -} \ No newline at end of file +} diff --git a/src/index.tsx b/src/index.tsx index 4c316beda..112bbae0e 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,16 +1,15 @@ -import React from 'react'; -import ReactDOM from 'react-dom/client'; + +import { createRoot } from 'react-dom/client'; +import { StrictMode } from 'react'; import './index.scss'; import App from './App'; import reportWebVitals from './reportWebVitals'; -const root = ReactDOM.createRoot( - document.getElementById('root') as HTMLElement -); +const root = createRoot(document.getElementById('root') as HTMLElement); root.render( -