{"data":{"featured":{"edges":[{"node":{"frontmatter":{"title":"TraceOps","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAACF0lEQVQoz32Ry28SURTGR1MtL4fhDcMwzAzQWESxpIn+BcbEGBcmWl9LE2u0pOAfolHLoyRupCXWtr53mlBwKe5mwVLdGVNG5O3lM1yhgdT4Jb+cc0/u/ZL7HQZD9ft9EEIwrt3dXdTrdWiaBk2r4T8aPVSZdruNXq9HDQfaKZWRyz1BofAM+bXCBE/z61gbnfPr2NjYxPaLV9jaekmeb26juFNSmW9fv6Db7WJgPNCtxTs4OGUAyzmgM5qhN3K06owc7Y9wDuhNHHQGM4ysDazFAbPVSaamTTh/4aLKvHv/Aa1WC41GgxouxRMwsFb4lRl4RWUPnxKkVfAHJirvkyEqQWJz8Vi4ekNlfgPodDo0q4Hiy0mYzHb4pCA8PmnPUJAC4EWZzsdnXr8CUQ5Rw8tXrqvM9x8aXcboy0vLSZjtbiih2cFFCHIQXn8Abq+f4hGksf5v5X0yMVtduLRwTWWav36i1+ui2WxSw7uJBHg5gOjcKRw7HkMgGoE0MwunW4CLF/+JR5DIIEtq2GtoE/uPJ+9BUEI4GTuN8Il5hKMxRKLzCEfmIAePDvObRJSDxOYcZvip8hnVahWVSgV9QnBz8TYOTBvg5iVYHDwsTh5WJw+L3QMja8VhPbsPnZEjDHMIZ86eU5lyuUTNisUiarUaSqWPuP/gIdLZVaTSWcpKOoOVVIb26czqPjLZHHn0OIXXb96qfwAXqdFBVIY2oQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/903b818f5723defe4272bd520ac8bda4/49177/demo.png","srcSet":"/static/903b818f5723defe4272bd520ac8bda4/ac6f5/demo.png 175w,\n/static/903b818f5723defe4272bd520ac8bda4/ff18b/demo.png 350w,\n/static/903b818f5723defe4272bd520ac8bda4/49177/demo.png 700w,\n/static/903b818f5723defe4272bd520ac8bda4/56666/demo.png 1400w","sizes":"(min-width: 700px) 700px, 100vw"},"sources":[{"srcSet":"/static/903b818f5723defe4272bd520ac8bda4/29fb5/demo.avif 175w,\n/static/903b818f5723defe4272bd520ac8bda4/46101/demo.avif 350w,\n/static/903b818f5723defe4272bd520ac8bda4/b016a/demo.avif 700w,\n/static/903b818f5723defe4272bd520ac8bda4/963ca/demo.avif 1400w","type":"image/avif","sizes":"(min-width: 700px) 700px, 100vw"},{"srcSet":"/static/903b818f5723defe4272bd520ac8bda4/4ebdb/demo.webp 175w,\n/static/903b818f5723defe4272bd520ac8bda4/a5e1b/demo.webp 350w,\n/static/903b818f5723defe4272bd520ac8bda4/cf144/demo.webp 700w,\n/static/903b818f5723defe4272bd520ac8bda4/17417/demo.webp 1400w","type":"image/webp","sizes":"(min-width: 700px) 700px, 100vw"}]},"width":700,"height":335.00000000000006}}},"tech":[".NET","Docker","OpenTelemetry","Prometheus","Grafana","Jaeger","Loki","GitHub Actions"],"github":"https://github.com/jihed-garaouch/TraceOps-BE","external":"https://traceops.jihedgaraouch.tech/","cta":null},"html":"<ul>\n<li>A distributed microservices observability platform designed to monitor, trace, and analyze system behavior in real time.</li>\n<li>The project integrates OpenTelemetry for collecting metrics, logs, and traces across multiple services, providing full visibility into system performance and interactions.</li>\n<li>Implemented a complete observability stack using Prometheus for metrics, Grafana for visualization, Loki for log aggregation, and Jaeger for distributed tracing.</li>\n<li>Designed a reverse proxy architecture using NGINX to expose services securely via custom domains and HTTPS.</li>\n<li>Containerized the entire system with Docker and orchestrated services using Docker Compose for reproducible environments.</li>\n</ul>"}},{"node":{"frontmatter":{"title":"PacAct","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABb0lEQVQoz32RQU5CMRCGp7x2+sAYIgIBkQQI8lygyAts9BpsJBoxrPQwxgMYD2G8gYlbXenSuOQUv5kpDzAxLr5M+7fzd2ZKvV6KJBmh3x8hHY6xWxnCxgP4wgD8D3Lu4gGKOyc4Phqj1xuh1UpBs/MBOq0aup06up0aSqUqHJfBPuDjMuJ8RfFxRfeZbl0ZxWJV85ODGur1BijpFpEzBKKAjQieCc4S2K11wRgCb5xJFEQ3RIgsyz0H5wyYcwEXaXQ20NzL47C7pTQbBTgXdM5ilscG3udBcezBS0MvIhO8D5dyOcLjfYrFxwSLzwke7oawkVEzr4+bEBUKhswezprQgtuGjS7g2eplafP1+Qxfb5f4fr/Cy9OpalkBmsehWsln/mUoSPsdeI50L7O5vW5jPt3HfNrAzaytVWcjWo0qM1xXSDqbYEo6D3lE2tn8FMFnlTnzd4VRxPrL8nLAhLjUrDUrxGDzbJ1ndG1djB/FiNgT5XeILQAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/3df777bdad8c43a6fe804fdc5471c74e/52f3f/demo.png","srcSet":"/static/3df777bdad8c43a6fe804fdc5471c74e/40ee4/demo.png 175w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/2cdd9/demo.png 350w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/52f3f/demo.png 700w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/987f4/demo.png 1400w","sizes":"(min-width: 700px) 700px, 100vw"},"sources":[{"srcSet":"/static/3df777bdad8c43a6fe804fdc5471c74e/92db5/demo.avif 175w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/e80d6/demo.avif 350w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/a1592/demo.avif 700w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/fc527/demo.avif 1400w","type":"image/avif","sizes":"(min-width: 700px) 700px, 100vw"},{"srcSet":"/static/3df777bdad8c43a6fe804fdc5471c74e/94714/demo.webp 175w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/ab8da/demo.webp 350w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/7ee2e/demo.webp 700w,\n/static/3df777bdad8c43a6fe804fdc5471c74e/11749/demo.webp 1400w","type":"image/webp","sizes":"(min-width: 700px) 700px, 100vw"}]},"width":700,"height":320}}},"tech":["React","TypeScript","React Hooks","React Context API","Create React App"],"github":"https://github.com/jihed-garaouch/pacact","external":"https://pacact.vercel.app/","cta":null},"html":"<ul>\n<li>A browser-based Pacman-style game built as a learning showcase to explore React with TypeScript.</li>\n<li>The project demonstrates advanced usage of React Hooks for state and lifecycle management, along with React Context API for global game state handling such as score tracking, game status, and player interactions.</li>\n</ul>"}},{"node":{"frontmatter":{"title":"OBDesk","cover":{"childImageSharp":{"gatsbyImageData":{"layout":"constrained","placeholder":{"fallback":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAAsTAAALEwEAmpwYAAABUUlEQVQoz51Sy07DMBC042ccO8WNCI2KWhJBFIlDL9wr9Q/o///LoF0wNOKCOIxseWdnd0YWm80GQoh/QQqBZX7Gsiw4HA4Yn0aI0+mEruuw2+3Q9w/ocmLiX0VD7VGHAOc9mqaBiDEihIC+75FSgjGKiUophpRyvZWUDGomdzEltG2Cc65wBG93vV5xPp9xuVwwzzO896jr+pdgEaUaLUNLpBhgrSlcAWMMT9rv95imCW3bcrGqqtVZQD3WWhal0/vVYMENta95Ws6ZSfQ+DAOOx+NnNjd26U4W87ZDjA1jJWi0gbeeSSRahozjyIKUJeVMTopt7xzutxl3uYeuzG0kArLS0K6BMRpaG7ZCGZJ1rTUTu20H6+x3o1UWr+0jXpoBTscfQRMayK+MbkMvtow10ErDW7eqCaVwSBlvxRHFQe/v4wSn1L8+dblTPOW3fACiw9mXvvBkkgAAAABJRU5ErkJggg=="},"images":{"fallback":{"src":"/static/5df808d78c0a3170c34620ecfdd4499d/49177/demo.png","srcSet":"/static/5df808d78c0a3170c34620ecfdd4499d/ac6f5/demo.png 175w,\n/static/5df808d78c0a3170c34620ecfdd4499d/0b507/demo.png 350w,\n/static/5df808d78c0a3170c34620ecfdd4499d/49177/demo.png 700w,\n/static/5df808d78c0a3170c34620ecfdd4499d/bc110/demo.png 1400w","sizes":"(min-width: 700px) 700px, 100vw"},"sources":[{"srcSet":"/static/5df808d78c0a3170c34620ecfdd4499d/29fb5/demo.avif 175w,\n/static/5df808d78c0a3170c34620ecfdd4499d/385c0/demo.avif 350w,\n/static/5df808d78c0a3170c34620ecfdd4499d/b016a/demo.avif 700w,\n/static/5df808d78c0a3170c34620ecfdd4499d/546dd/demo.avif 1400w","type":"image/avif","sizes":"(min-width: 700px) 700px, 100vw"},{"srcSet":"/static/5df808d78c0a3170c34620ecfdd4499d/4ebdb/demo.webp 175w,\n/static/5df808d78c0a3170c34620ecfdd4499d/6e30e/demo.webp 350w,\n/static/5df808d78c0a3170c34620ecfdd4499d/cf144/demo.webp 700w,\n/static/5df808d78c0a3170c34620ecfdd4499d/76e34/demo.webp 1400w","type":"image/webp","sizes":"(min-width: 700px) 700px, 100vw"}]},"width":700,"height":335.00000000000006}}},"tech":["React","Vite","Supabase","Tailwind CSS","GSAP","Vite-PWA","Vercel"],"github":"https://github.com/jihed-garaouch/OBDesk","external":"https://ob-desk.vercel.app/landing","cta":""},"html":"<p>OBDesk is a specialized digital dashboard designed to streamline cross-border work management for modern global professionals. It acts as a centralized workspace for tracking international projects while providing integrated financial tools such as real-time currency conversion and exchange rate monitoring to manage global earnings efficiently.</p>"}}]}}}