{"id":22474828,"url":"https://github.com/montymi/blog","last_synced_at":"2026-03-10T17:33:30.529Z","repository":{"id":264112658,"uuid":"891217801","full_name":"montymi/blog","owner":"montymi","description":"Personal portfolio, blog, and virtual sandbox of @montymi 🛠️ ","archived":false,"fork":false,"pushed_at":"2025-09-01T02:09:11.000Z","size":55101,"stargazers_count":4,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-01T04:29:21.700Z","etag":null,"topics":["blog","e2e","husky","mui","portfolio","pwa","react","reactrouter","recoil","threejs","typescript","vercel","vite","vue"],"latest_commit_sha":null,"homepage":"https://montymi.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/montymi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["montymi"],"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2024-11-19T23:57:47.000Z","updated_at":"2025-09-01T02:09:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"ea3dcf29-ad75-4720-9e3a-11c7841ec50a","html_url":"https://github.com/montymi/blog","commit_stats":null,"previous_names":["montymi/blog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/montymi/blog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/montymi%2Fblog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/montymi%2Fblog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/montymi%2Fblog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/montymi%2Fblog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/montymi","download_url":"https://codeload.github.com/montymi/blog/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/montymi%2Fblog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279183691,"owners_count":26121450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-16T02:00:06.019Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","e2e","husky","mui","portfolio","pwa","react","reactrouter","recoil","threejs","typescript","vercel","vite","vue"],"created_at":"2024-12-06T13:12:04.454Z","updated_at":"2026-03-10T17:33:30.512Z","avatar_url":"https://github.com/montymi.png","language":"TypeScript","funding_links":["https://github.com/sponsors/montymi"],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"readme-top\"\u003e\u003c/div\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![GPL License][license-shield]][license-url]\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ch2 align=\"center\"\u003e📰 blog\u003c/h2\u003e\n\n  Personal portfolio and sandbox on the web.\n\n\u003cp align=\"center\"\u003e\n\n\u003c/p\u003e\n\n  \u003cp align=\"center\"\u003e\n    Created by \u003cspan\u003e\u003ca href=\"https://github.com/montymi\"\u003e@montymi\u003c/a\u003e\u003c/span\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://montymi.com\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/montymi/blog/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/montymi/blog/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#structure\"\u003eStructure\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#tasks\"\u003eTasks\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\nThis personal portfolio brings together my work as a software developer and academic. It serves as a central hub for showcasing projects, research, and other contributions; specifically, the repository includes highlights of my software development journey, from personal projects to larger initiatives, as well as academic papers and research that have informed my approach to problem-solving and technology.\n\nThe goal is simple: to document and share my progress while providing a snapshot of my skills and experiences in one place. Whether you're here to explore my software projects or academic work, I hope you find something of interest.\n\n\u003cbr /\u003e\n\n### Built With\n[![React][reactLogo]][reactLogo-url]\n[![TypeScript][tsLogo]][tsLogo-url]\n[![Vite][viteLogo]][viteLogo-url]\n[![PWA][pwaLogo]][pwaLogo-url]\n[![Recoil][recoilLogo]][recoilLogo-url]\n[![React Router][rrLogo]][rrLogo-url]\n[![MUI][muiLogo]][muiLogo-url]\n[![Vercel][vercelLogo]][vercelLogo-url]\n[![Three.js][threejsLogo]][threejsLogo-url]\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- GETTING STARTED --\u003e\n## Getting Started\n\nFor interacting with the demo:\n\n\u003ca href=\"https://montymi.com\" target=\"_blank\"\u003eCheck out the website!\u003c/a\u003e\n\nFor interacting with the code:\n\n1. Clone and navigate into the repo with:\n  ```bash\n  git clone https://github.com/montymi/blog.git \u0026\u0026 cd blog\n  ```\n2. Install dependencies\n  ```bash\n  npm install\n  ```\n3. Run development server for testing\n  ```bash\n  npm run dev\n  ```\n4. Build app for production server\n  ```bash\n  npm run build\n  ```\n5. Run production server locally\n  ```bash\n  npm run preview\n  ```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage\n\nThe portfolio is divided into three main sections: Discography, Library, and Activity, each offering a unique way to explore my journey as a developer and academic.\n\n### Discography 🎙️\nThe Discography takes you on an audio-driven walkthrough of my projects, styled like a musical catalog. Each entry is crafted to give you deeper insights into the story behind the work:\n\n- Singles: Bite-sized projects or experiments that showcase quick ideas or concepts.\n- Episodes: Medium-scale projects, often part of a series, reflecting a deeper dive into specific topics.\n- Albums: Comprehensive, larger-scale projects that represent significant milestones in my career.\n\n### Library 🗂️ \nThe Library serves as a repository of my academic work and technical writing, including:\n\n- Research papers and publications, complete with summaries and external links.\n- Documentation and guides related to tools, frameworks, or methodologies I’ve explored.\n- Notes and reflections that capture the thinking behind my work.\n- It’s the ideal place for a more in-depth look at my technical expertise and academic contributions.\n\n### Activity 🔍\nThe Activity section is a set of cards that highlight what I’m currently working on, experimenting with, or learning about. Here, you’ll find:\n\n- Updates on ongoing projects and experiments.\n- Prototypes and beta versions of ideas in progress.\n- Personal insights and reflections about my process and challenges.\n- This section keeps things fresh and offers a behind-the-scenes look at my development as a creator and researcher.\n\n### Blog 🌍\nThe blog section is where whatever’s on my mind, tech, life, and everything in between. can be found Expect a mix of:\n\n- Deep dives into code \u0026 tech when I’m in full-on nerd mode.\n- Lessons learned (sometimes painfully) from projects, experiments, and life in general.\n- Random musings \u0026 stories—anything from a high school vignette to a weird realization at 2 AM.\n- Hot takes on trends (tech or otherwise) that I can’t keep to myself.\n- Guides \u0026 tutorials for things I finally figured out and want to spare someone else the headache.\n\n### What's Next?\n- Listen: Start with the Discography for an engaging overview of my work, guided by audio storytelling.\n- Explore: Dive into the Library for a detailed understanding of my academic and technical background.\n- Follow: Check the Activity feed for the latest updates and ideas I’m exploring.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- STRUCTURE --\u003e\n## Structure\n\n```\nsrc\n├── components\n│   ├── Loading\n│   └── Meta\n├── config\n│   ├── index.ts\n│   ├── it-jokes.ts\n│   └── types.ts\n├── error-handling\n│   ├── fallbacks\n│   └── index.tsx\n├── hooks\n│   ├── useHistory.ts\n│   ├── useLatestCommit.ts\n│   ├── useOrientation.ts\n│   ├── usePosts.ts\n│   ├── useReadMe.ts\n│   └── useServiceWorkerNotifications.tsx\n├── pages\n│   ├── Activity\n│   ├── Blog\n│   ├── Discography\n│   ├── Library\n│   ├── NotFound\n│   └── Welcome\n├── routes\n│   ├── Pages\n│   ├── index.ts\n│   └── types.ts\n├── sections\n│   ├── Header\n│   ├── HotKeys\n│   ├── Notifications\n│   ├── Sidebar\n│   └── SW\n├── store\n│   ├── hotkeys\n│   ├── notifications\n│   ├── sidebar\n│   └── theme\n├── theme\n│   ├── Provider.tsx\n│   ├── themes.ts\n│   └── types.ts\n├── utils\n│   ├── insertIf\n│   ├── loader\n│   ├── is-mobile.ts\n│   ├── reset-app.ts\n│   ├── sleep.ts\n│   └── welcome.ts\n├── App.tsx\n├── main.tsx\n└── Root.tsx\napi\n└── date.ts # for running with vercel serverless functions\n\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- TASKS --\u003e\n## Tasks\n\n- [X] Use vercel serverless functions for handling API calls\n- [X] Continue adding projects to the Discography\n- [X] Continue various paper and presentation transfer to the Library\n- [X] Allow scrolling in the Welcome Page\n- [X] Design and upload the Activity Page\n- [X] Optimize PDF view on phone (using isMobile to show PDF as full-screen perhaps)\n- [ ] Create a more interactive 3D environment for the Vinyl object\n- [ ] Add audio files for all Published projects in the Discography\n\nSee the [open issues](https://github.com/montymi/blog/issues) for a full list of issues and proposed features.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\n\n1. [Fork the Project](https://docs.github.com/en/get-started/quickstart/fork-a-repo)\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. [Open a Pull Request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- LICENSE --\u003e\n## License \n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\n[![LinkedIn][linkedin-shield]][linkedin-url] [![Email][email-shield]][email-url] [![Portfolio][website-shield]][website-url]\n\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n## Acknowledgments\n\n* [react-pwa](https://github.com/suren-atoyan/react-pwa) by @suren-atoyan for the amazing PWA template\n* [historylabs](https://events.historylabs.io/) for the fun and free API for seeing historical events\n* [ClearDocs](https://github.com/montymi/ClearDocs) for the high quality README template\n* [Vercel][vercelLogo-url] for fast and free deployment, hosting, and serverless functions\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[contributors-shield]: https://img.shields.io/github/contributors/montymi/blog.svg?style=for-the-badge\n[contributors-url]: https://github.com/montymi/blog/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/montymi/blog.svg?style=for-the-badge\n[forks-url]: https://github.com/montymi/blog/network/members\n[stars-shield]: https://img.shields.io/github/stars/montymi/blog.svg?style=for-the-badge\n[stars-url]: https://github.com/montymi/blog/stargazers\n[issues-shield]: https://img.shields.io/github/issues/montymi/blog.svg?style=for-the-badge\n[issues-url]: https://github.com/montymi/blog/issues\n[license-shield]: https://img.shields.io/github/license/montymi/blog.svg?style=for-the-badge\n[license-url]: https://github.com/montymi/blog/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\n[linkedin-url]: https://linkedin.com/in/michael-montanaro\n[muiLogo]: https://img.shields.io/badge/-Material%20UI-black.svg?style=for-the-badge\u0026logo=mui\u0026logoColor=natural\n[muiLogo-url]: https://mui.com/\n[pwaLogo]: https://img.shields.io/badge/-PWA-black.svg?style=for-the-badge\u0026logo=pwa\u0026logoColor=natural\n[pwaLogo-url]: https://web.dev/progressive-web-apps/\n[reactLogo]: https://img.shields.io/badge/-React-black.svg?style=for-the-badge\u0026logo=react\u0026logoColor=natural\n[reactLogo-url]: https://reactjs.org/\n[recoilLogo]: https://img.shields.io/badge/-Recoil-black.svg?style=for-the-badge\u0026logo=recoil\u0026logoColor=natural\n[recoilLogo-url]: https://recoiljs.org/\n[rrLogo]: https://img.shields.io/badge/-React%20Router-black.svg?style=for-the-badge\u0026logo=react-router\u0026logoColor=natural\n[rrLogo-url]: https://reactrouter.com/\n[tsLogo]: https://img.shields.io/badge/-TypeScript-black.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=natural\n[tsLogo-url]: https://www.typescriptlang.org/\n[viteLogo]: https://img.shields.io/badge/-Vite-black.svg?style=for-the-badge\u0026logo=vite\u0026logoColor=natural\n[viteLogo-url]: https://vitejs.dev/\n[vercelLogo]: https://img.shields.io/badge/-Vercel-black.svg?style=for-the-badge\u0026logo=vercel\u0026logoColor=natural\n[vercelLogo-url]: https://vercel.com/\n[threejsLogo]: https://img.shields.io/badge/-Threejs-black.svg?style=for-the-badge\u0026logo=three.js\u0026logoColor=natural\n[threejsLogo-url]: https://threejs.org/\n[email-shield]: https://img.shields.io/badge/-Email-black.svg?style=for-the-badge\u0026logo=gmail\u0026logoColor=natural\n[email-url]: mailto:mcmontanaro01@gmail.com\n[website-shield]: https://img.shields.io/badge/-Portfolio-black.svg?style=for-the-badge\u0026logo=react\u0026logoColor=natural\n[website-url]: https://montymi.com/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmontymi%2Fblog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmontymi%2Fblog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmontymi%2Fblog/lists"}