Project: My Porfolio
About the project
Welcome to my website, a platform that documents and showcases my previous projects. I built this website from scratch in just three weeks using cutting-edge technologies such as Remix and Tailwindcss. The site is designed to provide visitors with an immersive and interactive experience, highlighting my skills and achievements in software development.
As a full-stack developer, I have employed my expertise in every aspect of building this website, from component to component, authentication, database connection, and cloud connections. The website is highly functional and capable of performing CRUD operations on every page without requiring redeployments. This means that users can easily navigate through the pages and interact with the site without encountering any technical glitches.
The website is a testament to my passion for software development and my commitment to providing the best user experience. Whether you are a prospective employer, client, or simply interested in my work, you will find this platform to be informative and engaging. I am excited to share my projects with you and invite you to explore the site to learn more about my skills, expertise, and experience.
As a full-stack developer, I have employed my expertise in every aspect of building this website, from component to component, authentication, database connection, and cloud connections. The website is highly functional and capable of performing CRUD operations on every page without requiring redeployments. This means that users can easily navigate through the pages and interact with the site without encountering any technical glitches.
The website is a testament to my passion for software development and my commitment to providing the best user experience. Whether you are a prospective employer, client, or simply interested in my work, you will find this platform to be informative and engaging. I am excited to share my projects with you and invite you to explore the site to learn more about my skills, expertise, and experience.
Technologies
MongoDBRemix RunNode.jsCloudinaryPrisma
Project respository
Project details
Desktop versionTablet versionMobile version
View image
Focus on responsive design, animation with Framer motion and Styling with Tailwind CSS
My portfolio website is carefully designed to prioritize three important aspects: responsive design, captivating animation with Framer Motion, and stylish presentation with Tailwind CSS. With a strong emphasis on responsive design, my website ensures a seamless user experience across various devices and screen sizes. By leveraging responsive design techniques like media queries and flexible layouts, my website adapts its content and layout to provide an optimal viewing experience, regardless of whether it is accessed from a desktop computer, laptop, tablet, or smartphone.
To make my portfolio website engaging and interactive, I have incorporated captivating animations using Framer Motion. This powerful animation library enables smooth transitions, subtle effects, and engaging interactions throughout the website. By thoughtfully implementing animations, I bring elements to life, creating a visually appealing and memorable experience that keeps visitors engaged and encourages them to explore my portfolio further.
To achieve a polished and consistent visual aesthetic, I have utilized Tailwind CSS for styling my website. Tailwind CSS is a utility-first CSS framework that provides an extensive set of pre-built components and styling options. With Tailwind CSS, I can easily customize colors, typography, spacing, and more, ensuring that my portfolio website showcases my work in a visually appealing and professional manner.
To make my portfolio website engaging and interactive, I have incorporated captivating animations using Framer Motion. This powerful animation library enables smooth transitions, subtle effects, and engaging interactions throughout the website. By thoughtfully implementing animations, I bring elements to life, creating a visually appealing and memorable experience that keeps visitors engaged and encourages them to explore my portfolio further.
To achieve a polished and consistent visual aesthetic, I have utilized Tailwind CSS for styling my website. Tailwind CSS is a utility-first CSS framework that provides an extensive set of pre-built components and styling options. With Tailwind CSS, I can easily customize colors, typography, spacing, and more, ensuring that my portfolio website showcases my work in a visually appealing and professional manner.
Edit profile and contactsAdd/Edit technologiesAdd/Edit projectsAdd/Edit skillsEdit about page
View image
Fully manageable for every page without redeployment
The technical aspects of my portfolio website are geared towards providing flexibility and ease of management for every page without requiring redeployment. To achieve this, I have leveraged Remix's built-in Form and action capabilities, allowing me to perform CRUD (Create, Read, Update, Delete) operations on every page. This means that I can easily update and modify content on my website without the need to redeploy the entire site.
By utilizing Remix's Form and action features, my website embraces normal form behavior, enabling users to interact with input fields, submit data, and trigger actions without leaving the page. This ensures a seamless and intuitive user experience while maintaining the benefits of a single-page application.
With the ability to perform CRUD operations on every page, I have the freedom to make changes and updates to individual sections or projects within my portfolio without affecting the rest of the website. This flexibility allows me to keep my portfolio up-to-date and showcase my latest work without the hassle of redeploying the entire site for every modification.
By utilizing Remix's Form and action features, my website embraces normal form behavior, enabling users to interact with input fields, submit data, and trigger actions without leaving the page. This ensures a seamless and intuitive user experience while maintaining the benefits of a single-page application.
With the ability to perform CRUD operations on every page, I have the freedom to make changes and updates to individual sections or projects within my portfolio without affecting the rest of the website. This flexibility allows me to keep my portfolio up-to-date and showcase my latest work without the hassle of redeploying the entire site for every modification.
Class diagramArchitecture
View image
Data management with Prisma and MongoDB and cloud storage using Cloudinary
Data management in my portfolio website is facilitated through the use of Prisma and MongoDB, with cloud storage handled by Cloudinary. Prisma plays a crucial role in building the data model and mapping the data between collections, while MongoDB serves as the fast and affordable solution for storing the database.
With Prisma, I can easily define and manage my data model, including relationships between collections. This is particularly advantageous when working with a NoSQL database like MongoDB, as it allows me to establish connections and associations between different data entities. This flexibility in data modeling enables me to organize and structure my portfolio data in a way that best suits my needs.
MongoDB serves as the primary data storage solution for my website. It offers fast and efficient data retrieval and storage, providing a reliable foundation for managing the content of my portfolio. Its scalability and affordability make it an ideal choice for handling the database requirements of my website, ensuring optimal performance and cost-effectiveness.
To store images for my portfolio website, I utilize Cloudinary, a cloud-based media management platform. Cloudinary seamlessly integrates with the backend of my website, offering reliable and efficient image storage and retrieval capabilities. By leveraging Cloudinary, I can easily upload, manage, and deliver images for my portfolio, ensuring a visually appealing and engaging user experience.
For hosting my portfolio website, I utilize the combination of GitHub and Netlify. GitHub serves as the repository for my website's source code, enabling version control and collaborative development. Netlify provides a fast and easy workflow for deploying and hosting my website and also provided SSH for custom domain. With its seamless integration with GitHub, I can automate the deployment process and ensure that any changes to my code are quickly reflected on the live website.
With Prisma, I can easily define and manage my data model, including relationships between collections. This is particularly advantageous when working with a NoSQL database like MongoDB, as it allows me to establish connections and associations between different data entities. This flexibility in data modeling enables me to organize and structure my portfolio data in a way that best suits my needs.
MongoDB serves as the primary data storage solution for my website. It offers fast and efficient data retrieval and storage, providing a reliable foundation for managing the content of my portfolio. Its scalability and affordability make it an ideal choice for handling the database requirements of my website, ensuring optimal performance and cost-effectiveness.
To store images for my portfolio website, I utilize Cloudinary, a cloud-based media management platform. Cloudinary seamlessly integrates with the backend of my website, offering reliable and efficient image storage and retrieval capabilities. By leveraging Cloudinary, I can easily upload, manage, and deliver images for my portfolio, ensuring a visually appealing and engaging user experience.
For hosting my portfolio website, I utilize the combination of GitHub and Netlify. GitHub serves as the repository for my website's source code, enabling version control and collaborative development. Netlify provides a fast and easy workflow for deploying and hosting my website and also provided SSH for custom domain. With its seamless integration with GitHub, I can automate the deployment process and ensure that any changes to my code are quickly reflected on the live website.
SSR processImproving SEO
View image
Server side rendering with Remix
Remix provides a fantastic feature called Remix action. With this, I can perform server-side data fetching before rendering a page. By fetching relevant data from APIs or databases directly on the server, search engine crawlers can easily access and index the complete content of my pages. It's a game-changer for improving search engine visibility.
Another incredible tool in Remix is the Remix Loader. This server-rendered data fetching mechanism allows me to fetch data on the server and include it in the initial HTML response. By ensuring that search engines receive all the necessary data during the first rendering, Remix Loader greatly enhances the understanding of my dynamic content, resulting in improved SEO performance.
Furthermore, Remix offers an array of useful hooks that further optimize my website for search engines. For instance, I make great use of the useLink hook to create SEO-friendly internal links with relevant anchor text. This helps search engines understand the context and relevance of my content. Additionally, I leverage the useMeta hook to dynamically manage metadata such as title tags, meta descriptions, and Open Graph tags. By updating metadata based on the page being rendered, I provide search engines with accurate and meaningful information about my pages.
Another incredible tool in Remix is the Remix Loader. This server-rendered data fetching mechanism allows me to fetch data on the server and include it in the initial HTML response. By ensuring that search engines receive all the necessary data during the first rendering, Remix Loader greatly enhances the understanding of my dynamic content, resulting in improved SEO performance.
Furthermore, Remix offers an array of useful hooks that further optimize my website for search engines. For instance, I make great use of the useLink hook to create SEO-friendly internal links with relevant anchor text. This helps search engines understand the context and relevance of my content. Additionally, I leverage the useMeta hook to dynamically manage metadata such as title tags, meta descriptions, and Open Graph tags. By updating metadata based on the page being rendered, I provide search engines with accurate and meaningful information about my pages.