GithubHelp home page GithubHelp logo

waldoibarra / portfolio Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 1003 KB

My very own portfolio website to showcase myself! ❤️

Home Page: https://waldoibarra.com

License: MIT License

HTML 10.81% HCL 14.35% Makefile 7.79% Dockerfile 13.96% JavaScript 20.10% CSS 6.70% TypeScript 13.54% Shell 12.74%
aws css docker docker-compose dockerfile makefile react terraform typescript

portfolio's Introduction

Welcome To My Personal Website Code

Deploy Website CI/CD

This is pretty much a work in progress, hope you enjoy reading this code as much as I enjoyed writing it.

Key Features

  • Trunk Based Development as branching model.
  • Infrastructure as code with Terraform, which includes a private S3 bucket, CloudFront distribution (SSL certs and cache) and Route 53 A records.
  • Makefile as an entrypoint of the app to simplify usage of this repository.
  • Docker Compose to reduce need to install dependencies and standardize development on any OS.
  • Linting of Terraform, TypeScript and CSS files automatically checked before every commit and on CI.
  • Linting of commit messages locally and on CI, conforming to conventional commits spectification.
  • Unit tests for React code using Jest and testing library automatically checked before every commit and on CI.
  • Hot reloading enabled on save of React files.
  • Automated deployments with a GitHub Actions CI/CD pipeline.

Local Development

Requirements

The only needed tool you need to install in your machine is Docker.

Run Website Locally

To run the website on development mode, run the following command and visit localhost:3000.

make start

Or to see available commands in Makefile run:

make help

portfolio's People

Contributors

waldoibarra avatar

Watchers

 avatar

portfolio's Issues

Add a Makefile to standardize using Docker

Definition of Done

  • Makefile has a plan command to visualize changes
  • Makefile has an apply command to deploy the website
  • Makefile uses Docker under the hood to avoid installing CLIs on host computer

Add error page on CloudFront to serve index.html on 404 error codes

Definition of Ready

Should investigate for the best option:

  • The used Terraform module can be extended to add an error page
  • A pull request can be made to add this functionality to the Terraform module
  • The whole Terraform code for the website has to be coded from scratch (likely by forking the module)

Definition of Done

Due to the website being an SPA, for every request that is a 404 (Not Found) error status code:

  • CloudFront should respond with the index.html file.
  • The response should have a 200 (OK) success status code.

Migrate project to use React

Definition of Done

  • React app is containerized in a Docker image
  • Hot reload should work on changes
  • Has scripts to build a React app
  • Project is still deployable with make apply

Reduce pipeline run time by pushing built Terraform/AWS Docker image to Docker Hub

Context

GitHub Actions workflows are taking a bit more than 4 minutes to run as some CLIs such as Terraform and AWS are being downloaded and built during the custom image building that takes places on the job.

Definition of Done

  • Extract the installation/building part of the Terraform and AWS CLIs to an image on the Docker Hub
  • Use such image as base instead to reduce the run time on workflows

Install best React framework option for good SEO without a server

Definition of Ready

Should investigate for the best rendering strategy, keeping in mind this is a simple static site (so, no Remix or SSR):

Definition of Done

  • Should have a build script that generates static files for the site.
  • The built project should work without a server.
  • Linters and tests should still work

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.