Giter VIP home page Giter VIP logo

personal-portfolio-website-2024's Introduction

Personal Portfolio Website 2024

πŸ—οΈ This project is a work in progress 🚧

It's also being used as a learning opportunity for the following tools and technologies:

Figma Logo Storybook Logo Sanity Logo pnpm Logo Docker Logo TypeScript Logo Node.js Logo Next.js Logo React Logo Tailwind CSS Logo Jest Logo Playwright Logo GitHub Actions Logo AWS Logo Neovim
Learning Log
Project Management
  • Making a project brief.
  • Separation of concerns to different team member roles.
  • Using GitHub projects more effectively.
    • Separating the backlog into swimlanes based on team member roles.
    • Setting up priority, size, role, and roadmap views.
  • Agile Methodology.
    • Recognizing that project requirements can change over time. Avoid making concrete decisions and always overestimate based on historical data at the start when you know understand the least about the project (Cone of uncertainty).
    • Working in sprints.
    • Avoiding multitasking.
    • The only measure of progress is working software.
    • Let the team make the decisions.
UI/UX Design
  • Doing UX research and identifying user groups.
  • Making low-fidelity and high-fidelity wireframes.
  • Gathering inspiration from UI Patterns, Tuk, Awwards, and Dribbble.
  • Using components with properties, variables, styles, and auto layout.
  • Making glassmorphic components.
  • Creating a responsive type scale that integrates tightly with components.
  • Creating a color palette based on standardized tailwind colors.
  • Relying on existing tailwind primitive tokens, and mapping them to semantic tokens for component development.
  • Creating a UI Kit and building components on top of it.
  • Iterating on past designs and coming up with different variations to compare side-by-side.
  • Creating prototypes with hover, click, and scroll interactions.
Front-End Development
  • Using pnpm instead of npm or yarn.
  • Setting up only-allow to enforce the use of pnpm instead of npm.
  • Adding custom scripts to the package.json.
  • Using TypeScript properly (Primitive types, function types, complex types, union types, type narrowing, object types/interfaces, type extensions, type nesting).
  • Using Chrome DevTools and React DevTools for debugging.
  • Building UI components bottom up (or inside out) using Storybook instead of top down (outside in).
  • Configuring linting with ESLint and Prettier.
  • Migrating from Next.js project from app directory to src directory.
Back-End Development
  • Setting up GitHub Actions for CI/CD on cloud.
  • Creating modular, reusable actions with the option of skipping e2e tests because they take so long.
  • Caching artifacts between workflow runs with timeouts to save time and resources.
  • Using Act to test GitHub Actions locally which uses the Docker engine.
  • Containerizing Next.js app with Docker.
  • Using Docker Compose to run multiple containers and automate long Docker commands.
  • Setting up Sanity as a headless CMS.
    • Creating schemas for content types.
    • Handling content migrations, also known as schema change management.
    • Creating fields for content types that refer to other schema types and perform validations such as unique and required.
  • Performing GRAPHQL queries to fetch data from Sanity Content Lake.

personal-portfolio-website-2024's People

Contributors

mfarabi619 avatar semantic-release-bot avatar

Watchers

 avatar

personal-portfolio-website-2024's Issues

Decide Website Sections

  • Decided on the following sections:
    • Hero
    • Experience
    • Skills
    • Projects
    • Contact
  • Maybe I'll have a footer and a blog, yet to be decided.

The automated release is failing 🚨

🚨 The automated release from the main branch failed. 🚨

I recommend you give this issue a high priority, so other packages depending on you can benefit from your bug fixes and new features again.

You can find below the list of errors reported by semantic-release. Each one of them has to be resolved in order to automatically publish your package. I’m sure you can fix this πŸ’ͺ.

Errors are usually caused by a misconfiguration or an authentication problem. With each error reported below you will find explanation and guidance to help you to resolve it.

Once all the errors are resolved, semantic-release will release your package the next time you push a commit to the main branch. You can also manually restart the failed CI job that runs semantic-release.

If you are not sure how to resolve this, here are some links that can help you:

If those don’t help, or if this issue is reporting something you think isn’t right, you can always ask the humans behind semantic-release.


Cannot push to the Git repository.

semantic-release cannot push the version tag to the branch main on the remote Git repository with URL https://x-access-token:[secure]@github.com/MFarabi619/personal-portfolio-website-2024.

This can be caused by:


Good luck with your project ✨

Your semantic-release bot πŸ“¦πŸš€

Re-learn Next.js

When I first learned Next.js to built the CUSEC 2024 website, Next 13 had just come out.

The documentation had yet not been updated from the old Next 12 pages router. I went through it regardless, and then had to watch YouTube videos to learn the apps router way of doing things. After the completion of the project, I felt like I didn't do things the cleanest way and get the most out of what the framework had to offer.

Now that the Next.js documentation has been updated, it's a good chance to learn Next 13/14 properly and fill in gaps in my learning.

Establish Project Workflow Goals

I'm well aware that adding so many requirements to the project greatly increases the following:

  • Scope
  • Team expertise requirement
  • Time to market
  • Development cost

I could easily whip up a quick website using a template and change the content. However it is important to consider that this project is an excellent opportunity to my increase breadth of knowledge across the technology stack, and become better at delivering end-to-end solutions.

The tasks of this project are split into the following roles:

  • Project Manager
  • UI/UX Designer
  • Front-End Developer
  • Back-End Developer

I will play the part of all four roles myself. This will give me a good understanding of each role's needs and fit within the project whilst diversifying and deepening my skillset in each role.

Some of my goals are:

  • Use GitHub Projects to its full potential using Scrum methodology.
    • This is a great opportunity to improve project management skills. Check this out as well.
  • Rather than creating the entire design system from scratch use the existing components provided by DaisyUI.
    • Use DaisyUI's theme functionality to integrate color palette for UI elements.
    • Check out react-DaisyUI, this is what I would've done with DaisyUI components anyways.
  • Learn and use Figma to its full potential.
    • Use auto layout for responsive, mobile first design, component variants, etc.
  • Set up Unit, Integration, End-to-End (E2E), and Performance Testing.
  • Set up CMS using Sanity.
    • Plan out data schemas.
  • Instead of using Vercel, see if AWS services can be used to deploy the website with a CI/CD pipeline.

Learn How to Deploy Static Website to AWS with CI/CD Pipeline

Steps for Deployment

  1. Prepare Your Site for Production: Build your static site files using your static site generator or framework, ensuring it pulls the latest content from your CMS.
  2. Set Up AWS S3 Bucket: Create an S3 bucket configured for static website hosting.
  3. Configure CI/CD Pipeline: Use AWS CodePipeline to automate deployments, triggered by changes in your git repository or CMS webhook notifications.
  4. Deploy to S3: Use AWS CodeBuild or another CI tool to deploy your static site files to the S3 bucket.
  5. Set Up CloudFront Distribution: Create a CloudFront distribution to serve your site content, configuring it to fetch from your S3 bucket.
  6. Configure DNS and SSL: Point your domain to your CloudFront distribution with Route 53 and secure it with an SSL certificate from AWS Certificate Manager.

Explore Testing Frameworks

There are a variety of front-end testing frameworks available. Find the right balance between the following factors:

  • Adoption
  • Long-term benefit
  • Ease-of-use

Learn Sanity

Integrating a CMS (Content Management System) such will make it easier in the future to edit content. While it adds a significant degree of complexity to the project, this is an excellent learning opportunity and a chance to make the project full-stack.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.